एक डॉकटर कंटेनर कितने CPU का उपयोग करता है?


120

आइए कहते हैं कि मैं एक डॉकटर कंटेनर के अंदर एक मल्टीप्रोसेसिंग सेवा चला रहा हूं , जिसमें कई प्रक्रियाएं हैं, क्या होस्ट के सभी / एकाधिक कोर / सीपीयू या सिर्फ एक का उपयोग करेगा?


11
जितने CPU में cgroup है उतने का उपयोग करने की अनुमति है। जो, डिफ़ॉल्ट रूप से, सीमित नहीं है। --cpuset-cpusयदि आप इसे बदलना चाहते हैं तो देखें ।
चार्ल्स डफी

3
(एक डॉकटर कंटेनर निजी नामस्थानों का एक समूह है - चूंकि यह सीपीयू का अनुकरण नहीं कर रहा है, इसलिए उन पर कोई प्रतिबंध लगाने के लिए इसे अपने रास्ते से बाहर जाने की आवश्यकता होगी; लिनक्स कर्नेल इस तरह के जाने की अनुमति देने के लिए सुविधाएं प्रदान करते हैं- एक तरह से, लेकिन यह अभी भी कुछ है जो वास्तव में स्पष्ट रूप से प्रदर्शन करने की आवश्यकता है)।
चार्ल्स डफी

विंडोज पर डॉकटर टूलबॉक्स के बारे में कैसे, जो वर्चुअलबॉक्स का उपयोग करता है?
ईगोर क्राव

जवाबों:


111

जैसा कि चार्ल्स उल्लेख करते हैं, डिफ़ॉल्ट रूप से सभी का उपयोग किया जा सकता है, या आप --cpuset-cpusपैरामीटर का उपयोग करके इसे प्रति कंटेनर तक सीमित कर सकते हैं ।

docker run --cpuset-cpus="0-2" myapp:latest

यह कंटेनर को 3 सीपीयू (0, 1, और 2) तक सीमित कर देगा। देखें डोकर चलाने डॉक्स अधिक जानकारी के लिए।


कंटेनरों के सीपीयू उपयोग को सीमित करने का पसंदीदा तरीका सीपीयू पर एक आंशिक सीमा के साथ है:

docker run --cpus 2.5 myapp:latest

यह आपके कंटेनर को मेजबान पर 2.5 कोर तक सीमित कर देगा।


अंत में, यदि आप मैक के लिए डॉकटर, मैक के लिए डॉकर, और डॉकटर-मशीन सहित एक वीएम के अंदर डॉक चलाते हैं, तो उन वीएम की सीपीयू सीमा आपके लैपटॉप से ​​ही अलग होगी। Docker उस VM के अंदर चलता है और VM को दिए गए सभी संसाधनों का उपयोग करेगा। मैक के लिए डॉकर के साथ जैसे आपके पास निम्न मेनू है:

मैक एडवांस्ड सेटिंग्स के लिए डॉकर


क्या दो सीपीयू के साथ एक ही वीएम पर चलने वाले दो डॉकटर कंटेनर प्रदर्शन को प्रभावित करते हैं यदि वे दोनों स्पॉनिंग प्रक्रियाएं हैं? तो जब वीएम पर केवल 2 सीपीयू होते हैं, तो दोनों कुल चार के लिए दो प्रक्रियाएं बनाते हैं?
cocPuffs

जब तक आप CPU सीमाएँ निर्दिष्ट नहीं करते हैं, तब तक आप एक ही होस्ट पर एक कंटेनर के बाहर उन प्रक्रियाओं को चलाते हैं। प्रत्येक कंटेनर में सीपीयू सीमा को जोड़ने से एक कंटेनर में प्रक्रियाओं को अपने लिए सभी सीपीयू संसाधनों का उपयोग करने से रोका जा सकता है।
बीएमच

वास्तव में व्यापक, महान सामान
दर्रागौर

7

हो सकता है कि आपके होस्ट VM में डिफ़ॉल्ट रूप से केवल एक ही कोर हो। इसलिए आपको पहले अपना VM cpu-count बढ़ाना चाहिए और फिर अपने docker कोर को बढ़ाने के लिए - ccuset-cpus विकल्प का उपयोग करना चाहिए । आप निम्न कमांड का उपयोग करके docker default VM को हटा सकते हैं फिर आप वैकल्पिक cpu-count और मेमोरी साइज़ के साथ एक और VM बना सकते हैं।

docker-machine rm default
docker-machine create -d virtualbox --virtualbox-cpu-count=8 --virtualbox-memory=4096 --virtualbox-disk-size=50000 default

इस चरण के बाद आप अपनी छवि को चलाने से पहले कोर की संख्या निर्दिष्ट कर सकते हैं। यह कमांड कुल 8 कोर के 4 कोर का उपयोग करेगा।

docker run -it --cpuset-cpus="0-3" your_image_name

तब आप इस आदेश का उपयोग करके अपनी छवि में उपलब्ध कोर की संख्या की जांच कर सकते हैं:

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