मेरे पास 8 जीबी रैम और 16 जीबी स्वैप के साथ एक डेबियन (बस्टर) लैपटॉप है । मैं बहुत लंबे समय तक चलने वाला कार्य कर रहा हूं। इसका मतलब यह है कि मेरा लैपटॉप पिछले छह दिनों के लिए छोड़ दिया गया है जबकि यह मंथन करता है।
ऐसा करते समय मुझे समय-समय पर लैपटॉप के रूप में अपने लैपटॉप का उपयोग करने की आवश्यकता होती है। यह एक समस्या नहीं होनी चाहिए; लंबे समय तक चलने वाला कार्य I / O बाध्य है, USB हार्ड डिस्क पर सामान के माध्यम से काम करता है और ज्यादा RAM (<200 MB) या CPU (<4%) नहीं लेता है।
समस्या यह है कि जब मैं कुछ घंटों के बाद अपने लैपटॉप पर वापस आता हूं, तो यह बहुत सुस्त हो जाएगा और वापस सामान्य होने में 30 मिनट लग सकते हैं। यह इतना बुरा है कि क्रैश-मॉनिटर अपने संबंधित अनुप्रयोगों को फ़्लेग करते हैं (विशेषकर ब्राउज़र विंडो) और चीजें गलत तरीके से दुर्घटनाग्रस्त होने लगती हैं।
सिस्टम मॉनिटर को देखते हुए, लगभग आधे में इस्तेमाल किए गए 2.5 जीबी को स्वैप में स्थानांतरित कर दिया जाता है। मैंने पुष्टि की है कि स्वैप स्थान ( swapoff /dev/sda8
) को हटाकर यह समस्या है । अगर मैं इसे स्वैप स्पेस के बिना छोड़ दूं तो यह 24 घंटे के बाद भी लगभग तुरंत जीवन में वापस आ जाता है। स्वैप के साथ, यह व्यावहारिक रूप से पहले पांच मिनट के लिए एक ईंट है जो केवल छह घंटे के लिए छोड़ दिया गया है। मैंने पुष्टि की है कि दूर रहने के दौरान भी मेमोरी का उपयोग 3 जीबी से अधिक नहीं है।
मैं कम करने की कोशिश की है swappiness ( यह भी देखें: विकिपीडिया ) के मूल्यों को 10
और 0
है, लेकिन समस्या अभी भी बनी हुई है। ऐसा लगता है कि निष्क्रियता के एक दिन बाद कर्नेल का मानना है कि पूरे जीयूआई की अब आवश्यकता नहीं है और इसे रैम से मिटा दिया जाता है (इसे डिस्क पर स्वैप करता है)। लंबे समय तक चलने वाला कार्य एक विशाल फ़ाइल ट्री के माध्यम से पढ़ना और हर फ़ाइल को पढ़ना है। तो यह कर्नेल यह सोचकर भ्रमित हो सकता है कि कैशिंग मदद करेगा। लेकिन ~ 1 बिलियन फ़ाइल नामों के साथ 2 टीबी यूएसबी एचडी के एक सिंगल स्वीप पर, एक अतिरिक्त जीबी रैम प्रदर्शन को अधिक मदद करने वाला नहीं है। यह एक सस्ता लैपटॉप है जिसमें सुस्त हार्ड ड्राइव है। यह बस डेटा को रैम में तेजी से वापस लोड नहीं कर सकता है।
मैं कैसे बता सकता हूँ कि लिनक्स केवल आपात स्थिति में स्वैप स्पेस का उपयोग करता है? मैं स्वैप के बिना नहीं चलना चाहता। अगर कुछ अनपेक्षित होता है, और ओएस को अचानक कुछ अतिरिक्त जीबी की आवश्यकता होती है, तो मैं नहीं चाहता कि कार्यों को मार दिया जाए और वे स्वैप का उपयोग करना पसंद करेंगे। लेकिन इस समय, यदि मैं स्वैप सक्षम छोड़ देता हूं, तो मेरे लैपटॉप का उपयोग तब नहीं किया जा सकता है जब मुझे इसकी आवश्यकता होती है।
"आपातकाल" की सटीक परिभाषा बहस का विषय हो सकती है। लेकिन स्पष्ट करने के लिए कि मेरा क्या मतलब है: एक आपातकालीन स्थिति होगी जहां सिस्टम को स्वैप या हत्या प्रक्रियाओं के अलावा किसी अन्य विकल्प के बिना छोड़ दिया जाता है।
आपातकाल क्या है? - क्या तुम सच में पूछना है? ... मुझे आशा है कि तुम अपने आप को एक जलती हुई इमारत में कभी नहीं पाओगे!
मेरे लिए यह संभव नहीं है कि मैं इस प्रश्न में सब कुछ परिभाषित कर सकूं। लेकिन उदाहरण के लिए, एक इमरजेंसी तब हो सकती है जब कर्नेल को मेमोरी के लिए धकेल दिया जाता है ताकि वह OOM किलर के साथ मारना शुरू कर दे । जब कर्नेल को लगता है कि यह स्वैप का उपयोग करके प्रदर्शन में सुधार कर सकता है, तो आपातकाल नहीं है।
फाइनल एडिट: मैंने एक जवाब स्वीकार किया है, जो ठीक उसी तरह से है जो मैंने ऑपरेटिंग सिस्टम के स्तर पर पूछा है। भविष्य के पाठकों को भी आवेदन स्तर के समाधान की पेशकश के जवाबों पर ध्यान देना चाहिए।