मेरे सॉफ़्टवेयर में मेरे पास 4x 500GB फ़ाइलें हैं जो मैं पर अनुक्रमिक रूप से को बूस्ट मेमोरी मैप किए गए फ़ाइल एपीआई का उपयोग करके गोलाकार फैशन में लिखता हूं।सर्कुलर फ़ाइल के साथ डिस्क IO समस्या
मैं 32 एमबी ब्लॉक में क्षेत्रों को आवंटित करता हूं, और अंत में एक ब्लॉक आवंटित करते समय मैं दो मेमोरी मैप किए गए क्षेत्र बना देता हूं जहां पहला फ़ाइल का अंत होता है और दूसरा फ़ाइल की शुरुआत में होता है और अंत पते पर मैप किया जाता है पहले क्षेत्र का।
अब यह छोटी फ़ाइलों के साथ ठीक काम करता है। हालांकि, अंत क्षेत्र में जाने पर बड़ी फ़ाइलों के साथ डिस्क प्रदर्शन मंजिल पर जाता है और मुझे यकीन नहीं है कि इससे कैसे बचें।
जो मैं अनुमान लगा रहा हूं वह यह है कि डिस्क फ़ाइलों के दोनों सिरों को लिखने की कोशिश करती है और स्पिंडल को आगे और पीछे कूदना पड़ता है। जो करने के लिए एक मूर्खतापूर्ण चीज है, खासकर जब अनुक्रमिक लिखते हैं, और मैं आशा करता था कि ओएस थोड़ा अधिक स्मार्ट होगा।
क्या किसी के पास इस मुद्दे से बचने के तरीके पर कोई विचार है?
मैं विंडोज 10 में अपग्रेड करने की सोच रहा था और उम्मीद करता हूं कि यह बेहतर काम करेगा। लेकिन यह एक जोखिम भरा बदलाव है कि मैं अभी से बचना चाहता हूं।
मुझे यह भी ध्यान रखना चाहिए कि फ़ाइलें 2x 3TB सीगेट कॉन्स्टॉलेशन एंटरप्राइज़ ड्राइव के साथ सॉफ़्टवेयर RAID 1 पर रहती हैं। इन ड्राइवों में 60 एमबी/एस की न्यूनतम अनुक्रमिक लेखन गति और 120 एमबी/एस का अवतार है, और मैं कुल मिलाकर 30 एमबी/एस की गति से सभी फाइलों के साथ लिख रहा हूं।
कोड here पाया जा सकता है।
संपादित करें:
तो यह पता चला है, पूरी फ़ाइल के लिए लिख और फिर शुरू ओएस वास्तव में वापस पढ़ने क्या डिस्क भले ही यह आवश्यक नहीं है जो मैं क्या विश्वास करते हैं पर है शुरू होता है से अधिक शुरू करने के बाद उत्पन्न कर रहा है वाद विषय।
आप डिस्क प्रदर्शन को मापते हैं और फ़ाइलों का सीमा आकार क्या है जिसके बाद आप समस्या का अनुभव करते हैं? –
मैं वर्तमान में छोटी और छोटी फाइलों के साथ परीक्षण कर रहा हूं। हालांकि यह अंत तक पहुंचने से लगभग एक दिन लगते हैं। मैं अपडेट करूंगा क्योंकि मुझे और परिणाम मिलेंगे। – ronag
मैं इसे लिखने वाले बफर द्वारा मापता हूं, मेरे पास 4x गर्म स्रोत हैं जो 4 x 7.5 एमबी/एस में डेटा भेजते हैं और प्रत्येक इनपुट पैकेट buffered है। यदि बफर बढ़ने लगते हैं तो इसका मतलब है कि फ़ाइल पर्याप्त तेज़ी से लिखी नहीं जाती है और जब यह 4 जीबी तक पहुंच जाती है तो यह पैकेट छोड़ना शुरू कर देती है, जो वर्तमान में इस क्षेत्र में पहुंचने के बाद हो रहा है। – ronag