2009-08-24 10 views
6

बहुत मेमोरी (कुछ गिग्स) वाले लिनक्स बॉक्स पर, मुझे जितनी जल्दी हो सके बड़ी फ़ाइल में यादृच्छिक रूप से पहुंचने की आवश्यकता है।'बिल्ली' गति को बाद में फ़ाइल को लिनक्स बॉक्स पर यादृच्छिक पहुंच चला सकता है?

मैं इसे एक्सेस करने से पहले cat myfile > /dev/null करने के बारे में सोच रहा था, इसलिए मेरे फ़ाइल पेज क्रमशः स्मृति में जाते हैं, इसलिए सूखी यादृच्छिक पहुंच के मुकाबले तेज़ी से।

क्या यह दृष्टिकोण आपको समझ में आता है?

उत्तर

4

जैसा कि अन्य ने कहा, आपको इसे अपने विशेष मामले में बेंचमार्क करना होगा।

यह काफी संभव है कि इसके परिणामस्वरूप महत्वपूर्ण प्रदर्शन में वृद्धि होगी। पारंपरिक घूर्णन मीडिया (यानी एक हार्ड डिस्क) अनुक्रमिक पहुंच (बिल्ली फ़ाइल>/dev/null/fadvise) पर यादृच्छिक पहुंच से बहुत तेज है।

4

यह सुनिश्चित करने के लिए केवल एक ही तरीका है कि कोई (संभवतः समयपूर्व?) अनुकूलन उपयुक्त है: इसे बेंचमार्क करें।

2

यह सैद्धांतिक रूप से पहुंच को तेज कर सकता है (विशेष रूप से यदि आप फ़ाइल से लगभग हर चीज़ तक पहुंचते हैं), लेकिन मैं एक बड़े अंतर पर शर्त नहीं लगाऊंगा।

एकमात्र वास्तव में उपयोगी दृष्टिकोण यह है कि इसे अपने विशिष्ट मामले के लिए बेंचमार्क करना है।

7

जबकि कर रही है कि सिस्टम के कैश में फ़ाइल की सामग्री को मजबूर हो सकता है, आप का उपयोग कर posix_fadvise() (POSIX_FADV_WILLNEED सलाह के साथ) से बेहतर कर रहे हैं या (अवरुद्ध) readahead() गिरी डेटा आप की आवश्यकता होगी precache बनाने के लिए कॉल।

संपादित करें: तुम भी पूरी तरह Readahead निष्क्रिय करने के लिए POSIX_FADV_RANDOM सलाह का उपयोग कर प्रयास करना चाह सकते हैं। यहां उपयोग के सभ्य स्पष्टीकरण के साथ एक लेख है: Advising the Linux Kernel on File I/O

2

यदि आप वास्तव में गति चाहते हैं तो मैं बिल्ली के साथ कुछ हैक करने की कोशिश करने के बजाय स्मृति-मैप किए गए IO को आजमाने की अनुशंसा करता हूं। बेशक, यह और फ़ाइल आप का उपयोग करने की कोशिश कर रहे हैं के आकार आप चाहते हैं .. यह संभव नहीं हो सकता पहुँच के प्रकार पर निर्भर ...

Readahead एक अच्छा कॉल भी है ...

0

एक बड़ी फ़ाइल पर "बिल्ली" करना डेटा को ला सकता है और कैश से अधिक मूल्यवान डेटा उड़ा सकता है; यह वही नहीं है जो आप चाहते हैं।

यदि प्रदर्शन आपके लिए महत्वपूर्ण है, तो आप नियमित प्रदर्शन परीक्षण (और परीक्षणों को भंग कर सकते हैं) कर रहे हैं, इसलिए ऐसा करना जारी रखें और अपने ग्राफ, आंकड़े इत्यादि देखें।

संबंधित मुद्दे