गेट्रेज सिस्टम कॉल: "अधिकतम निवासी सेट आकार" क्या है


23

man getrusage 2 कहते हैं

ru_maxrss (since Linux 2.6.32)
              This is the maximum resident set size used (in kilobytes). For RUSAGE_CHILDREN, this is the resident set size of the largest
              child, not the maximum resident set size of the process tree.

तो इस संख्या का वास्तव में क्या मतलब है?


बस एक नोट जो ru_maxrssमैक / बीएसडी मशीनों पर बाइट्स में है।
इसहाक टर्नर

1
लघु स्पष्टीकरण: ru_maxssमैक ओएस एक्स (डार्विन) मशीनों पर बाइट्स में है, लेकिन बीएसडी मशीनों और लिनक्स मशीनों पर किलोबाइट्स में। Stackoverflow.com/q/40773924/781723 और stackoverflow.com/q/12050913/781723 देखें ।
DW

जवाबों:


27

एक प्रक्रिया का निवासी सेट आकार स्मृति की मात्रा है जो इसके अंतर्गत आता है और वर्तमान में रैम (वास्तविक रैम, स्वैप नहीं या अन्यथा नहीं) में मौजूद (निवासी) है।

उदाहरण के लिए, यदि कोई प्रक्रिया मेमोरी का एक हिस्सा आवंटित करती है (100Mb कहते हैं) और इसे सक्रिय रूप से उपयोग करता है (इसे पढ़ता / लिखता है), इसका निवासी सेट आकार लगभग 100Mb (प्लस उपरि, कोड खंड, आदि) होगा। यदि प्रक्रिया के बाद फिर कुछ समय के लिए उस मेमोरी का उपयोग करना बंद हो जाता है (लेकिन रिलीज नहीं होता है), ओएस अन्य प्रक्रियाओं (या कैशे) के लिए जगह बनाने के लिए उस मेमोरी के स्वैप को स्वैप करने का विकल्प चुन सकता है। निवासी सेट आकार तब कर्नेल की अदला-बदली की मात्रा से कम हो जाएगा। यदि प्रक्रिया उठती है और उस मेमोरी का फिर से उपयोग करना शुरू कर देती है, तो कर्नेल स्वैप से डेटा को फिर से लोड करेगा, और निवासी सेट आकार फिर से ऊपर जाएगा।

का ru_maxrssक्षेत्र struct rusageनिवासी सेट आकार के लिए "उच्च पानी का निशान" है। यह इस प्रक्रिया के लिए पीक रैम उपयोग का संकेत देता है (उपयोग करते समय RUSAGE_SELF)।

आप अपने सिस्टम पर सभी रैम "खाएं" और अन्य एप्लिकेशन को स्वैप करने के लिए मजबूर करने (या आउट-ऑफ-मेमोरी शर्तों के साथ पूरी तरह से विफल) होने के लिए एक प्रक्रिया के निवासी सेट आकार को सीमित कर सकते हैं।

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