लगभग पूर्ण रैम पर कंप्यूटर फ्रीजिंग, संभवतः डिस्क कैश समस्या


74

मुझे लगता है कि समस्या कुछ इस धागे के समान है ।

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

डिस्क को बेतहाशा स्पिन किया जाता है, और कभी-कभी लंबे समय तक 10-30 मिनट इंतजार करने के बाद यह बेकार हो जाएगा, और कभी-कभी नहीं (या मैं देशभक्ति से बाहर)। कभी-कभी अगर मैं जल्दी से कार्य करता हूं तो मैं धीरे-धीरे खुले कंसोल को प्रबंधित कर सकता हूं और कुछ ब्राउज़र की तरह खाने वाले राम को मार सकता हूं, और सिस्टम लगभग तुरंत ही समाप्त हो जाता है।

इस समस्या के कारण मुझे लगभग कभी भी स्वैग में कुछ भी दिखाई नहीं देता, केवल कभी-कभी वहां कुछ एमबी होती है, और उसके तुरंत बाद यह समस्या सामने आती है। मेरा इतना शिक्षित अनुमान नहीं होगा कि यह किसी तरह डिस्क कैश से बहुत अधिक लालची, या मेमोरी मैनेजमेंट से बहुत अधिक जुड़ा हुआ है, इसलिए जब मेमोरी की आवश्यकता होती है तो इसे जल्दी से मुक्त नहीं किया जाता है और सिस्टम को घूरता है।

अगर लैग्रेग फाइलों (500MB +) के साथ काम करना समस्या को बहुत तेजी से प्राप्त किया जा सकता है जो कि डिस्क कैश में भरी हुई हैं और बाद में सिस्टम उन्हें तेजी से लोड करने में असमर्थ है।

किसी भी मदद या विचारों की बहुत सराहना की जाएगी।

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

हालांकि मिस्टी इस कारण मुझे इस स्थिति में नहीं बचा है।

अद्यतन: यह कुछ समय के लिए लटका नहीं था, लेकिन अब मुझे फिर से कई घटनाएं मिलीं। मैं अब हर समय अपनी स्क्रीन पर राम मॉनिटर रख रहा हूं और जब हैंग हुआ तो यह अभी भी दिखाया गया ~ 30% मुफ्त (डिस्क कैश द्वारा प्रयुक्त शायद)। अतिरिक्त लक्षण: अगर उस समय मैं वीडियो (वीएलसी प्लेयर) देख रहा हूं तो ध्वनि पहले बंद हो जाती है, कुछ सेकंड के बाद छवि बंद हो जाती है। हालांकि ध्वनि बंद हो गई है फिर भी मेरे पास पीसी पर कुछ नियंत्रण है, लेकिन जब छवि बंद हो जाती है तो मैं अब माउस को स्थानांतरित नहीं कर सकता, इसलिए मैंने कुछ इंतजार के बाद इसे फिर से शुरू किया। Btw, यह तब नहीं हुआ जब मैंने वीडियो देखना शुरू किया था, लेकिन कुछ समय (20 मिनट) में और मैंने उस समय सक्रिय रूप से कुछ और नहीं किया, भले ही ब्राउज़र और ओवरराइट पूरे समय दूसरी स्क्रीन पर खुले थे। मूल रूप से कुछ बस एक बिंदु पर होने का फैसला करता है और सिस्टम को लटका देता है।

टिप्पणियों में अनुरोध के अनुसार मैं फांसी के तुरंत बाद dmesg भागा। मैंने कुछ भी अजीब नहीं देखा, लेकिन यह देखने के लिए कि क्या पता है, इसलिए यहाँ है: https://docs.google.com/document/d/1iQih0Ee2DwsGd3VuQZu0bPgg0GjSOCRZhu0B5CMYs/edit?hl=en_US&CP_CP


11
इस पर अधिक ध्यान देने की जरूरत है। मुझे पता है कि कई सालों से बग दर्ज हैं।
n3rd


@ क्रिज़ेनिस नेसेनबर्ग: कृपया मुझे सही करें अगर मैं एक लंबी फ़ाइल को चिपकाने में गलत कॉपी हूं तो यह भी लटका हुआ है।
रिक 2047

इस सवाल को पूछने और समाधान खोजने के लिए धन्यवाद। कृपया अपडेट में एक तिथि जोड़ें, अन्यथा यह स्पष्ट नहीं है कि क्या काम किया और क्या काम नहीं किया। मैं एक ही समस्या है, मैं हमेशा स्मृति स्तर की जाँच कर रहा हूं, और मेरे पास 16GB है, 32GB की योजना बना रहा है, यह देखने के लिए कि क्या मैं इसे इस तरह से ठीक कर सकता हूं ...
बेटो एविगा

जवाबों:


63

इस समस्या को ठीक करने के लिए मैंने पाया है कि आपको कंप्यूटर में कोर की संख्या से विभाजित करके अपनी कुल भौतिक रैम के लगभग 5% -6% पर कुछ सेट करना होगा:

sysctl -w vm.min_free_kbytes=65536

ध्यान रखें कि यह एक प्रति-कोर सेटिंग है, इसलिए यदि मेरे पास 2 जीबी रैम और दो कोर हैं, तो मैंने केवल 1 जीबी के 6% की गणना की और सुरक्षित होने के लिए थोड़ा अतिरिक्त जोड़ा।

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

sysctl -w vm.swappiness=5

(100 = जितनी बार संभव हो स्वैप करें, 0 = केवल कुल आवश्यकता पर स्वैप करें)

इसका परिणाम यह है कि linux अब अनियमित रूप से रैम में लगभग 1GB की पूरी फिल्म फ़ाइल को देखने के दौरान लोड करने का फैसला करता है, और ऐसा करने में मशीन को मार देता है।

अब मेमोरी भुखमरी से बचने के लिए पर्याप्त आरक्षित स्थान है, जो कि समस्या थी (जैसा कि पहले कभी नहीं देखा गया है)।

एक दिन के लिए परीक्षण करने के बाद - लॉकअप चले गए, कभी-कभी मामूली मंदी होती है, क्योंकि सामान अधिक बार कैश हो जाता है, लेकिन मैं इसके साथ रह सकता हूं अगर मुझे हर कुछ घंटों में कंप्यूटर को पुनरारंभ नहीं करना पड़ता है।

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


आप शायद इन सेटिंग्स को /etc/sysctl.confइस तरह से जोड़कर स्थायी बनाना चाहते हैं :

vm.swappiness=5
vm.min_free_kbytes=65536

अच्छा लगता है, इसके बारे में बग्स को रिपोर्ट करने की कोशिश करें ताकि मुद्दे के बारे में अधिक जागरूकता हो और उम्मीद है कि कोई व्यक्ति पूरी फिल्म को बेतरतीब ढंग से लोड न करने के समाधान के साथ आएगा,
ऑक्सीविवि

धन्यवाद, महान विस्तार और मेरे मुद्दे की व्याख्या करता है। बहुत सराहना की!
ओडबेड

1
ठीक है, मैंने लगभग सब कुछ करने की कोशिश की, और केवल आपके सुझाव से चीजों में सुधार हुआ। धन्यवाद
14

1
यदि मैं एक स्वैप विभाजन के बिना चल रहा हूं, तो क्या मुझे 5-6% से अधिक राशि का उपयोग करना चाहिए? और सेटिंग vm.swappinessउस मामले में कुछ नहीं करेगा, मुझे लगता है?
जेरेत मिलार्ड

1
"[vm.min_free_kbytes] कंप्यूटर को रैम की इस मात्रा को मुक्त रखने की कोशिश करने के लिए मजबूर करता है, और ऐसा करने में डिस्क फ़ाइलों को कैश करने की क्षमता को सीमित करता है।" - परेशान करने के लिए खेद है, लेकिन यह सब से संबंधित नहीं है vm.min_free_kbytes। यह परमाणु को कम करने के लिए आरक्षित पृष्ठों के एक ब्लॉक के रूप में कार्य करता है ( __GFP_WAITजब उच्च सिस्टम मेमोरी कंसेंशन के तहत आवंटन (यानी भरें या मारें / गैर- ) आवंटन। यह वास्तव में इसे यहाँ उठाने के लिए समझ सकता है (जैसा कि शायद ये स्टॉल सिस्टम मेमोरी कंसंट्रेशन से संबंधित हैं), लेकिन यह निश्चित रूप से इस उत्तर में वर्णित कारण के लिए नहीं होगा।
क्रिस डाउन

9

यह मेरे लिए Ubuntu 14.04 की एक नई स्थापना में हुआ।

मेरे मामले में, इसका उल्लेख किए गए sysctl मुद्दों से कोई लेना-देना नहीं था।

इसके बजाय, समस्या यह थी कि स्थापना के दौरान स्वैप विभाजन का UUID स्थापना के दौरान अलग था। इसलिए मेरा स्वैप कभी भी सक्षम नहीं था, और मेरी मशीन कुछ घंटों के उपयोग के बाद लॉक हो जाती थी।

समाधान के साथ स्वैप विभाजन की वर्तमान UUID जाँच करने के लिए था

sudo blkid

और फिर sudo nano /etc/fstabगलत स्वैप की यूयूआईडी वैल्यू को बदलने के लिए जिसे ब्लेक द्वारा रिपोर्ट किया गया है।

परिवर्तनों और वॉइला को प्रभावित करने के लिए एक सरल रिबूट।


3
आपको बहुत - बहुत धन्यवाद! मैं अब एक साल के करीब कुछ के लिए इस अविश्वसनीय रूप से संक्रमित बग से जूझ रहा था, और इसे ठीक करने के लिए सब कुछ करने की कोशिश की थी । लिनक्स में यह व्यवहार क्यों है? ऐसा लगता है कि यह कार्य करना चाहिए जैसे कि कोई स्वैप नहीं है, और सिर्फ ओओएम-हत्यारा को लागू करना चाहिए। इसके बजाय, यह दिखावा करने के लिए लगता है जैसे कि स्वैप है, लेकिन फिर वास्तव में चीजों को स्वैप करने में विफल रहें (क्योंकि वास्तव में ऐसा नहीं है, क्योंकि यह अनुचित रूप से कॉन्फ़िगर किया गया है)।
क्रेजी

@ crazy2be यह विफल नहीं है, यह अंतहीन रूप से सफल हो रहा है। यहां तक ​​कि बिना किसी स्वैप के, लिनक्स अभी भी प्रोग्रामों को अनमोड कर सकता है और मेमोरी में अनमॉडिफाइड फाइल्स को डिस्क से री-रीड कर सकता है।
मार्टिन थॉर्नटन

4

मुझे पता है कि यह सवाल पुराना है, लेकिन मुझे यह समस्या उबंटू (चिरूबंटू) में 14.04 एक एसर C720 क्रोमबुक पर थी। मैंने क्रिस्ज़ानिस नेसेंबर्ग्स समाधान की कोशिश की, और यह कुछ हद तक काम किया, लेकिन फिर भी कभी-कभी दुर्घटनाग्रस्त हो गया।

मुझे आखिरकार एक समाधान मिला जिसने एसएसडी पर भौतिक स्वैप का उपयोग करने के बजाय ज़्राम स्थापित करके काम किया। इसे स्थापित करने के लिए मैंने यहां दिए गए निर्देशों का पालन ​​किया , जैसे:

sudo apt-get install zram-config

बाद में मैं /etc/init/zram-config.confलाइन 21 पर संशोधन करके ज़्राम स्वैप के आकार को कॉन्फ़िगर करने में सक्षम था ।

20: # Calculate the memory to user for zram (1/2 of ram)
21: mem=$(((totalmem / 2 / ${NRDEVICES}) * 1024))

मैंने 1 को 1 के साथ बदल दिया ताकि zram का आकार उसी आकार का हो जाए जैसे मेरे पास राम की मात्रा है। ऐसा करने के बाद से, मेरे पास कोई अधिक जमाव या प्रणाली नहीं है।


zramयदि आप अधिक RAM स्थापित नहीं कर सकते हैं तो व्यवहार्य विकल्प है। यदि SSD को स्वैप करते समय सिस्टम बहुत धीमा है और बिना स्वैप के RAM से बाहर जाता है, तो zramथोड़ी मदद कर सकता है जब तक कि आप थोड़ा और अधिक करने की कोशिश नहीं करते हैं और परिणाम बिना स्वैप के RAM के समान होता है।
मिकको रैंटलैनेन

4

मेरे लिए कुछ भी काम नहीं किया !!

इसलिए मैंने मेमोरी उपयोग की निगरानी के लिए एक स्क्रिप्ट लिखी। अगर मेमोरी की दहलीज बढ़ती है तो यह सबसे पहले रैम कैश को क्लियर करने की कोशिश करेगा। आप इस सीमा को स्क्रिप्ट पर कॉन्फ़िगर कर सकते हैं। यदि मेमोरी की खपत सीमा से नीचे नहीं आती है, तब भी, यह मेमोरी खपत के घटते क्रम में एक-एक करके प्रक्रियाओं को मारना शुरू कर देगा, जब तक कि मेमोरी की खपत सीमा से नीचे न हो। मैंने इसे डिफ़ॉल्ट रूप से 96% पर सेट किया है। आप स्क्रिप्ट में वैरिएबल RAM_USAGE_THRESHOLD का मान बदलकर इसे कॉन्फ़िगर कर सकते हैं।

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

#!/usr/bin/env python
import psutil, time
import tkinter as tk
from subprocess import Popen, PIPE
import tkinter
from tkinter import messagebox
root = tkinter.Tk()
root.withdraw()

RAM_USAGE_THRESHOLD = 96
MAX_NUM_PROCESS_KILL = 100

def main():
    if psutil.virtual_memory().percent >= RAM_USAGE_THRESHOLD:
        # Clear RAM cache
        mem_warn = "Memory usage critical: {}%\nClearing RAM Cache".\
            format(psutil.virtual_memory().percent)
        print(mem_warn)
        Popen("notify-send \"{}\"".format(mem_warn), shell=True)
        print("Clearing RAM Cache")
        print(Popen('echo 1 > /proc/sys/vm/drop_caches',
                    stdout=PIPE, stderr=PIPE,
                    shell=True).communicate())
        post_cache_mssg = "Memory usage after clearing RAM cache: {}%".format(
                            psutil.virtual_memory().percent)
        Popen("notify-send \"{}\"".format(post_cache_mssg), shell=True)
        print(post_cache_mssg)

        if psutil.virtual_memory().percent < RAM_USAGE_THRESHOLD:
            print("Clearing RAM cache saved the day")
            return
        # Kill top C{MAX_NUM_PROCESS_KILL} highest memory consuming processes.
        ps_killed_notify = ""
        for i, ps in enumerate(sorted(psutil.process_iter(),
                                      key=lambda x: x.memory_percent(),
                                      reverse=True)):
            # Do not kill root
            if ps.pid == 1:
                continue
            elif (i > MAX_NUM_PROCESS_KILL) or \
                    (psutil.virtual_memory().percent < RAM_USAGE_THRESHOLD):
                messagebox.showwarning('Killed proccess - save_hang',
                                       ps_killed_notify)
                Popen("notify-send \"{}\"".format(ps_killed_notify), shell=True)
                return
            else:
                try:
                    ps_killed_mssg = "Killed {} {} ({}) which was consuming {" \
                                     "} % memory (memory usage={})". \
                        format(i, ps.name(), ps.pid, ps.memory_percent(),
                               psutil.virtual_memory().percent)
                    ps.kill()
                    time.sleep(1)
                    ps_killed_mssg += "Current memory usage={}".\
                        format(psutil.virtual_memory().percent)
                    print(ps_killed_mssg)
                    ps_killed_notify += ps_killed_mssg + "\n"
                except Exception as err:
                    print("Error while killing {}: {}".format(ps.pid, err))
    else:
        print("Memory usage = " + str(psutil.virtual_memory().percent))
    root.update()


if __name__ == "__main__":
    while True:
        try:
            main()
        except Exception as err:
            print(err)
        time.sleep(1)

फ़ाइल में कोड सहेजें save_hang.py कहते हैं। स्क्रिप्ट को इस रूप में चलाएँ:

sudo python save_hang.py

कृपया ध्यान दें कि यह लिपि केवल पायथन 3 के लिए ही अनुकूल है और इसके लिए आपको टिंकर पैकेज स्थापित करना होगा। आप इसे इस प्रकार स्थापित कर सकते हैं:

sudo apt-get install python3-tk

उम्मीद है की यह मदद करेगा...


2

मेरा अनुमान है कि आपने अपना vm.swappinessमूल्य बहुत कम कर दिया है , जिसके कारण कर्नेल को बहुत देर से स्वैप करना पड़ता है, जिससे सिस्टम के साथ काम करने के लिए बहुत कम रैम निकल जाती है।

आप अपनी वर्तमान स्वैगिंग सेटिंग को निष्पादित करके दिखा सकते हैं:

sysctl vm.swappiness

डिफ़ॉल्ट रूप से, यह 60 पर सेट है। Ubuntu विकी इसे 10 पर सेट करने की सिफारिश करता है, लेकिन इसे उच्च मूल्य पर सेट करने के लिए स्वतंत्र महसूस करता है। आप इसे चलाकर बदल सकते हैं:

sudo sysctl vm.swappiness=10

यह इसे केवल वर्तमान सत्र के लिए बदल देगा , इसे लगातार बनाने के लिए, आपको फ़ाइल में जोड़ना vm.swappiness = 10होगा /etc/sysctl.conf

यदि आपकी डिस्क धीमी है, तो नया खरीदने पर विचार करें।


वास्तव में स्वैग कम करने से समस्या कम हो गई (यह अधिक शायद ही कभी हुआ)। मैं इसे अब 5 पर रख रहा हूं। हालाँकि शायद यह एक और समस्या थी, क्योंकि यह 60 साल की थी, और मैंने एक फिल्म देखने या एक बड़ी फाइल को संपादित करने का फैसला किया, पूरी फाइल और लगभग एक जीबी मेमोरी में लोड हो गया था और फिर तुरंत सिस्टम ने कार्यक्रमों को स्वैप करना शुरू कर दिया। सक्रिय रूप से उपयोग करना और यहां तक ​​कि स्वयं यूजर इंटरफेस भी। बात यह है कि मुझे लगता है कि मैं स्वैपिंग पार्ट को समझता हूं, जो मैं चाहता हूं वह राम से बाहर निकलते समय मशीन को फ्रीज करने के बजाय लालची उपयोगकर्ता अनुप्रयोगों को मार रहा है। (और अधिमानतः कैश में फ़ाइल का आकार सीमित करें)
क्रिस्ज़ानिस नेसेंबर्ग्स

@ क्रिस: जब सिस्टम मेमोरी (रैम और स्वैप) से बाहर निकल जाता है, तो कर्नेल oom_kill को कॉल करता है जो मेमोरी को बचाने के लिए प्रक्रियाओं को मारता है। दुर्भाग्य से, आप लक्ष्य प्रक्रियाओं को नियंत्रित नहीं कर सकते। इसे मैन्युअल रूप से ट्रिगर करने के लिए, Alt + SysRq + F दबाएं। dmesgकमांड चलाते समय , आपको प्रक्रिया की कुछ जानकारी (और प्रक्रिया का नाम + आईडी) देखना चाहिए। मुझे लगता है कि आप एक नई, तेज डिस्क खरीदने के साथ बेहतर होंगे। या अपनी रैम को अपग्रेड करें।
लेकेनस्टाइन

3
समस्या यह है, कि oom_kill को कंप्यूटर पर कुछ 30 मिनटों के लिए लॉक करने से पहले सिर्फ कॉल नहीं किया जाता है। इसके अलावा - कम से कम यह जानने का एक तरीका है कि पहले किस प्रक्रिया को मार दिया जाएगा?
क्रिएज़ानिस नेसेंबर्ग्स

2
मेरे पास 2GB Ram है और HDD 5400rpm है। मैं वास्तव में यह नहीं सोचता कि यह एक ऐसी पुरानी प्रणाली है जो एक मॉनिटर पर कुछ वीडियो देखने और दूसरे में कुछ 20-30 टैब ब्राउज़ करते समय आधे घंटे के फ्रीज को सही ठहराती है। वास्तव में मुझे काफी खुशी होगी अगर मैं सिर्फ कंसोल को एक्सेस कर सकता हूं और कुछ प्रक्रियाओं को मार सकता हूं - क्या उपयोगकर्ता इनपुट और टर्मिनल सुपर उच्च प्राथमिकता बनाने का एक तरीका है ताकि यह सिस्टम फ्रीज हो जाए?
क्रिएज़ानिस नेसेंबर्ग्स

1
वैसे भी - स्वैपिंग और रैम की मात्रा थोड़ी ऑफटॉपिक है। Te प्रॉब्लम यह है कि यह सिस्टम लंबे समय तक अनुत्तरदायी हो जाता है, भले ही स्वैप अक्षम हो, और उसके बाद भी कभी-कभी प्रोग्राम चलाता है (इसलिए यह कहीं न कहीं मेमोरी को मैनेज करता है) और अन्य समय oom_killer चलता है। सिस्टम को यह बताने में सक्षम होना चाहिए कि यह रैम से बाहर चल रहा है और बस मुझे अधिक सामान चलाने नहीं देना चाहिए। तो क्या उन फ्रीज़ को रोकने या उपयोगकर्ता इनपुट की प्राथमिकता को इतना अधिक सेट करने का कोई तरीका है, कि मैं कंसोल पर स्विच कर सकता हूं जब वे होते हैं और कुछ प्रक्रियाओं को स्वयं मारते हैं?
क्रिएज़ानिस नेसेंबर्ग्स

2

मैं लंबे समय से इस मुद्दे से जूझ रहा था, लेकिन अब यह मेरे लैपटॉप पर हल हो गया है।

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

मेरे पास 16GB रैम है, लेकिन जितनी जल्दी बाद में मेमोरी फुल हो गई और 10 से 30 मिनट के लिए जवाब देना बंद कर दिया, जब तक कि कुछ चीजें स्वैप नहीं हो जातीं।

कम से कम मेरे लिए, जो भी सिफारिश की गई है उसके ऊपर min_free_kbytes मान सेट करने से उस स्वैपिंग प्रक्रिया में काफी तेजी आती है।

16GB RAM के लिए, इसे आज़माएँ:

vm.min_free_kbytes=500000

इस मान को सेट करने के लिए अन्य उत्तर देखें, या बस इसे google करें :)


0

मैं अपने एक लैपटॉप को एक लाइव उबंटू एसडी कार्ड से लगातार चलाता हूं, जिसमें एक छोटा सा एक्स 4 स्टोरेज पार्टीशन और हार्ड ड्राइव पर एक स्वैप फाइल है। जब लगभग सभी RAM का उपयोग किया जाता है और स्वैग्मेंट वैल्यू बहुत कम हो जाती है (कभी-कभी मैं हार्ड ड्राइव को पूरी तरह से बंद रखना चाहता हूं यदि संभव हो तो, क्योंकि यह शोर है), लिनक्स प्रदर्शन मेरे लिए एक चट्टान से गिर जाता है, जैसे कि बस TTY1 को फ़ायरफ़ॉक्स को मारने में 15 मिनट लगते हैं।

१०००० /proc/sys/vm/vfs_cache_pressureके डिफ़ॉल्ट से लेकर ६००० के मान तक बढ़ाने से यह रोकने में मदद मिलती है। हालाँकि, कर्नेल प्रलेखन ऐसा करने के खिलाफ चेतावनी देते हुए कहता है

Increasing vfs_cache_pressure significantly beyond 100 may have negative
performance impact. Reclaim code needs to take various locks to find freeable
directory and inode objects. With vfs_cache_pressure=1000, it will look for
ten times more freeable objects than there are.

मैं ऐसा करने के दुष्प्रभावों के बारे में पूरी तरह से निश्चित नहीं हूं इसलिए मैं ऐसा करने में सावधान रहूंगा।


आप शायद vfs_cache_pressure10 के करीब (यानी, 100 से बहुत कम) और min_free_kbytesउच्चतर सेटिंग के साथ बेहतर परिणाम का अनुभव करेंगे । चेतावनी दी है कि यदि आप min_free_kbytesबहुत अधिक सेट करते हैं, तो कर्नेल ओओएम हत्यारा सभी को मार देगा!
मिकको रैंटलैनेन

@MikkoRantalainen मैंने पहले ही min_free_kbytes262144 पर उठाया है, और मैंने देखा है कि निचले हिस्से vfs_cache_pressureपर विपरीत प्रभाव पड़ता है - इसे 100 से कम करने से सिस्टम बहुत तेजी से अनुत्तरदायी हो जाता है। मुझे यकीन नहीं है कि वास्तव में क्यों।
Hitechcomputergeek

सामान्य रूप से बढ़ती हुई vfs_cache_pressureमात्रा के कारण कैश की गई फ़ाइल सामग्री से पहले फेंक दिया जाएगा और परिणामस्वरूप, समग्र प्रदर्शन आमतौर पर 100 से अधिक मूल्यों के साथ भुगतना पड़ रहा है। यदि आप सिस्टम को पुन: उत्पन्न करने के लिए चरणों का पता लगा सकते हैं / जैसे कि Ubuntu लाइव सीडी के साथ शुरू होने वाली प्रणाली को लटका देना। तब कर्नेल डेवलपर्स मूल कारण का पता लगा सकते हैं। मेरे लिए, हैंग बिना किसी चेतावनी के होता है। मेरा सबसे अच्छा अनुमान है कि OOM किलर को पर्याप्त RAM मुक्त करने से पहले कर्नेल ओओएम के कारण लटका हुआ है। अब मैं min_free_kbytes = 100000, admin_reserve_kbytes = 250000 और user_reserve_kbytes = 500000 चला रहा हूं।
मिक्को रेंटालैनेन

(cont) मैं अभी तक उपर्युक्त विन्यास के साथ दुर्घटनाग्रस्त नहीं हुआ, जबकि मेरे पास स्वपन = ५ और vfs_cache_pressure = २० है। सिस्टम में एसएसडी पर 16 जीबी रैम और 8 जीबी स्वैप है। एक अन्य प्रणाली में 32 जीबी रैम और शून्य स्वैप है और यह बेतरतीब ढंग से एक ही मुद्दे से ग्रस्त लगता है - वहाँ Alt + SysRq + f दबाने के बाद सिस्टम धीमा लगता है मदद करने के लिए लगता है तो मुझे लगता है कि अगर OOM किलर तेजी से कार्य कर रहे थे तो सिस्टम लटका नहीं होगा।
मिक्को रेंटालैनेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.