खोजें / एलएस कैशिंग


10

ऐसा लगता है जैसे मैं पहली बार दौड़ता हूं findया lsकिसी डायरेक्टरी में, काम करने में थोड़ा समय लगता है। लेकिन, इसके बाद हर बार, यह तेजी से होता है, जैसे कि निर्देशिका की सामग्री की एक सूची को कैश या इंडेक्स किया गया है।

क्या कंप्यूटर के रीबूट में इस कैश को संरक्षित करने का कोई तरीका है?


1
यह वास्तव में कैश्ड है। लिनक्स अप्रयुक्त मेमोरी का उपयोग कैश और बफ़र्स के रूप में करता है (यही एक कारण है कि आपको हमेशा कुछ स्वैप करना चाहिए, यहां तक ​​कि "पर्याप्त" रैम)। फ्री-कमांड आपको दिखाता है कि कितना उपलब्ध है। सुनिश्चित नहीं है कि रिबूट के बीच कैशिंग में यह बहुत अधिक है, बूट के बीच बहुत कुछ बदल सकता है। हर 10,30 मिनट में सबसे कम प्राथमिकता के साथ चलने के लिए क्रोन-जॉब बनाने के बारे में कैसे, बस अपनी सभी फाइलों के माध्यम से जाने के लिए? हर समय कैशे को अपेक्षाकृत अप-टू-डेट रखना चाहिए। फ़ाइल-परिवर्तनों का पता लगाने के लिए भी (कर्नेल के लिए) एक तरीका है।
बार्ड कोपरपुड

जवाबों:


8

आप अपने पेज कैश (डिस्क कैश) में फ़ाइलों को जोड़ने के लिए vmtouch का उपयोग कर सकते हैं ।

बूट पर अपने पेज कैश में फ़ाइलों को जोड़ने और लॉक करने के लिए nohup vmtouch -dl <files or directories> &अपनी /etc/rc.localफ़ाइल में रखें । यदि आप फ़ाइल को अपने पेज कैश में जोड़ना चाहते हैं, लेकिन उन्हें मेमोरी में लॉक नहीं करना चाहते हैं, तो -tझंडे के बजाय ध्वज का उपयोग करें -ld

पृष्ठ कैश के बारे में अधिक जानकारी के लिए, यहां , यहां और विकिपीडिया पर देखें


यह आदेश उबंटू में उपलब्ध नहीं है - क्या कोई विकल्प है जो मैं कोशिश कर सकता हूं?
रिचर्ड

@ रीचर्ड खुद को vmtouch संकलित करना बहुत आसान है: build-essentialपैकेज स्थापित करें । डाउनलोड करें vmtouch.c। भागो gcc -O2 -o vmtouch vmtouch.cया make vmtouchआपको बाइनरी मिलती है vmtouchजिसे आप उदाहरण के लिए कॉपी कर सकते हैं /usr/local/binया कॉल कर सकते हैं ./vmotouch
जोफेल

@ रिचर्ड मैं उबंटू का उपयोग नहीं करता है, इसलिए मैंने इसका परीक्षण नहीं किया है और कोई जिम्मेदारी नहीं लेता है, लेकिन "उबंटू मावोच" को गुगला कर इस पीपा को लाया है ।
terdon

@ जोफेल, हाँ, यह संकलन करने के लिए काफी आसान था - धन्यवाद। मैं जब संभव हो तो केवल पैकेज का उपयोग करना पसंद करता हूं।
रिचर्ड

@ इवान, अगर मैं गलत हूं, तो मुझे सुधारो, लेकिन vmtouchऑन-बूट कमांड के रूप में उपयोग नहीं करने से पूरे काम धीमा हो जाएंगे ? मेरी आशा थी कि हर बार इसे पुन: प्राप्त करने के बजाय (महँगे) बूटों पर एक कैश संरक्षित किया जाए।
रिचर्ड

2

"रिबूट के पार संरक्षित करें", मुझे संदेह है। लेकिन आप तुच्छ रूप से कैश को बूटिंग पर फिर से बना सकते हैं, जो लगभग एक ही चीज को एक छोटी सी देरी को पूरा करता है।

एक फ़ाइल बनाएं /etc/cron.d/rebuild-fs-cacheऔर उसमें निम्नलिखित डालें:

@reboot root /usr/bin/nice -n 19 /usr/bin/ionice -c 3 -t /usr/bin/find / >/dev/null 2>&1

यह उपयोग करता है niceऔर ionice(जिसे डिफ़ॉल्ट रूप से स्थापित किया जाना चाहिए, और निश्चित रूप से पैकेज मैनेजर के माध्यम से उपलब्ध होना चाहिए; डेबियन उन्हें प्रक्रिया के प्राथमिकता को कम करने के लिए क्रमशः ( coreutilsऔर util-linux, क्रमशः) डालता findहै, जिसका अर्थ है कि इसे किसी और चीज़ में हस्तक्षेप नहीं करना चाहिए आपके सिस्टम पर चल रहा है लेकिन पूरा होने में थोड़ा अधिक समय लगेगा। findअपने आप ही stat()सब कुछ के माध्यम से चला जाएगा , जो कर्नेल को डिस्क से फ़ाइल सिस्टम डेटा को मेमोरी में लोड करने के लिए मजबूर करता है।

एक बार जब कैश बनाया गया है, तो जब तक यह शुद्ध नहीं हो जाता है क्योंकि ओएस को किसी और चीज के लिए मेमोरी की आवश्यकता होती है, इसे बनाए रखा जाना चाहिए। मैं थोड़ी देर के लिए इसका उपयोग कर रहा हूं और बड़ी निर्देशिकाओं में भी निर्देशिका लिस्टिंग उपरोक्त क्रोन नौकरी के बिना काफी तेज है, हालांकि मैं कुछ सटीक संख्याओं का हवाला नहीं दे सकता।


1
यदि आप पहिया को सुदृढ़ करने के लिए जा रहे हैं, तो आप उपयोग भी कर सकते हैं locate, जो updatedbएक डेटाबेस को अपडेट करने के लिए आता है : en.wikipedia.org/wiki/Locate_(Unix)
laebshade

@laebshade मैं बिल्कुल उपयोग नहीं locateकरता, लेकिन मैं lsबहुत उपयोग करता हूं । और कभी-कभार find। (इसके अलावा, ढूँढें और ls विशिष्ट आदेश हैं findजिनके बारे में ओपी पूछता है।) यहाँ उपयोग करने की बात यह है कि यह स्टेटिंग कॉलिंग स्टेट () पर सब कुछ से अधिक पुनरावृत्त करता है, इसलिए कर्नेल को मेटाडेटा को मेमोरी में लोड करना पड़ता है। एक बार जब यह वहाँ है, यह उतना ही अच्छा है जितना कि इसे रिबूट में संग्रहीत किया गया था।
बजे एक CVn
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.