किसी विशिष्ट प्रक्रिया के लिए मेमोरी सीमा कैसे सेट करें?


10

मैंने mpiexec -16 ...384 जीबी रैम सर्वर पर निष्पादित करने की कोशिश की , लेकिन इसने ओओएम किलर को प्रेरित किया और निरस्त कर दिया गया।

मैं mpiexecनिष्पादन के लिए मेमोरी सीमा कैसे निर्धारित कर सकता हूं ?

मुझे पता है ulimit, लेकिन यह अन्य प्रक्रियाओं को प्रभावित कर सकता है।

धन्यवाद।

जवाबों:


9

मुझे लगता है कि इसका उपयोग करके किया जा सकता है cgroups:

mpigroupमेमोरी सीमा (उदाहरण के लिए, 50GB का) के साथ (या जो भी नाम आप चुनते हैं) एक cgroup बनाएँ :

cgcreate -g memory,cpu:mpigroup
cgset -r memory.limit_in_bytes=$((50*1024*1024*1024)) mpigroup

फिर, यदि mpiexec पहले से चल रहा है, तो उसे इस cgroup में लाएँ:

cgclassify -g memory,cpu:mpigroup $(pidof mpiexec)

या mpiexecइस cgroup के भीतर निष्पादित करें:

cgexec -g memory,cpu:mpigroup mpiexec -16 ...

नहीं करना चाहिए memoryनियंत्रक पर्याप्त हो: cgcreate -g memory:mpigroup?
हेमायल

@ हेमायला को होना चाहिए। मैंने विकी से सीधे इस उदाहरण को उठा लिया
मूरू

सेटिंग्स / sys / fs / cgroup / memory / पर संग्रहीत हैं, और sudo काम करने के लिए आवश्यक है, भले ही यह sudo का उपयोग करते समय विफल न हो
कुंभ राशि का पावर

मैं भौतिक मेमोरी को 2GB तक सीमित करने में सफल रहा, पूरी तरह से काम किया, लेकिन वर्चुअल मेमोरी अभी भी 8GB तक जा रही थी, लेकिन यह पूरी तरह से ठीक था क्योंकि शराब का खेल स्वैप को अन्य स्वैप अनुप्रयोगों को भेजने के बजाय केवल स्वैप का उपयोग करेगा, और यह बना पूरी प्रणाली बेहतर काम करती है! धन्यवाद!
कुंभ राशि
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.