डॉकटर कंटेनर में अनुमत सीपीयू की संख्या


14

मेरा विशिष्ट परिदृश्य निम्नलिखित है। मैं एक विशिष्ट कंटेनर के साथ एक डॉक कंटेनर लॉन्च करता हूं:

docker run --cpuset-cpus="0-2" # ...

उस कंटेनर के अंदर मैं प्रवेश बिंदु के रूप में एक शेल स्क्रिप्ट चलाता हूं और यह शेल स्क्रिप्ट makeकिसी बिंदु पर चलेगा । मैं यह पता लगाना चाहूंगा कि नौकरियों की अच्छी संख्या ( -j) क्या होगी। मैं निश्चित रूप से पर्यावरण के माध्यम से आवंटित सीपीयू की संख्या को पारित कर सकता हूं, लेकिन यह पता लगाने के लिए एक स्वचालित तरीका बहुत पसंद किया जाएगा।

मुझे पता है कि मैं वर्तमान प्रक्रिया के लिए उपयोग taskset -c -p $$या cat /proc/self/status | grep Cpus_allowed_listपुनर्प्राप्त कर सकता हूं Cpus_allowed, लेकिन मुझे नहीं पता कि अनुमत सीपीयू की वास्तविक संख्या कैसे प्राप्त की जाए। मैं उन कमांड के आउटपुट को पार्स करने या Cpus_allowedमास्क के साथ फ़िडलिंग से बचना चाहूंगा , लेकिन विकल्पों से बाहर होने पर ऐसा करूंगा।


1
nproc- उपलब्ध प्रसंस्करण इकाइयों की संख्या प्रिंट करें
ब्रायन

@ ब्रायन यह बहुत आसान था।
PMR

जवाबों:


19

आप nprocशेल स्क्रिप्ट टूल का उपयोग कर सकते हैं ।

तो यह -j$(nproc)प्रश्न में मेक कमांड लाइन में होगा।


1
"docker run --rm --cpus 2 debian nproc" -> 8?
इवान बेन्ने

2
@EvanBenn --cpus="2"प्रसंस्करण इकाइयों की संख्या को सीमित नहीं करता है और इसके बराबर है -cpu-period="100000" and --cpu-quota="200000"
ब्रायन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.