cgroupsऐसा करने का सही तरीका है, जैसा कि अन्य उत्तरों ने बताया है। दुर्भाग्य से समस्या का कोई सटीक समाधान नहीं है, क्योंकि हम नीचे मिलेंगे। Cgroup मेमोरी उपयोग सीमा निर्धारित करने के विभिन्न तरीकों का एक समूह है। उपयोगकर्ता के लॉगिन सत्र को स्वचालित रूप से एक cgroup का हिस्सा बनाने के बारे में कैसे पता चलता है जो सिस्टम से सिस्टम में भिन्न होता है। Red Hat में कुछ उपकरण हैं, और इसी तरह systemd है ।
memory.memsw.limit_in_bytesऔर memory.limit_in_bytesक्रमशः स्वैप सहित और सीमा निर्धारित करें। नकारात्मक पक्ष यह memory.limit_in_bytesहै कि यह समूह के कोटे के खिलाफ cgroup में प्रक्रियाओं की ओर से गिरी हुई फाइलों को गिनता है। कम कैशिंग का मतलब अधिक डिस्क एक्सेस है, इसलिए यदि सिस्टम में कुछ मेमोरी उपलब्ध है, तो आप संभावित रूप से कुछ प्रदर्शन दे रहे हैं।
दूसरी ओर, memory.soft_limit_in_bytescgroup को ओवर-कोटा जाने की अनुमति देता है, लेकिन अगर कर्नेल OOM किलर को आमंत्रित किया जाता है, तो उन cgroups जो अपने कोटा से अधिक हैं, पहले तार्किक रूप से मारे जाते हैं। हालांकि, इसका नकारात्मक पहलू यह है कि ऐसी स्थितियां हैं, जहां कुछ मेमोरी की तुरंत आवश्यकता होती है और ओओएम किलर के पास प्रक्रियाओं को मारने के लिए चारों ओर देखने के लिए समय नहीं है, इस मामले में ओवर-कोटा उपयोगकर्ता की प्रक्रियाओं से पहले कुछ विफल हो सकता है मारे गए।
ulimitहालाँकि, इसके लिए बिल्कुल गलत उपकरण है। ulimit वर्चुअल मेमोरी उपयोग पर सीमाएं रखता है, जो निश्चित रूप से वह नहीं है जो आप चाहते हैं। कई वास्तविक दुनिया के अनुप्रयोग भौतिक मेमोरी की तुलना में कहीं अधिक आभासी मेमोरी का उपयोग करते हैं। अधिकांश कचरा एकत्रित रनटाइम्स (जावा, गो) विखंडन से बचने के लिए इस तरह से काम करते हैं। सी में एक तुच्छ "हैलो वर्ल्ड" प्रोग्राम, यदि एड्रेस सेनिटाइज़र के साथ संकलित किया गया है, तो 20TB वर्चुअल मेमोरी का उपयोग कर सकते हैं। एलाटेटर जो भरोसा नहीं करते हैं sbrk, जैसे जेमलॉक (जो जंग के लिए डिफ़ॉल्ट आवंटनकर्ता है ) या tcmalloc, उनके भौतिक उपयोग के अतिरिक्त वर्चुअल मेमोरी का पर्याप्त उपयोग होगा। कार्यकुशलता के लिए, कई उपकरण एमएमएपी फ़ाइलों को बनाएंगे, जो आभासी उपयोग को बढ़ाते हैं लेकिन जरूरी नहीं कि भौतिक उपयोग हो। मेरी सभी Chrome प्रक्रियाएँ प्रत्येक वर्चुअल मेमोरी के 2TB का उपयोग कर रही हैं। मैं 8GB की फिजिकल मेमोरी वाले लैपटॉप पर हूं। किसी भी तरह से किसी ने यहां वर्चुअल मेमोरी कोटा स्थापित करने की कोशिश की, या तो क्रोम को तोड़ देगा, क्रोम को कुछ सुरक्षा सुविधाओं को अक्षम करने के लिए मजबूर करेगा जो बड़ी मात्रा में वर्चुअल मेमोरी को आवंटित करने (लेकिन उपयोग नहीं करने) पर भरोसा करते हैं, या उपयोगकर्ता को सिस्टम का दुरुपयोग करने से रोकने में पूरी तरह से अप्रभावी होते हैं। ।