आइए कहते हैं कि मैं एक डॉकटर कंटेनर के अंदर एक मल्टीप्रोसेसिंग सेवा चला रहा हूं , जिसमें कई प्रक्रियाएं हैं, क्या होस्ट के सभी / एकाधिक कोर / सीपीयू या सिर्फ एक का उपयोग करेगा?
आइए कहते हैं कि मैं एक डॉकटर कंटेनर के अंदर एक मल्टीप्रोसेसिंग सेवा चला रहा हूं , जिसमें कई प्रक्रियाएं हैं, क्या होस्ट के सभी / एकाधिक कोर / सीपीयू या सिर्फ एक का उपयोग करेगा?
जवाबों:
जैसा कि चार्ल्स उल्लेख करते हैं, डिफ़ॉल्ट रूप से सभी का उपयोग किया जा सकता है, या आप --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 को दिए गए सभी संसाधनों का उपयोग करेगा। मैक के लिए डॉकर के साथ जैसे आपके पास निम्न मेनू है:
हो सकता है कि आपके होस्ट 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
--cpuset-cpusयदि आप इसे बदलना चाहते हैं तो देखें ।