यूनिक्स 'सीपीयू चोरी समय' के बराबर एक विंडोज है?


24

वर्चुअलाइजेशन प्लेटफार्मों पर प्रदर्शन की निगरानी सटीकता का आकलन करने के लिए, सीपीयू चोरी समय एक तेजी से प्रासंगिक मीट्रिक बन गया है - ईसी 2 निगरानी देखें : सीपीयू समय पर अमेजन ईसी 2 और आईबीएम के पेपर के संदर्भ में एक निर्देशात्मक सारांश के लिए सीपीयू चोरी का मामला लेखांकन के लिए लेखांकन अवधारणा की अधिक गहराई से तकनीकी व्याख्या (चित्र सहित):

चोरी का समय उस समय का प्रतिशत है जब एक वर्चुअल सीपीयू एक वास्तविक सीपीयू की प्रतीक्षा करता है जबकि हाइपरविजर दूसरे वर्चुअल प्रोसेसर की सर्विसिंग करता है।

तदनुसार, यह आजकल सबसे संबंधित यूनिक्स / लिनक्स मॉनिटरिंग टूल में उजागर हुआ है - उदाहरण के लिए कॉलम % चोरी या स्टिक इन sarया top:

st - चोरी का समय
इस वर्चुअल मशीन से CPU की चोरी की गई राशि को अन्य कार्यों के लिए हाइपरविजर द्वारा (जैसे कि दूसरी वर्चुअल मशीन चलाने के लिए)।

मैं यह पता लगाने में असमर्थ हूं कि विंडोज पर एक ही मीट्रिक को कैसे कैप्चर किया जाए, क्या यह पहले से ही संभव है? ( EC2 पर और संबंधित विंडोज प्रदर्शन काउंटर के माध्यम से विंडोज 2008 सर्वर आर 2 एएमआई के लिए आदर्श रूप से ।)

जवाबों:


33

संपादित करें: 1 अक्टूबर 2013 को अपडेट करना - मेरे कुछ मूल उत्तर अप्रचलित हो गए हैं।

मुझे यकीन नहीं है कि यदि आप अभी भी इस साइट पर सक्रिय हैं या आप इसे देखेंगे, लेकिन मैं चाहता था कि आप आज यह प्रश्न पढ़ें और इसने मुझे मोहित किया, और इसलिए मैंने पूरा दिन बिताया (जब मुझे होना चाहिए था) काम कर रहा है) हाइपर-वी और विंडोज इंटर्नल पर शोध करना और यहां तक ​​कि वर्चुअलाइजेशन की बहुत ही अवधारणाओं में खुदाई करना, इस उम्मीद में कि मैं आपके प्रश्न का उत्तर देने के लिए तैयार हो सकता हूं।

मुझे यह कहते हुए प्रस्तावना दें कि मैं हाइपर-वी के दृष्टिकोण से एक वर्चुअलाइजेशन प्लेटफॉर्म के रूप में आ रहा हूं क्योंकि यही वह जगह है जहां मुझे सबसे अधिक अनुभव है। भले ही हम वर्चुअलाइजेशन के कुछ सिद्धांत हो सकते हैं, जैसा कि हम जानते हैं, कि Microsoft, और VMware और Xen सभी से अलग नहीं हो सकते हैं कि वे अपने हाइपरवेर्स को कैसे डिजाइन करते हैं।

यह पहली बात है जो आपके प्रश्न को चुनौतीपूर्ण बनाती है। आप अपने प्रश्न को ऐसे लगाते हैं जैसे कि यह हाइपरवाइजर-अज्ञेयवादी था, जब कि वास्तव में यह नहीं है। उदाहरण के लिए, अमेज़ॅन EC2, एक्सएम हाइपरवाइज़र और "सीपीयू स्टाइल टाइम" मीट्रिक का उपयोग करता है, जो कि आप topउस हाइपरवाइज़र पर चल रहे लिनक्स वीएम के भीतर से जारी कमांड के आउटपुट में देखते हैं, जो उस अतिथि ओएस पर स्थापित एकीकरण सेवाओं का एक परिणाम है। (या अतिथि पर वर्चुअलाइजेशन-जागरूक उपकरण) उस विशिष्ट हाइपरवाइजर द्वारा प्रदान किए गए डेटा के साथ संयोजन में।

सबसे पहले मुझे सीधे अपने प्रश्न का उत्तर देने दें: वर्चुअल मशीन चलाने वाले विंडोज के अंदर से देखने का कोई तरीका नहीं है कि भौतिक मशीन से जुड़े प्रोसेसर पर कितना समय होता है, जिस पर हाइपरवाइजर अन्य चीजें करने में खर्च करता है, जब तक कि विशेष वर्चुअल टूल / सेवाओं या वर्चुअलाइजेशन-जागरूक उपकरण आपके विशेष हाइपरवाइजर के लिए अतिथि VM और में स्थापित हैंविशेष हाइपरविजर, जिस पर अतिथि चल रहा है, उस डेटा को अतिथि के सामने लाता है। यहां तक ​​कि हाइपर-वी हाइपरविजर पर चलने वाले विंडोज अतिथि के पास उस समय के बारे में जानकारी तक तत्काल पहुंच नहीं होगी जो हाइपरविजर पर भौतिक प्रोसेसर अन्य चीजें कर रहे थे। (Voretaq7 को उद्धृत करने के लिए, ऐसा कुछ जो "चौथी दीवार को तोड़ता है।") भले ही विंडोज ग्राहक और सर्वर ऑपरेटिंग सिस्टम हाइपर-वी में वर्चुअलाइज्ड मेहमानों के रूप में चल रहे हों, जो सही एकीकरण सेवाओं / उपकरणों के साथ "ज्ञानोदय" का उपयोग करते हैं (जो कि शाब्दिक रूप से कर्नेल है। कोड परिवर्तन विशेष रूप से वीएम के लिए किए गए) जो भौतिक मेजबान के संसाधनों का उपयोग करने में अपने प्रदर्शन को बढ़ाते हैं, निचला रेखा यह है कि हाइपरविजर के पास नहीं हैअतिथि OS को इससे अधिक जानकारी देना चाहता है। इसका मतलब है कि हाइपरवाइजर को एक अतिथि वीएम को यह बताने की ज़रूरत नहीं है कि वह वीएम को सेवा देने के अलावा और क्या कर रहा है ... जब तक कि वह नहीं चाहता है। और भौतिक प्रोसेसर क्या कर रहे हैं, इसके बारे में जानकारी वीएम के दृष्टिकोण से एक मीट्रिक प्राप्त करने के लिए आवश्यक है जैसे कि "सीपीयू चोरी समय: vCPU समय का प्रतिशत एक भौतिक सीपीयू की प्रतीक्षा करता है।"

अतिथि OS कैसे जान सकता है, अगर यह भी महसूस नहीं किया कि यह वास्तव में वर्चुअलाइज्ड था?

दूसरे शब्दों में, अतिथि पर स्थापित सही एकीकरण उपकरण के बिना, अतिथि ओएस को यह भी पता नहीं होगा कि इसका सीपीयू वास्तव में एक वी सीपीयू है। यह भी नहीं पता होगा कि स्वयं के बाहर एक अन्य बल "सीपीयू" चुरा रहा है, जिससे कि अतिथि वीएम पर मीट्रिक मौजूद नहीं होगा।

वीएमवेयर ने इस डेटा को विंडोज मेहमानों के साथ-साथ ईएसएक्सआई 5.0 से भी उजागर करना शुरू कर दिया है। VMware एकीकरण उपकरण को अतिथि पर अद्यतन करने की आवश्यकता है। यहाँ एक संदर्भ है ; वे इसे "सीपीयू चोरी समय" के रूप में संदर्भित करते हैं।

हाइपर-वी जैसे हाइपरविजर मेहमानों को भौतिक संसाधन जैसे भौतिक प्रोसेसर या प्रोसेसर कोर के लिए सीधी पहुंच नहीं देता है। इसके बजाय हाइपरविजर उन्हें vDevs - वर्चुअल डिवाइस - जैसे vCPUs देता है।

क्यों का एक प्रमुख उदाहरण: कहते हैं कि एक वर्चुअल मशीन गेस्ट ओएस टीएलबी (ट्रांसलेशन लुक-साइड बफर) को फ्लश करने के लिए कॉल करता है जो एक भौतिक सीपीयू का एक भौतिक घटक है। यदि अतिथि OS को एक भौतिक प्रोसेसर पर संपूर्ण TLB को साफ़ करने की अनुमति दी गई थी , तो अन्य सभी VM के लिए नकारात्मक प्रदर्शन प्रभाव पड़ेगा जो कि उसी भौतिक TLB को साझा कर रहे थे। विंडोज के मामले में, अतिथि ओएस में उस कॉल का अनुवाद "हाइपरसेल" या "प्रबुद्ध" कॉल में किया जाता है, जिसकी व्याख्या हाइपरविजर द्वारा की जाती है, ताकि टीएलबी का केवल वह भाग जो उस वर्चुअल मशीन के लिए प्रासंगिक है, को फ्लश किया जाए।


(दिलचस्प बात यह है कि यह मेरे लिए संकेत है कि अतिथि वीएम जिनके पास उचित एकीकरण उपकरण और / या सेवाएं नहीं हैं, एक ही मेजबान पर अन्य सभी वीएम के प्रदर्शन को प्रभावित करने की क्षमता हो सकती है, लेकिन यह पूरी तरह से इस विषय के दायरे से बाहर है। ।)


यह कहने के लिए कि आप अभी भी हाइपर-वी होस्ट में उस समय का पता लगा सकते हैं जो एक वर्चुअल प्रोसेसर एक वास्तविक प्रोसेसर के उपलब्ध होने के इंतजार में बिताता है ताकि इसे चलाने का समय निर्धारित हो सके। लेकिन आप उस डेटा को केवल विंडोज हाइपर-वी हाइपरवाइजर पर देख सकते हैं। यदि यह अन्य हाइपरविज़र में यह देखना संभव है, तो मैं दूसरों को यह बताने का आग्रह करता हूं कि इसे उस हाइपरविज़र में कैसे देखा जाए और यह भी कि यह मेहमानों के संपर्क में है या नहीं। (संपादित करें 10/1/2013 सिर्फ ऐसा करने के लिए आपका धन्यवाद!

मेरी परीक्षण मशीन हाइपर-वी सर्वर 2012 थी, जो सर्वर 2012 का मुफ्त संस्करण है जो केवल कोर और हाइपर-वी की भूमिका निभाता है। यह हाइपर-वी चलाने वाले किसी भी विंडोज सर्वर 2012 के समान प्रभावी है।

अपने माता पिता के विभाजन पर आग बबूला, शारीरिक मेजबान उर्फ। इस काउंटर को लोड करें:

Hyper-V Hypervisor Virtual Processor\CPU Wait Time Per Dispatch\*

आप देखेंगे कि उस हाइपरविजर पर प्रत्येक वर्चुअल मशीन के लिए उस काउंटर का एक उदाहरण होगा, साथ ही _Total। उस परफ़ॉर्म काउंटर की Microsoft परिभाषा है:

औसत समय (नैनोसेकंड में) एक आभासी प्रोसेसर के इंतजार में एक तार्किक प्रोसेसर पर भेजे जाने की प्रतीक्षा कर रहा था।

जाहिर है, आप चाहते हैं कि यह संख्या यथासंभव कम हो। कंप्यूटर के लिए, प्रतीक्षा लगभग एक अच्छी बात नहीं है।

हाइपरविजर पर अन्य प्रदर्शन काउंटर है कि आप की जाँच करना चाहते जाएगा Hyper-V Hypervisor Root Virtual Processor\% Guest Run Time, % Hypervisor Run Timeऔर % Total Run Time। ये काउंटर आपको उन प्रतिशतों के साथ प्रदान करते हैं जिनका उपयोग तथ्यों को निर्धारित करने के लिए किया जा सकता है जैसे कि "वास्तविक" प्रोसेसर एक वीएम या सभी वीएम की सर्विसिंग के अलावा अन्य चीजें करने में कितना समय बिताते हैं ।

तो निष्कर्ष में, जिस मीट्रिक को आप अतिथि वर्चुअल मशीन में देख रहे हैं, वह हाइपरविजर पर निर्भर करता है कि वह किस पर चल रहा है, क्या वह हाइपरवाइजर डेटा प्रदान करने का विकल्प चुनता है कि वह उस वीएम की सर्विसिंग के अलावा अपना समय कैसे बिताता है, और यदि अतिथि OS के पास सही वर्चुअलाइजेशन एकीकरण उपकरण / सेवाएं / ड्राइवर हैं जो यह महसूस करने के लिए पर्याप्त हैं कि हाइपरवाइजर उस डेटा को उपलब्ध करा रहा है।

मुझे पता है कि विंडोज गेस्ट पर कोई रास्ता नहीं है, इंटीग्रेशन टूल इंस्टॉल किया गया है या नहीं, यह देखने के लिए कि सेकंड या प्रतिशत के संदर्भ में कितना समय है, कि वीएम के मेजबान ने इसे सर्विसिंग में खर्च किया है या कुल भौतिक प्रोसेसर समय से संबंधित सर्विसिंग नहीं की है। (संपादित करें 10/1/2013: ESXi 5.0 या बेहतर एकीकरण उपकरण के माध्यम से अतिथि वीएम को इस डेटा को उजागर करता है। हालांकि हाइपर-वी पर अभी भी कुछ भी नहीं है।)


1
+1 - महाकाव्य जवाब महाकाव्य है
मार्क हेंडरसन

1
पूरी तरह से अन्वेषण के लिए +1, अत्यधिक सराहना की गई। ईसी 2 के बारे में यह स्पष्ट रूप से यूनिक्स / लिनक्स मेहमानों के लिए उबलता Xen paravirtualहै, जो कि एक पैरावर्चुअलाइज्ड डोमेन है (यानी पूर्ण वर्चुअलाइजेशन नहीं है, अतिथि ओएस को होस्ट पर चलाने के लिए संशोधित किया गया है), जहां चोरी का समय उपलब्ध है, बनाम विंडोज / FreeBSD / ... में चल रहे मेहमान Xen HVM, जो एक हार्डवेयर इम्यूलेटेड डोमेन है (अर्थात अतिथि OS होस्ट पर चलाने के लिए अनमॉडिफाइड है), जहाँ यह जाहिरा तौर पर नहीं है - तो एक निश्चित नकारात्मक उत्तर, अनुमान है कि क्या मायने रखता है। क्या मैं आपको सही ढंग से पढ़ा कि यह अंततः जोड़ा जा सकता है?
स्टीफन ओपल

2
यह सिद्धांत रूप में हो सकता है, लेकिन अपनी सांस को रोककर न रखें। जैसा कि मैंने कहा, इसके लिए यह आवश्यक है कि विक्रेता-विशिष्ट हाइपरविजर और विक्रेता-विशिष्ट अतिथि OS उस समन्वित प्रयास को अतिथि VM के भीतर से उपलब्ध भौतिक होस्ट के बारे में उपलब्ध कराने के लिए एक समन्वित प्रयास करें। wiki.xen.org/wiki/Xen_Kernel_Feature_Matrix
रयान रीज़

2
स्पर्शरेखा: VMware हाइपरवाइजर टीम को तैयार समय के रूप में चोरी करने के लिए संदर्भित करेगा - एक भौतिक सीपीयू द्वारा भौतिक सीपीयू की प्रतीक्षा की जा रही समय की मात्रा।
योलो पेरेडेम

1
यह मेनफ्रेम पर एक प्रसिद्ध विषय है। दशकों से मीट्रिक उपलब्ध है। इसे "सीपीयू पर प्रतीक्षा करें" कहा जाता है।

2

एफडब्ल्यूआईडब्ल्यू, मैंने सिर्फ हाइपर-वी के तहत चलने वाले एक विंडोज 2008r2 सर्वर के पर्फोन काउंटरों के माध्यम से देखा और कुछ भी चोरी से संबंधित समय नहीं देखा (या उस मामले के लिए वर्चुअलाइजेशन के लिए)।


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