संपादित करें: 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 या बेहतर एकीकरण उपकरण के माध्यम से अतिथि वीएम को इस डेटा को उजागर करता है। हालांकि हाइपर-वी पर अभी भी कुछ भी नहीं है।)