उबंटू जल्दी से रैम से बाहर चल रहा है, और मेरा कंप्यूटर जमने लगा है। क्या कमांड इसे हल करेगा?


73

यह बहुत बार मेरे साथ होता है जब मैं बैकग्राउंड में सॉफ्टवेयर कंपाइल कर रहा होता हूं और अचानक सब कुछ धीमा होने लगता है और आखिरकार [अगर मैं कुछ नहीं करता] तो फ्रीज कर देता हूं, क्योंकि मैं रैम और स्वैप स्पेस दोनों से बाहर निकल चुका हूं।

यह प्रश्न मानता है कि मेरे पास गनोम टर्मिनल खोलने, अपने इतिहास के माध्यम से खोज करने और एक sudoकमांड निष्पादित करने के लिए पर्याप्त समय और संसाधन हैं ।

मुझे एक कठिन रिबूट या किसी भी रिबूट को करने से कौन सी कमांड बचा सकती है?


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
थॉमस वार्ड

1
यदि आप स्वैप स्थान से बाहर निकलते हैं, तो मुझे लगता है कि आपके पास बहुत कम है। मुझे इस कंप्यूटर पर 20G स्वैप स्पेस मिला है। मुद्दा यह है कि जो कुछ भी आपकी स्मृति खा रही है उसे मारने के लिए आपको एक प्रयोग करने योग्य प्रणाली के साथ पर्याप्त समय दिया जाए। यह कुछ ऐसा नहीं है जहाँ आप केवल वही लेते हैं जो आप उपयोग करेंगे, लेकिन आप जो आशा करते हैं कि आप कभी भी उपयोग नहीं करेंगे।
जोएल

1
क्या आप सुनिश्चित हैं कि RAM और स्वैप दोनों भरे जा रहे हैं? अगर ऐसा होता, तो OOM हैंडलर आपके कंपाइलर को मार देता था और मेमोरी को खाली कर देता था (और आपकी बिल्ड प्रक्रिया को भी खराब कर देता था)। अन्यथा, मुझे लगता है कि यह बस भर रहा है, और शायद आपका सिस्टम धीमा है क्योंकि आपका स्वैप आपके सिस्टम डिस्क पर है।
सूडो

3
यदि आपके पास इसका समर्थन करने के लिए पर्याप्त रैम नहीं है, तो अपने समानांतर बिल्ड की संख्या को कम करने का प्रयास करें। यदि आपका निर्माण स्वैप करना शुरू कर देता है, तो आप धीमी हो जाएंगे। साथ make, कोशिश -j44 समानांतर के लिए एक समय में बनाता है, उदाहरण के लिए।
शाहबाज

1
"एलेक्सा ने मुझे 8 गिग्स ऑफ रैम दिया"

जवाबों:


84

मेरे अनुभव में फ़ायरफ़ॉक्स और क्रोम मेरे पहले 7 कंप्यूटरों की तुलना में अधिक रैम का उपयोग करते हैं। शायद उससे भी ज्यादा लेकिन मैं अपनी बात से दूर हो रहा हूं। सबसे पहली बात जो आपको करनी चाहिए वह है आपका ब्राउज़र बंद होना । आदेश?

killall -9 firefox google-chrome google-chrome-stable chromium-browser

मैंने सबसे लोकप्रिय ब्राउज़रों को एक साथ एक कमांड में बांधा है, लेकिन जाहिर है कि अगर आप कुछ और चला रहे हैं (या जानते हैं कि आप इनमें से किसी एक का उपयोग नहीं कर रहे हैं) तो बस कमांड को संशोधित करें। killall -9 ...महत्वपूर्ण बिट है। लोगों को iffy के बारे में SIGKILL(सिग्नल नंबर 9) मिलता है, लेकिन ब्राउज़र बेहद लचीला हैं। इससे अधिक, धीरे-धीरे समाप्त होने SIGTERMका मतलब यह होगा कि ब्राउज़र क्लीनअप बकवास का भार उठाता है - जिसे अतिरिक्त रैम के फटने की आवश्यकता होती है - और यह ऐसी चीज है जिसे आप इस स्थिति में बर्दाश्त नहीं कर सकते।

यदि आपको वह पहले से चल रहे टर्मिनल या एक Alt+ F2संवाद में नहीं मिलता है , तो TTY पर स्विच करने पर विचार करें। Control+ Alt+ F2आपको TTY2 पर ले जाएगा जो आपको लॉगिन करने की अनुमति देनी चाहिए (हालांकि यह धीमा हो सकता है) और आपको htopइस मुद्दे पर डिबग करने के लिए कुछ का उपयोग करने की अनुमति भी देनी चाहिए । मुझे नहीं लगता कि मैंने कभी रैम से उस बिंदु तक भाग लिया है जो मैं नहीं htopउठा सकता ।

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


टिप्पणियाँ विस्तारित चर्चा के लिए नहीं हैं; इस वार्तालाप को बातचीत में स्थानांतरित कर दिया गया है ।
थॉमस वार्ड

मुझे अपने स्वयं के lazygitआदेश से जुड़े कुछ आदेश मिले, जिनका मैं समय-समय पर उपयोग करता हूं, शायद ऐसा ही कुछ यहां लागू किया जा सकता है? पूरी killall ...स्क्रिप्ट को एक साधारण emptyramया कुछ इस तरह घटाया जा सकता है
फ्रांसिस्को प्रेसेंसिया

यदि आप जानते हैं कि ब्राउज़र क्या चल रहा है, तो आपको पूरी कमांड चलाने की आवश्यकता नहीं है और मैं ज्यादातर लोगों को मानूंगा जो एक रैम की कमी की पहचान कर सकते हैं। विस्तार से, मुझे यह याद रखना कठिन होगा कि मैंने एक emptyramस्क्रिप्ट लिखी थी जिसमें सिर्फ छिद्रण था killall -9 firefox
ओली

2
रैम खरीदना ... सिर्फ रैम ही अधिक क्यों डाउनलोड करें?
स्टीफन बिजिटिटर

1
वैसे आप मजाक हो सकता है, लेकिन अगर आप थोड़े समय के लिए कुछ करने की जरूरत है की जरूरत है कहीं अधिक रैम और सीपीयू है कि आप, मिनट से एक VPS किराये पर एक शॉट के लिए बहुत किफायती है।
ओली

66

मैजिक सिस्टम रिक्वेस्ट की के साथ एक सिस्टम पर, Alt + System Request+ f(यदि आपके कीबोर्ड पर चिह्नित नहीं है, तो यह System Requestअक्सर Print Screenकुंजी पर होता है) को दबाने पर मैन्युअल रूप से कर्नेल आउट ऑफ़ मेमोरी किलर (oomkiller) को इनवॉइस करेगा, जो सबसे खराब आक्रामक प्रक्रिया को चुनने की कोशिश करता है स्मृति उपयोग और इसे मार डालो। आप ऐसा कर सकते हैं यदि आपके पास वर्णित समय की तुलना में आपके पास शायद कम समय है और सिस्टम बस शुरू होने वाला है (या शायद पहले ही शुरू हो चुका है) थ्रेशिंग - जिस स्थिति में आप शायद परवाह नहीं करते कि क्या मारा जाता है, बस आप समाप्त हो जाते हैं एक प्रयोग करने योग्य प्रणाली के साथ। कभी-कभी यह एक्स की हत्या को समाप्त कर सकता है, लेकिन इन दिनों अधिकांश समय यह एक बुरी प्रक्रिया को चुनने में बहुत बेहतर है, जितना पहले हुआ करता था।


5
@ T.Sar यदि आप सीधे थ्रैशिंग में जा रहे हैं, तो आप पहले से ही खो जाते हैं या मेमोरी-ईटर को मारने का मौका पाते हैं। अगर आप सिर्फ अभिनय से परहेज करते हैं तो आपको कुछ हासिल नहीं होता।
रुस्लान

4
@Muzer यह तभी काम करेगा जब आपने अपने में सही बिट सहित एक नंबर या सेट किया kernel.sysrqहो । 1/etc/sysctl.d/10-magic-sysrq.conf
रुस्लान

9
@ T.Sar आप अपनी प्रगति को खोने नहीं जा रहे हैं यदि आप एक साने बिल्ड सिस्टम का उपयोग कर रहे हैं। आप सभी ऑब्जेक्ट फ़ाइलों को बनाए रखेंगे, लेकिन जिसे आप वास्तव में संकलित कर रहे थे, तब आप बहुत ज्यादा वापस चले जाएंगे जहां आपने छोड़ा था।
मुजेर

3
@ T.Sar सिर्फ इसलिए कि आप जिस चीज को संकलित कर रहे हैं वह समझदार नहीं है, इसका मतलब यह नहीं है कि निर्माण प्रणाली समझदार नहीं है। सिस्टम का निर्माण तब से है जब से पुराने समय के बाद के संकलन में पुन: उपयोग के लिए ऑब्जेक्ट फाइल्स संग्रहीत की गई हैं। दूसरी ओर, मैं निश्चित रूप से लिनक्स की तुलना में कम विवेक के साथ बहुत सारे सॉफ्टवेयर प्रोजेक्ट्स को नाम दे सकता हूं (जो आमतौर पर बहुत अच्छी तरह से डिज़ाइन किया गया है)। उदाहरण के लिए, 8 समानांतर बिल्ड थ्रेड्स के साथ फ़ायरफ़ॉक्स या ओपनऑफ़िस जैसी किसी चीज़ का संकलन, मैं इसे आसानी से गीगाबाइट्स रैम के क्रम में लेते हुए देख सकता हूं। वहाँ भी अखंड कॉर्पोरेट सिस्टम के बहुत सारे हैं जो सैकड़ों पुस्तकालयों पर निर्भर हैं।
मुजेर

7
@ टी। एस लिनक्स वास्तव में कंपाइलर के पीओवी से जटिल नहीं है। वास्तव में शायद ही कोई सी कार्यक्रम हैं जो हैं। C ++ के बारे में क्या? क्या आपने कभी Eigen या Boost का उपयोग करके कोई प्रोग्राम बनाने की कोशिश की है? आपको आश्चर्य होगा कि कंपाइलर कभी-कभी ऐसे कार्यक्रमों के साथ कितना मेमोरी खाता है - और उन्हें खुद को जटिल नहीं बनाना पड़ता है।
रुस्लान

20

अन्य उत्तरों के विपरीत, मेरा सुझाव है कि आप ऐसा करते समय स्वैप को अक्षम कर दें। जबकि स्वैप आपके सिस्टम को पूर्वानुमेय तरीके से चालू रखता है, और अक्सर डिस्क तक पहुँचने वाले अनुप्रयोगों के थ्रूपुट को बढ़ाने के लिए उपयोग किया जाता है (डिस्क कैश के लिए कमरे की अनुमति देने के लिए अप्रयुक्त पृष्ठों को हटाकर), इस मामले में ऐसा लगता है कि आपका सिस्टम धीमा हो रहा है अनुपयोगी स्तरों पर क्योंकि बहुत अधिक सक्रिय रूप से उपयोग की जाने वाली मेमोरी को स्वैप करने के लिए जबरन निकाला जा रहा है।

मैं इस कार्य को करते समय स्वैप को पूरी तरह से अक्षम करने की सिफारिश करूंगा, ताकि रैम खत्म होते ही आउट-ऑफ-मेमोरी किलर कार्य करेगा।

वैकल्पिक समाधान:

  • RAID1 में अपना स्वैप विभाजन डालकर स्वैप की रीड स्पीड बढ़ाएं
    • या RAID0 यदि आप जोखिम भरा महसूस कर रहे हैं, लेकिन अगर आपके डिस्क में कोई खराबी है, तो बड़ी संख्या में चल रहे कार्यक्रम नीचे आ जाएंगे।
  • समवर्ती निर्माण नौकरियों की संख्या घटाएं ("अधिक कोर = अधिक गति", हम सभी कहते हैं, यह भूलकर कि यह रैम पर एक रैखिक टोल लेता है)
  • यह दोनों तरह से जा सकता है, लेकिन zswapकर्नेल में सक्षम करने का प्रयास करें । यह पृष्ठों को स्वैप करने के लिए भेजे जाने से पहले संपीड़ित करता है, जो आपकी मशीन को गति देने के लिए बस पर्याप्त wiggle कमरा प्रदान कर सकता है। दूसरी ओर, यह सिर्फ अतिरिक्त संपीड़न / विघटन के साथ एक बाधा होने का अंत कर सकता है।
  • अनुकूलन को बंद करें या एक अलग संकलक का उपयोग करें। अनुकूलन कोड कभी-कभी कई गीगाबाइट मेमोरी ले सकता है। यदि आपने LTO चालू कर दिया है, तो आप लिंक चरण में बहुत सारे RAM का उपयोग करने वाले हैं। यदि अन्य सभी विफल हो जाते हैं, तो आप अपने प्रोजेक्ट को हल्के-फुल्के संकलक (जैसे tcc) के साथ संकलित उत्पाद के लिए मामूली रनटाइम प्रदर्शन की कीमत पर संकलित करने का प्रयास कर सकते हैं । (यह आमतौर पर स्वीकार्य है यदि आप विकास / डिबगिंग उद्देश्यों के लिए ऐसा कर रहे हैं।)

6
यदि आपने स्वैप बंद कर दिया है, तो जब आप मेमोरी से बाहर निकलते हैं तो लिनक्स का व्यवहार होता है। यदि लिनक्स आउट-ऑफ-मेमोरी किलर को इनवॉइस नहीं करता है, लेकिन इसके बजाय जमा देता है, तो यह संकेत दे सकता है कि सेटअप के साथ गहरी समस्याएं हैं। बेशक, अगर स्वैप चालू है, तो व्यवहार थोड़ा अलग है।
स्कोर_उंडर

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

2
@Score_Under: प्रत्येक डिस्क पर अलग स्वैप विभाजन एक md raid0 डिवाइस पर स्वैप की तुलना में काफी अधिक कुशल माना जाता है। मैं भूल जाता हूं कि मैंने कहां पढ़ा है। लिनक्स RAID विकी ने RAID0 पर अलग-अलग विभाजन की सिफारिश की है, लेकिन यह बेहतर क्यों है इसके बारे में बहुत मजबूत कुछ भी नहीं कहता है । वैसे भी हां, RAID1 या RAID10n2 स्वैप के लिए समझ में आता है, खासकर यदि आप ज्यादातर सिर्फ गंदे लेकिन बहुत ठंडे पृष्ठों को स्वैप करने में सक्षम होना चाहते हैं तो पेजकेक के लिए अधिक रैम छोड़ दें। यानी स्वैप प्रदर्शन कोई बड़ी बात नहीं है।
पीटर कॉर्ड्स

2
मेरा कहना है कि आपकी सलाह के बाद, कोई भी उन कार्यक्रमों को चलाने में सक्षम नहीं हो सकता है, क्योंकि उन्हें स्वैप की आवश्यकता है। एक बिल्ड जो 100% समय विफल करता है वह एक बिल्ड से भी बदतर है जो सिस्टम को लॉक करने का 50% मौका है, है न?
दिमित्री ग्रिगोरीव

2
स्वैप के बिना, कई मशीनों पर कोड के बड़े हिस्से को संकलित करना असंभव है। आप क्यों मानेंगे कि यह वह संकलन है जो वह बलिदान करना चाहता है?
डेविड शवार्ट्ज

14

आप अपने सिस्टम पर सबसे अधिक रैम का उपयोग करके प्रक्रिया को मारने के लिए निम्न कमांड (बार-बार जरूरत पड़ने पर) का उपयोग कर सकते हैं:

ps -eo pid --no-headers --sort=-%mem | head -1 | xargs kill -9

साथ में:

  • ps -eo pid --no-headers --sort=-%mem: मेमोरी उपयोग द्वारा क्रमबद्ध सभी चल रही प्रक्रियाओं की प्रक्रिया आईडी प्रदर्शित करें
  • head -1: केवल पहली पंक्ति (सबसे अधिक मेमोरी का उपयोग करने की प्रक्रिया) रखें
  • xargs kill -9: प्रक्रिया को मार डालो

दिमित्री की सटीक टिप्पणी के बाद संपादित करें:

यह एक त्वरित और गंदा समाधान है जिसे तब चलाया जाना चाहिए जब कोई संवेदनशील कार्य नहीं चल रहे हों (ऐसे कार्य जिन्हें आप नहीं करना चाहते हैं kill -9)।


5
यह OOM किलर को स्थिति को संभालने देने से बहुत खराब है। OOM किलर उससे कहीं ज्यादा होशियार है। क्या आप वास्तव में चल रहे संकलन वाले कंप्यूटर पर ऐसी कमांड चलाते हैं?
दिमित्री ग्रिगोरीव

@DmitryGrigoryev मेरे डेस्कटॉप पर Xorg को मारने के लिए इतना स्मार्ट है। आधुनिक गुठली में OOMK ने कुछ पवित्रता प्राप्त की है, लेकिन मैं वास्तव में उस पर भरोसा नहीं करूंगा।
रुस्लान

11

अपने संसाधन लेने वाली आदेशों को चलाने से पहले, आप भी इस्तेमाल कर सकते हैं setrlimit (2) , सिस्टम कॉल शायद के साथ ulimitअपने bash खोल के builtin (या limitzsh में निर्मित) के साथ विशेष रूप से -vके लिए RLIMIT_AS। तब बहुत बड़ा वर्चुअल ऐड्रेस स्पेस की खपत (जैसे के साथ mmap (2) या sbrk (2) द्वारा इस्तेमाल किया malloc (3) ) असफल हो जायेगी (साथ errno (3) किया जा रहा है ENOMEM)।

तब वे (आपके टाइप किए जाने के बाद आपके शेल में भूखी प्रक्रियाएं ulimit) आपके सिस्टम को फ्रीज करने से पहले समाप्त कर दी जाएंगी।

लिनक्स Ate My RAM को भी पढ़ें और मेमोरी ओवरकॉम्पिटमेंट को डिसेबल करने पर विचार करें (कमांड echo 0 > /proc/sys/vm/overcommit_memory को रूट के रूप में चलाकर , देखें proc (5) ...)।


11

जब मैं बैकग्राउंड में सॉफ्टवेयर कंपाइल कर रहा होता हूं, तो मेरे साथ ऐसा बहुत बार होता है

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


2
'बस एक शर्म की बात है कि मुझे इस जवाब को खोजने के लिए नीचे स्क्रॉल करना पड़ा। मैं उम्मीद कर रहा था कि कोई इस तरह का प्रस्ताव देगा जो इस रैम ईटर पर प्रगति को रोक देगा।
TOOGAM

यह उत्तर के पास कुछ भी नहीं है जो ओपी को उम्मीद है, लेकिन यह प्रश्न का उत्तर देता है साहित्यिक: मेरी बकवास मशीन अनुपयोगी है जब मैं उस पर निर्माण करता हूं - बकवास मशीन पर निर्माण बंद करो।
9ilsdx 9rvj 0lo

9

अपने लिए कुछ और स्वैप बनाएं।

निम्नलिखित स्वैप के 8G जोड़ देगा:

dd if=/dev/zero of=/root/moreswap bs=1M count=8192
mkswap /root/moreswap
swapon /root/moreswap

यह अभी भी धीमा होगा (आप स्वैप कर रहे हैं) लेकिन आपको वास्तव में रन आउट नहीं होना चाहिए। लिनक्स के आधुनिक संस्करण फाइलों में स्वैप कर सकते हैं। इन दिनों एक स्वैप विभाजन के लिए एकमात्र उपयोग के बारे में अपने लैपटॉप को हाइबरनेट करने के लिए है।


1
मैंने इस विधि को स्क्रिप्ट के रूप में लागू किया है, वास्तव में, यहां । मक्खी पर स्वैप जोड़ने के लिए काफी उपयोगी है।
सर्गी कोलोडियाज़नी

7
कुछ स्वैप आम तौर पर बुद्धिमान होते हैं, लेकिन बड़ी मात्रा में आवंटित करने से मशीन OOM हत्यारे के चरणों से पहले मशीन को और अधिक जोर देती है और एक स्वयंसेवक को चुनती है। "आपके राम को स्वैप के रूप में दोगुना" करने के बारे में अंगूठे की पुरानी भूमिका लंबी है। व्यक्तिगत रूप से मुझे ~ 1 जीबी स्वैप से अधिक का आवंटन करने में कोई मूल्य नहीं दिखता है।
क्रिगी जूल

5
Ext4 के साथ, आप सिस्टम को थ्रेशिंग करते समय 8GB I / O करने की आवश्यकता से बचने के fallocate -l 8G /root/moreswapबजाय कर सकते हैं dd। हालांकि यह किसी भी अन्य फाइल सिस्टम के साथ काम नहीं करता है। निश्चित रूप से एक्सएफएस नहीं, जहां स्वैप अलिखित विलुप्त होने को छेद के रूप में देखता है। (मुझे लगता है कि यह xfs मेलिंग सूची चर्चा बाहर नहीं हुई )। यह भी देखें swapd, एक डेमन जो डिस्क स्थान को बचाने के लिए मक्खी पर स्वैप फ़ाइलों को बनाता / हटाता है। इसके अलावा askubuntu.com/questions/905668/…
पीटर कॉर्ड्स

1
@Criggie "व्यक्तिगत रूप से मुझे ~ 1 जीबी स्वैप कुल से अधिक आवंटित करने में कोई मूल्य नहीं दिखता है" - क्या आपने फ़ायरफ़ॉक्स बनाने की कोशिश की है?
दिमित्री ग्रिगोरीव

1
@ अकीवा पिछली बार जब मैंने जाँच की है, तो अनुशंसित बिल्ड कॉन्फ़िगरेशन 16 जीबी रैम था। मुख्य निष्पादन योग्य फ़ाइल ( xul.dll) लगभग 50 एमबी है, इसलिए यह लिनक्स कर्नेल की तुलना में लगभग 10 गुना भारी है।
दिमित्री ग्रिगोरीव

5

शॉर्ट नोटिस पर मुफ्त रैम का एक हिस्सा प्राप्त करने का एक तरीका है , ज़्राम का उपयोग करना , जो एक संपीड़ित रैम डिस्क बनाता है और वहां स्वैप करता है। किसी भी आधे-सभ्य सीपीयू के साथ, यह नियमित रूप से स्वैप की तुलना में बहुत तेज है, और वेब ब्राउज़रों के साथ कई आधुनिक रैम हॉग के साथ संपीड़न दर बहुत अधिक है।

यह मानते हुए कि आपके पास zram स्थापित और कॉन्फ़िगर है, आपको बस चलाने के लिए क्या करना है

sudo service zramswap start

क्या यह सभी फाइल सिस्टम जैसे btrfs पर काम करता है?
अकिवा

1
@ अकीवा ज़्राम कभी भी डिस्क को नहीं छूता है, इसलिए मैं हां कहूंगा;)
दिमित्री ग्रिगोरीव

3

sudo swapoff -aस्वैप को अक्षम कर देगा, जिससे कर्नेल स्वचालित रूप से प्रक्रिया को उच्चतम स्कोर के साथ मार देगा यदि सिस्टम मेमोरी से बाहर निकलता है। मैं इसका उपयोग करता हूं अगर मुझे पता है कि मैं कुछ रैम-भारी चल रहा हूं, तो मैं इसे मार दूंगा अगर यह नियंत्रण से बाहर चला जाता है तो इसे स्वैप में जाने दें और हमेशा के लिए अटक जाएं। sudo swapon -aइसे बाद में पुन: सक्षम करने के लिए उपयोग करें ।

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


ओह, मैंने अभी देखा कि किसी ने टिप्पणी की कि ऊपर कहीं।
sudo

3

एक और चीज़ जो कोई भी कर सकता है वह है इस कमांड के माध्यम से मेमोरी पेज कैश को खाली करना:

echo 3 | sudo tee /proc/sys/vm/drop_caches

से kernel.org प्रलेखन (जोर जोड़ा):

drop_caches

इसे लिखने से कर्नेल को साफ कैश छोड़ने के साथ-साथ डेंट्री और इनोड्स जैसी पुनर्प्राप्त करने योग्य स्लैब ऑब्जेक्ट मिलेंगे। एक बार गिरा देने के बाद, उनकी स्मृति मुक्त हो जाती है

पृष्ठचैच को मुक्त करने के लिए: 1 पुन: प्राप्य स्लैब ऑब्जेक्ट (डेंचर और इनोडेस शामिल करें): इको 2> / proc / sys / vm / drop_caches: 2 स्कोब ऑब्जेक्ट्स और पेजकेस से echo 2> / proc / sys / vm / drop_caches: echo 3> / proc खरीदें / sys / vm / drop_caches

यह एक गैर-विनाशकारी ऑपरेशन है और किसी भी गंदी वस्तु को मुक्त नहीं करेगा। इस ऑपरेशन द्वारा मुक्त की गई वस्तुओं की संख्या बढ़ाने के लिए, उपयोगकर्ता लिखने से पहले / खरीद / sys / vm / drop_caches को चला सकता है। यह सिस्टम पर गंदी वस्तुओं की संख्या को कम करेगा और अधिक उम्मीदवारों को गिरा देगा।


दिलचस्प है ... उस तर्क तर्क की व्याख्या करने की परवाह है?
अकिवा

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

7
जब आप मेमोरी भरते हैं तो कैश पहली चीज है, इसलिए मुझे नहीं लगता कि इससे बहुत मदद मिलेगी। वास्तव में, मुझे नहीं लगता कि इस कमांड का कर्नेल व्यवहार या टाइमिंग डिस्क एक्सेस ऑप्टिमाइजेशन को डीबग करने के बाहर एक व्यावहारिक उपयोग है। मैं विनम्रतापूर्वक अधिक प्रदर्शन की आवश्यकता में किसी भी सिस्टम पर इस कमांड को चलाने के खिलाफ सिफारिश करूंगा।
स्कोर_उंडर

2
@Score_Under - "जब आप मेमोरी भरते हैं तो कैश सबसे पहली चीज होती है" - यह आपकी सेटिंग पर निर्भर करता है /proc/sys/vm/swappiness। स्वैच्छिकता 0 पर सेट होने के साथ, आप सही हैं। 60 की डिफ़ॉल्ट सेटिंग के साथ, आप करीब हैं। इसके साथ यह 200 पर सेट हो जाता है, हालांकि, यह हाल ही में उपयोग की जाने वाली प्रक्रियाओं के कम से कम उपयोग किए जाने वाले पृष्ठ होंगे जो पहले गिरा दिए जाते हैं ... उस विशेष मामले में, यह कमांड उपयोगी हो सकता है। हालाँकि, 0 (या कुछ कम मान, शायद 20 या 30) के लिए स्वैग सेट करना एक बेहतर सामान्य दृष्टिकोण होगा, हालाँकि।
जूल्स

3
@Score_Under यह कमांड kswapdबग के साथ पुरानी गुठली पर उपयोगी था (कुछ लोगों ने इसके साथ क्रोनोजर भी बनाया)। लेकिन आप सही हैं, मुझे संदेह है कि यह इस प्रश्न के साथ मदद करेगा।
दिमित्री ग्रिगोरीव

1

आपने कहा "पृष्ठभूमि में संकलन"। आप अग्रभूमि में क्या कर रहे हैं? यदि आप इसका ग्रहण या अन्य संसाधन हैवी आईडीई के साथ विकसित कर रहे हैं, तो जांचें कि क्या कंसोल में सब कुछ ठीक से समाप्त हो गया है।

विकास के वातावरण अक्सर विकास के तहत कई प्रक्रियाओं को शुरू करने की अनुमति देते हैं, ये तब भी लटके रह सकते हैं जब आप उनमें दिलचस्पी नहीं लेते (डिबगर में, या बस ठीक से समाप्त नहीं होते हैं)। यदि डेवलपर ध्यान नहीं देता है, तो दिन में कई गीगाबाइट का एक साथ उपयोग करके दसियों भूल प्रक्रियाओं को जमा किया जा सकता है।

जांचें कि क्या आईडीई में समाप्त होने वाली हर चीज को समाप्त कर दिया गया है।

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