टिप्पणियों में, मैंने आपको सुझाव दिया कि आप एक cgroup बनाएं, memory.swappinessशून्य पर सेट करें (स्वैपिंग कम करने के लिए) और उसी के अंदर अपना एप्लिकेशन चलाएं। यदि आपने ऐसा किया है, तो आपका आवेदन संभवतः तब तक स्वैप नहीं होगा जब तक आप भौतिक मेमोरी पर इतना अविश्वसनीय रूप से कम नहीं चल रहे थे कि उस cgroup में कार्यक्रमों के लिए पृष्ठों की अदला-बदली पर्याप्त भौतिक स्मृति उपलब्ध करने का एकमात्र तरीका था।
आरएचईएल 6.5 पर ऐसा करने के लिए:
सुनिश्चित करें कि libcgroupपैकेज स्थापित है। यह आपको यूजर्स के लिए टूल्स जैसे cgcreateऔर एक्सेस देता है cgexec।
cgconfigसेवा को प्रारंभ और सक्षम करें ताकि cgroup कॉन्फ़िगरेशन में परिवर्तन रिबूट के बीच लगातार हो। आरएचईएल पर इस सेवा को /cgroupपेड़ के नीचे आवश्यक फाइल सिस्टम को भी माउंट करना चाहिए ।
के साथ cgroup बनाएँ cgcreate -g memory:thunderbird
इस समूह के साथ शून्य पर स्वपन सेट करें cgset -r memory.swappiness=0 thunderbird
सेवा के cgsnapshot -s > /etc/cgconfig.confलिए अपडेट किए गए लगातार कॉन्फ़िगरेशन को बचाने के लिए उपयोग करें cgconfig(सभी अब तक रनटाइम परिवर्तन किए गए हैं। आप शायद डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल को कहीं और सहेजना चाहते हैं और इसे लगातार कॉन्फ़िगरेशन करने से पहले एक बार दे सकते हैं।
अब आप cgroup के cgexecभीतर वांछित एप्लिकेशन शुरू करने के लिए उपयोग कर सकते हैं thunderbird:
[रूट @ xxx601 ~] # cgexec -g मेमोरी: थंडरबर्ड ls
anaconda-ks.cfg a.out foreman.log index.html install.log install.log.syslog node.pp नींद की नींद। ssl- बिल्ड स्टैक टेस्ट
[रूट @ xxx601 ~] #
मैंने thunderbirdवास्तव में स्थापित नहीं किया है अन्यथा मैंने ऐसा किया होता। निश्चित नहीं है कि ऊपर का प्रारूपण गड़बड़ क्यों है।
cgexecथंडरबर्ड शुरू करने और tasksआवेदन के लिए फ़ाइल में पीआईडी जोड़ने के लिए एक विकल्प होगा । उदाहरण के लिए:
[रूट @ xxx601 ~] # कैट / cgroup / मेमोरी / थंडरबर्ड / कार्य
[रूट @ xxx601 ~] # पिडॉफ httpd
25926 10227 10226 10225 10163 10162 10161 10160 10159 10157 10156 10155 10152 10109
[रूट @ xxx601 ~] # इको २५ ९ २६> / cgroup / मेमोरी / थंडरबर्ड / कार्य
[रूट @ xxx601 ~] # कैट / cgroup / मेमोरी / थंडरबर्ड / कार्य
25,926
फिर, यह उल्लेख है कि यह तकनीकी रूप से अदला-बदली को रोकता नहीं है, लेकिन आवेदन को संशोधित करने में कम है, यह शायद आपका सबसे अच्छा दांव है। मैंने अभी-अभी पाया है memory.memsw.limit_in_bytesकि ऐसा लगता है कि कोई स्वैपिंग नहीं होने के लिए मजबूर करने पर एक अधिक प्रत्यक्ष नियंत्रण हो सकता है, लेकिन मैंने इसके साथ नहीं खेला है कि यह वास्तव में सहज महसूस करने के लिए पर्याप्त है कि यह आपकी समस्या को पूरी तरह से ठीक करता है। इसने कहा, इसके बाद इस पर ध्यान देना चाहिए।
असली जवाब mlockइस तरह की चिंता के आसपास पाने के लिए एप्लिकेशन संवेदनशील जानकारी होना है। मैं थंडरबर्ड जैसे एप्लिकेशन पर दांव लगाने को तैयार हूं, हालांकि, ऐसा करता है, लेकिन मुझे उस पर टिप्पणी करने के लिए आंतरिक के बारे में पर्याप्त नहीं पता है।
cgexec। आपको अभी भी रूट एक्सेस की आवश्यकता है, लेकिन यह व्यवस्थापक-स्तरीय रिज़ॉल्यूशन है। यदि आप अपना स्वयं का अनुप्रयोग विकसित कर रहे हैं तो आप झुंड का उपयोग करेंगे ।