मेरा RAMDisk प्रदर्शन मेरे HDD के प्रदर्शन से मेल क्यों नहीं खाता है?


2

मैं RAMDisks (DataRAM की रैमडिस्क का उपयोग करके) पर एक तरह के ऑब्जेक्ट स्टोर के रूप में अस्थायी GIT रिपॉजिटरी का उपयोग करने के बारे में सोच रहा हूं। मुझे यह देखने के लिए दिलचस्पी थी कि क्या यह सार्थक था, इसलिए मैंने ड्राइव पर 1000 x 30K फाइल लिखने का एक सरल बेंचमार्क चलाया, और फिर औसत लेखन समय की तुलना की। जब प्रदर्शन सामने आया तो मैं हैरान था लगातार एचडीडी के पक्ष में।

HDD के लिए मुझे मिला:

average: 0.47ms/write

राम डिस्क के लिए मुझे मिला:

average: 0.76ms/write

क्या कोई समझा सकता है कि यह अपेक्षा के विपरीत क्यों है?


एनबी ठोस राज्य हार्ड ड्राइव (रैमड्राइव) के साथ इसे भ्रमित नहीं करता है! मैं स्मृति ड्राइव में देख रहा हूँ ...
Andrew Matthews

2
इसने मुझे इस तरह से उकसाया कि मैंने जो कोड किया है वह एक पावर आउटेज या कर्नेल पैनिक है जो विस्मरण; ;-) से दूर है। Git की गति को देखते हुए मुझे इस प्रश्न के पीछे उपयोग के मामले में आश्चर्य होता है ...
Peter Tillemans

इन प्रयोगों से वितरित (पी 2 पी) कैशिंग नेटवर्क को बढ़ावा मिल सकता है जो मुझे आरडीबीएमएस का उपयोग करने से बचने की अनुमति देता है। सॉफ्टफ़ोन को नियंत्रित करने के लिए डेटा विशुद्ध रूप से क्षणभंगुर राज्य डेटा है।
Andrew Matthews

1
अजीब है, क्या आपने एक और रामडिस्क की कोशिश की है? यहां एक साइट है जो एक अच्छी तरह से स्थापित डिस्क बेंचमार्किंग टूल का उपयोग कर रही है। देख raymond.cc/blog/archives/2009/12/08/... । शायद आप इस पर एक नजर डालना चाहें।
Evan Plaice

1
कोई भी तार्किक कारण नहीं है कि जब तक रैमडिस्क चालक Win7 या MS में वास्तव में खराब काम नहीं कर रहा है, तब तक हार्डडिस्क एक्सेस की तुलना में रामडिस्क धीमा होगा, Win7 में वर्चुअल मेमोरी को लागू करने का वास्तव में खराब काम किया था
Evan Plaice

जवाबों:


3

DMA का उपयोग करते समय, CPU डेटा को मेमोरी में कॉपी करता है और हार्डड्राइव को इसे प्राप्त करने और डिस्क पर लिखने के लिए कहता है। जबकि हार्डड्राइव ऐसा करता है, सीपीयू कुछ और कर सकता है। 30K फ़ाइलों के साथ, हार्डड्राइव पढ़ने और लिखने के साथ बना रह सकता है। वे फाइलें कैश में फिट हो जाती हैं और लिखने के लिए डिस्क को पूरा करने के लिए लिखना नहीं पड़ता है। डिस्क की कताई और हाथ के साथ की मांग वास्तव में सीमित कारक है।

मुझे नहीं पता कि रैमडिस्क कैसे लागू किया जाता है, लेकिन इसमें सीपीयू दो बार कॉपी करने का काम हो सकता है।


दो बार क्यों? किसी भी विचार मैं यह कैसे सत्यापित कर सकता हूं कि वास्तव में क्या हो रहा है?
Andrew Matthews

1
@Andrew: यह डेटा को ड्राइवर की प्रोसेसिंग के लिए कर्नेल बफर में और फिर "ड्राइव" के लिए ड्राइवर के आंतरिक आवंटन में कर्नेल बफर से कॉपी कर सकता है। हालांकि ड्राइवर के आंतरिक कामकाज को जानने के बिना यह जानना मुश्किल है।
Dean Harding

1
एक रैमडिस्क अभी भी आपकी परियोजना के लिए बेहतर प्रदर्शन कर सकता है, क्योंकि इसमें हार्ड डिस्क की तुलना में बहुत तेजी से यादृच्छिक-खोज समय है।
Sjoerd

3

हो सकता है कि HDD ऑपरेशंस को आपके फ्रेंडली OS द्वारा मेमोरी में कैश किया गया हो और RAMDisk वर्चुअल रैम / स्वैप स्पेस पर (आंशिक रूप से) था?


हाँ, मुझे लगा कि ऐसा हुआ है - इसलिए वे केवल दो बार उपवास के बजाय लगभग एक जैसे क्यों नहीं हैं?
Andrew Matthews

यह भी मानते हुए कि आप सही कह रहे हैं - मैं कैसे रामदिस्क पेजों की अदला-बदली करते हुए 7 जीतना बंद कर दूंगा?
Andrew Matthews

2

यह उत्तर देने के लिए एक कठिन सवाल है, लेकिन सामान्य तौर पर आपको यह समझना चाहिए कि कृत्रिम बेंचमार्क शायद ही कभी विश्वसनीय होते हैं। आपको वास्तविक गिट रिपॉजिटरी का परीक्षण करने का प्रयास करना चाहिए।

मेरा अनुमान है कि डिस्क पर फाइलें लिखना "तेज" है क्योंकि सीपीयू ड्राइव पर एक कमांड जारी करता है "मेमोरी के इस ब्लॉक को ले जाएं और इसे ड्राइव के इस सेक्शन पर लिखें" और ड्राइव इसे अतुल्यकालिक रूप से प्रोसेस करता है (यानी एक बार कमांड है) जारी, ऑपरेशन "पूर्ण" है)। लेकिन रैम डिस्क की नकल करते हुए, आप वास्तव में तब तक इंतजार करते हैं जब तक कि डेटा भौतिक रूप से कॉपी नहीं किया जाता है और चूंकि आप मूल रूप से रैम-टू-रैम कॉपी कर रहे हैं, तो आपको विवाद हो गया है।

फिर से, मैं आपको वास्तविक Git रिपॉजिटरी पर वास्तविक संचालन का प्रयास करने का सुझाव दूंगा, यदि आप इसके लिए इसका उपयोग करने की योजना बना रहे हैं।


हाय डीन, मैंने किया! जीआईटी # के साथ प्रदर्शन खराब था, इसलिए मैं सिर्फ अंतर्निहित लेखन कार्यों का परीक्षण करने के लिए वापस गया, जो कि सिर्फ जीआईटी # अक्षमता और 'अपरिहार्य' क्या था के लिए एक महसूस करने की कोशिश करता है।
Andrew Matthews

तो, रैमडिस्क के लिए आदर्श उपयोग परिदृश्य क्या है? संभवतः बाद के पढ़ने के संचालन में? मेरे अपेक्षित उपयोग को विभाजित किया गया है, इनमें से कुछ को लगभग पढ़ने / लिखने पर भी मिलेगा, अन्य को लगभग 100% रीड मिलेगा। डेटा दर बहुत अधिक होगी ...
Andrew Matthews

1

मुझे लगता है कि यहाँ समस्या कर्नेल & lt; & gt; मेम गति में नहीं बल्कि डेटाराम सॉफ्टवेयर की प्राप्ति के लिए है। यूनिक्स के लिए ऐसे उद्देश्यों के लिए उपयुक्त उम्र के लिए tmpfs है (और अतिरिक्त दूसरी फ़ाइल सिस्टम परत में कोई आवश्यकता नहीं है), हालांकि डेटााराम उत्पाद पुराने (बिना संभव) बग के साथ पुराने अनमॉडिफाइड सॉफ़्टवेयर या पुराने गैर-अनुकूलित प्रोग्राम आर्किटेक्चर का उपयोग कर रहे हैं।

Im को भी प्रदर्शन हिट मिला जब गेम क्लाइंट को दाताराम रामडिस्क से चलाने की कोशिश की गई वास्तव में गति आईडीई ड्राइव से चलने से भी बदतर थी ... यह कुछ क्षणों पर बीएसओडी (12 जीबी रैम कुल 2.5 जीबी रैमडिस्क) भी थी। 4 जीबी रैमडिस्क प्रदर्शन के साथ बदतर (???)।

एक ही प्रणाली के साथ FreeBSD समस्याओं के बिना 4gb + भरा tmpfs को संभालना

हालाँकि, मंचों पर ImDisk लेखक ने यह भी नोट किया है कि सभी रैमडिस्क के संबंध में मेमोरी मैनेजमेंट में कुछ अजीब करने वाली विंडो संभवत: इसलिए विंडोज़ सबसिस्टम की कमियां भी हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.