2015-12-24 13 views
11

मैं Building Applications on Mesos पढ़ रहा हूँ, और निम्नलिखित बयानों के पार चलो:मेसोस में सीपीयू आवंटन को कैसे समझें?

CPUs
इस संसाधन को व्यक्त करता है कि कितने सीपीयू कोर उपलब्ध हैं। कार्य एक सीपीयू के आंशिक भागों का उपयोग कर सकते हैं-यह संभव है क्योंकि मेसोस दास विशिष्ट CPUs को आरक्षित करने के बजाय CPU शेयर, का उपयोग करते हैं। इसका मतलब यह है कि, यदि आपके पास 1.5 सीपीयू आरक्षित है, तो आपकी प्रक्रियाओं को प्रत्येक सेकेंड के कुल 1.5 सेकंड CPU समय का उपयोग करने की अनुमति दी जाएगी। इसका मतलब यह हो सकता है कि, एक एकल निष्पादक के भीतर, प्रत्येक प्रक्रिया को प्रति सेकंड सीपीयू समय के 750 मिलीसेकंड मिलते हैं, या एक प्रक्रिया को CPU समय का 1 सेकंड मिलता है और दूसरे को दिए गए दूसरे में प्रत्येक के 500 मिलीसेक CPU समय मिलता है। सीपीयू शेयरों का उपयोग करने का लाभ यह है कि यदि कुछ कार्य अपने हिस्से से अधिक उपयोग करने में सक्षम होंगे, और कोई अन्य कार्य अन्यथा निष्क्रिय सीपीयू का उपयोग नहीं करेगा, तो पहला कार्य संभावित रूप से इसके हिस्से से अधिक उपयोग कर सकता है। नतीजतन, सीपीस आरक्षित कार्य के लिए उपलब्ध न्यूनतम सीपीयू समय प्रदान करता है-अगर अतिरिक्त क्षमता उपलब्ध है, तो इसे और अधिक उपयोग करने की अनुमति होगी।

मैं समझ नहीं पा रहा हूं "if you have 1.5 cpus reserved, your processes will be allowed to use a total of 1.5 seconds of CPU time each second."। यह सेकंड CPU सेकंड प्रत्येक सेकंड का उपयोग कैसे कर सकता है?

उत्तर

1

एक से अधिक cpu/core :-) का उपयोग करके।

ध्यान दें कि इन सीमाओं का वास्तविक व्यवहार/प्रवर्तन अत्यधिक वास्तविक कंटेनर/आइसोलेटर पर निर्भर करेगा। दुर्भाग्य से मैं किसी भी अच्छे/हाल प्रलेखन नहीं मिला (लेकिन मुझे पता है कि इस :-) में सुधार लाने पर काम कर रहे लोगों हैं कि), लेकिन आप इस ब्लॉग पोस्ट पर एक नज़र हो सकता है: Blog Post about CPU resources

अद्यतन वहाँ सीपीयू उपयोग पर एलएस हार्ड कैप है: --[no]-cgroups_enable_cfsconfiguration parameter या यह Jira देखें।

9

cpu=1.5 डेढ़ सीपीयू कोर के लिए खड़ा होना चाहिए। आप मेसोस वेब यूआई में देख सकते हैं कि प्रत्येक मेसोस एजेंट (गुलाम) कितने कोर प्रदान करता है। nproc यह दिखाता है कि mesos-slave कम CPUs प्रदान करने के लिए कॉन्फ़िगर किया गया है। Mesos 3 दशमलव स्थानों परिशुद्धता के साथ संसाधनों की गणना करता है।

ऐसे कई झंडे हैं जो मेसोस संसाधनों को सीमित करते हैं। सीपीयू सबसे महत्वपूर्ण है के लिए isolation (के बारे में हम mesos-slave/mesos-agent सेटिंग्स बात कर रहे हैं):

  • --isolation=posix/cpu,posix/mem कोई भी सीपीयू सीमित लागू किया जाता है mesos-executor सिर्फ एक प्रक्रिया है कि अन्य प्रक्रिया चलाता है। आप nice का उपयोग कर सकते हैं, उदा। nice -20 (सर्वोच्च प्राथमिकता के लिए) या cpulimit कर्नेल नियोजन को प्रभावित करने के लिए आदेश, लेकिन मेसोस उदा। cpu=0.1 पर विचार नहीं किया जाएगा।
  • --isolation=cgroups/cpu,cgroups/memcgroups (2.6.29 के बाद से लिनक्स कर्नेल का हिस्सा) प्रत्येक प्रक्रिया या प्रक्रियाओं के समूह द्वारा उपयोग किए जाने वाले संसाधनों को सीमित करने की अनुमति देता है। कुछ वितरण डिफ़ॉल्ट रूप से सीमित स्मृति को सक्षम नहीं करते हैं और cgroup_enable=memory कर्नेल को पास करने की आवश्यकता है। लेकिन चलो सीपीयू पर ध्यान केंद्रित करते हैं। डिफ़ॉल्ट रूप से cgroups रूढ़िवादी दृष्टिकोण लेता है जहां cpu=1.0 का अर्थ है कि कम से कम एक सीपीयू कोर कार्य के लिए आरक्षित होगा। लेकिन अगर मेजबान पर कोई अन्य काम नहीं चल रहा है तो यह सभी सीपीयू का उपभोग कर सकता है।यह मानते हुए कि हमारे पास 12 CPUs वाला होस्ट है और cpu=2.0 के साथ दो कार्य चल रहे हैं। फिर प्रत्येक कार्य 6 CPUs कोर तक पहुंच सकता है! (मानते हैं कि उस होस्ट पर कोई अन्य मेसोस कार्य नहीं चल रहा है)। यह बहुत खतरनाक है, जब क्लस्टर कम लोड पर होता है तो सभी कार्य ठीक दिखेंगे, लेकिन कुछ मेजबानों के कई कार्य प्रदर्शन कम हो जाएंगे।
    • --cgroups_enable_cfsCFS पूरी तरह से उचित शेड्यूलर के लिए खड़ा है जो अधिक सख्त दृष्टिकोण लेता है। डिफ़ॉल्ट रूप से यह बंद हो जाता है, सभी वितरण भी इसका समर्थन नहीं करते हैं (आप अपने सिस्टम पर समर्थन सत्यापित करने के लिए उदाहरण के लिए डॉकर check-script.sh का उपयोग कर सकते हैं)। सीएफएस गारंटी देगा कि प्रत्येक प्रक्रिया निर्दिष्ट अधिकांश भाग (उदाहरण के लिए cpu=2.5) पर उपयोग कर सकती है। यह एक लागत पर आता है कि कुछ कार्य निष्क्रिय होने पर कोई अन्य प्रक्रिया आरक्षित कोर का उपयोग नहीं कर सकती है। तो, सुनिश्चित करें कि आप अपनी आवश्यकता को अच्छी तरह से परिभाषित करेंगे।

अंतिम उल्लेख मुद्दा सीपीयू oversubscription कि the Mesos documentation में वर्णन किया गया द्वारा हल किया जा सकता है।

संबंधित मुद्दे