KVM: कौन से CPU फीचर्स VMs को बेहतर बनाते हैं?


21

हम निम्न मापदंडों के साथ Ubuntu 12.04 का उपयोग कर रहे हैं:

  • डेल R910
  • कर्नेल 3.2.0-25-जेनेरिक # 40-उबटन एसएमपी x86_64 x86_64 x86_64 GNU / लिनक्स
  • kvm 1: 84 + dfsg-0ubuntu16 + 1.0 + noroms + 0ubuntu13
  • qemu-kvm 1.0 + noroms-0ubuntu13
  • क्यूमू-सामान्य 1.0 + नॉरमोम्स-0ubuntu13
  • qemu-kvm 1.0 + noroms-0ubuntu13
  • 4 x इंटेल (R) Xeon (R) CPU E7- 4870 @ 2.40GHz (प्रत्येक 10 भौतिक कोर, HT और Intel VT सक्षम)
  • विंडोज मेहमानों के पास वर्तमान में कोई Virtio नहीं है, लेकिन यह जल्द ही बदल जाएगा

हम इस मशीन पर कई विंडोज मेहमान चला रहे हैं, उनमें से एक विंडोज 2003 32 बिट, एक और विंडोज 2008 (64 बिट) है। वर्तमान में हम प्रदर्शन के मुद्दों से जूझ रहे हैं और सीपीयू मॉडल के साथ खेल रहे हैं।

हम आमतौर पर अपने विंडोज 32 बिट गेस्ट के लिए "qemu-system-x86_64 का उपयोग करते हैं, जैसे:

/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...] 

इस अतिथि का प्रदर्शन थोड़ा कम निकला। हमने अभी तक कोई भी बेंचमार्क नहीं चलाया था, लेकिन हम कहते हैं कि वीएम के अंदर बड़ी मात्रा में डेटा (फाइल) को एक डायरेक्टरी से दूसरे तक कॉपी करना तब और अधिक तेज हो जाता है जब हम सीपीयू मॉडल को "-क्यूपी क्यूमू 32" से "-पीयूपी नेहैलम" में बदल देते हैं। "। फाइलें जो लगभग 2: 40h लेती थीं अब कॉपी करने के लिए 40 मिनट के भीतर कॉपी करें। बेशक यह एक उच्च गुणवत्ता की परीक्षा नहीं है और अधिक पेशेवर प्रयास करने के लिए बहुत जगह है। लेकिन यह एक स्पष्ट संकेतक है जो सही सीपीयू मॉडल चुनने से मेहमान के प्रदर्शन को भारी प्रभावित कर सकता है।

अब मैं उत्सुक हो गया और भागा:

qemu-x86_64 -cpu ?
x86           [n270]
x86         [athlon]
x86       [pentium3]
x86       [pentium2]
x86        [pentium]
x86            [486]
x86        [coreduo]
x86          [kvm32]
x86         [qemu32]
x86          [kvm64]
x86       [core2duo]
x86         [phenom]
x86         [qemu64]

तथा:

kvm -cpu ?model
 x86       Opteron_G3  AMD Opteron 23xx (Gen 3 Class Opteron)
 x86       Opteron_G2  AMD Opteron 22xx (Gen 2 Class Opteron)
 x86       Opteron_G1  AMD Opteron 240 (Gen 1 Class Opteron)
 x86          Nehalem  Intel Core i7 9xx (Nehalem Class Core i7)
 x86           Penryn  Intel Core 2 Duo P9xxx (Penryn Class Core 2)
 x86           Conroe  Intel Celeron_4x0 (Conroe/Merom Class Core 2)
 x86           [n270]  Intel(R) Atom(TM) CPU N270   @ 1.60GHz
 x86         [athlon]  QEMU Virtual CPU version 1.0
 x86       [pentium3]
 x86       [pentium2]
 x86        [pentium]
 x86            [486]
 x86        [coreduo]  Genuine Intel(R) CPU           T2600  @ 2.16GHz
 x86          [kvm32]  Common 32-bit KVM processor
 x86         [qemu32]  QEMU Virtual CPU version 1.0
 x86          [kvm64]  Common KVM processor
 x86       [core2duo]  Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
 x86         [phenom]  AMD Phenom(tm) 9550 Quad-Core Processor
 x86         [qemu64]  QEMU Virtual CPU version 1.0

इन सभी विभिन्न संस्करणों के साथ, यह अनुमान लगाना थोड़ा कठिन है। "नेहेल्म" उस सूची में सबसे अधिक प्रदर्शन करने वाला लगता है। अब मुझे आश्चर्य है, कैसे बताएं कि मेरे अतिथि के लिए कौन सा सीपीयू मॉडल सबसे अच्छा है? इंटरनेट को ब्राउज़ करते हुए, मुझे निम्नलिखित पुन: स्रोत मिले:

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

तो, अनुभवी केवीएम प्रवेश क्या सुझाते हैं? क्या एक सुनहरा नियम या यहां तक ​​कि एक मैट्रिक्स भी है, जैसे "यह मॉडल उस अतिथि ओएस के लिए सबसे अच्छा है"?

मेरी क्षमा याचना अगर मुझे यह जानकारी अपने आप मिल सकती है - मैंने विभिन्न Google खोजों को चलाया और कई वेबसाइटों को ब्राउज़ किया। मुझे कुछ ऐसा नहीं मिल रहा था जो मेरे सवाल का जवाब देता।


क्यों -cpu स्विच के साथ परेशान सभी? बस इसे बाहर छोड़ दें।
Psusi

1
इससे परेशान क्यों नहीं? Afaik यह प्रदर्शन में सुधार ला सकता है।
वैलेंटाइन

अगर इसे चीजों को छोड़ना और उनका अनुकरण करना है, तो यह प्रदर्शन को चोट पहुंचाने वाला है। इसके बिना एक कोशिश दे।
Psusi

2
मुझे अभी पता चला है कि libvirt पैरामीटर "-host qemu32" को स्वचालित रूप से जोड़ता है, क्योंकि हम इसे सेट नहीं करते हैं।
वैलेंटाइन

3
@psusi: अभी-अभी इसका परीक्षण किया है ... जब मैं -cpu स्विच को छोड़ देता हूं, तो प्रदर्शन उतना ही अच्छा होता है जितना मैं सबसे अच्छा सीपीयू मॉडल चुनता हूं।
वैलेंटाइन

जवाबों:


13

यह वास्तव में काफी सरल है। सजातीय समूहों और एकल होस्ट सेटअप के लिए hostविकल्प का उपयोग करें । मिश्रित समूहों के लिए, सबसे कम उपलब्ध सीपीयू संस्करण का उपयोग करें, इसलिए यदि एक होस्ट पेन्नी है और दूसरा नेहेल्म है, तो दोनों के लिए पेन्री का उपयोग करें।

यदि आप RHEV या oVirt का उपयोग कर रहे हैं, तो यह पहले से ही बनाया गया है। VMWare ने इसे "EVC" कहा है और इसे एक बड़ी विशेषता के रूप में स्थान देता है।

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

[ऑफटॉप] वितरण की आपकी पसंद पर मैंने पहले ही एक और धागे में टिप्पणी की है [/ offtop]


धन्यवाद डायस्नी, उम्मीद कर रहा था कि आप जवाब देंगे और मुझे किसी प्रकार का "सुनहरा नियम" प्रदान करेंगे!
वैलेंटाइन

11

वर्तमान में विंडोज के मेहमानों के पास कोई पुण्य नहीं है

कुछ भी tweaking के साथ और अधिक समय खोना नहीं है।
Virtio ड्राइवर स्थापित करें और वापस आएं। यह अंतर इतना बड़ा है कि अब आप जितनी भी वृद्धि पा सकते हैं उसका कोई मतलब नहीं होगा।

हमारे सर्वरों में से एक के साथ एक उदाहरण:
- बिना गुण के एक W2k3 लगभग 10 टर्मिनल सर्वर उपयोगकर्ताओं को संभाल सकता है
- गुणियो के साथ, एक ही ओएस वाली एक ही मशीन वर्तमान में 120 से 125 उपयोगकर्ताओं को थोड़ा धीमा कर देती है। और हमने SQL Server एक ही भौतिक कंप्यूटर को चलाने के लिए एक और वर्चुअल मशीन जोड़ी


संकेत के लिए धन्यवाद। हां, VirtIO को आसानी से सक्षम होना चाहिए, लेकिन हम Windows 2003 अतिथि के साथ कुछ समस्याओं में चल रहे हैं जिन्हें पहले हल किया जाना चाहिए। इसके अलावा, मैं सीपीयू मॉडल विषय पर स्पष्टीकरण चाहता हूं।
वैलेंटाइन

यह एक कारण है कि मैं हाइपर-वी का उपयोग करता हूं। 2008 के बाद से इसका मतलब NO INSTALL है और इसका मतलब है कि हाइपर-वी के लिए सभी ड्राइवर विंडोज अपडेट के साथ बनाए हुए हैं। अनुकूलता के मुद्दे घातक हैं।
टॉमॉम

@TomTom हाइपर-वी विंडोज चलाने के लिए प्रमाणित एकमात्र हाइपरविजर नहीं है। और इस संदर्भ में प्रमाणीकरण का अर्थ है SVVP / WHQL।
dyasny

1
नहीं, यह केवल एक बॉक्स है जो बॉक्स से बाहर काम करता है क्योंकि इसमें ड्राइवर पहले से स्थापित हैं;) प्लस मुझे लगता है कि एक्सईएन हाइपर-वी ड्राइवरों पर रंजकता के रूप में। एक अन्य बाहरी रूप से अपडेट किए गए तत्व को बनाए रखने के लिए नहीं होना वास्तव में एक अच्छी बात है। मुझे परवाह नहीं है कि क्या वे हस्ताक्षरित हैं - क्या मैं एक और प्रदाता को देखने के लिए आह नहीं करता हूं, जैसा कि सभी विंडोज़ अपडेट के माध्यम से आता है। ); मैं बस इतना चाहते एमएस तृतीय पक्ष softawre के लिए Windows अद्यतन खोलता था
टॉम टॉम

1
जब से मुझे यकीन है कि आपने स्लिपस्ट्रीमिंग और वीएम टेम्पलेट्स के बारे में सुना है, मैं (लगभग) उन का उल्लेख नहीं करूंगा :) हाइपर-वी के साथ मेरी समस्या लिनक्स मेहमानों का बेहद खराब समर्थन है।
डायसनी

8

Qemu उसी तरह से काम नहीं करता है जैसे कई अन्य हाइपरविजर करते हैं। शुरुआत के लिए, यह पूर्ण अनुकरण प्रदान कर सकता है। उदाहरण के लिए, आप ARM प्रोसेसर पर x86 कोड चला सकते हैं। जब केवीएम मोड में, जैसा कि आप इसका उपयोग कर रहे हैं, यह वास्तव में ऐसा नहीं करता है ... प्रोसेसर को कोई फर्क नहीं पड़ता कि क्या हुआ है, लेकिन ओएस को जो बताया गया है वह -cpuध्वज द्वारा बदल दिया जाएगा ।

यदि आप तेज गति चाहते हैं, तो अपने वास्तविक प्रोसेसर के लिए वर्चुअल प्रोसेसर की क्षमताओं को यथासंभव सर्वोत्तम रूप से आज़माना और मिलान करना एक प्रारंभिक बिंदु है। यह उन मामलों को कम करेगा जहां उप-इष्टतम ऑपकोड्स को कार्यों को चलाने के लिए कहा जाता है, और उन ओपकोड को भी कम करेगा जो आपके हार्डवेयर को पहले किसी और चीज़ में अनुवादित करने के लिए संभव नहीं हैं। चूँकि आपका Xeon प्रोसेसर का मॉडल 2011 की शुरुआत में जारी किया गया था, यह संभवतः कोर i7 श्रृंखला के साथ ज्यादातर इन-लाइन का समर्थन करता है। उसके लिए, मैं कहूंगा कि नेह्मल वास्तुकला आपका सबसे अच्छा अनुकरण है।

आपके किसी लिंक से उद्धृत ( ट्यूनिंग KVM ):

अतिथि के लिए सभी उपलब्ध होस्ट प्रोसेसर सुविधाओं को पास करने के लिए, कमांड लाइन स्विच का उपयोग करें

 qemu -cpu host

यदि आप संगतता बनाए रखना चाहते हैं, तो आप अपने अतिथि के लिए चयनित सुविधाओं को उजागर कर सकते हैं। यदि आपके सभी मेजबानों में ये विशेषताएं हैं, तो संगतता बरकरार है:

 qemu -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic

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

हालांकि, अधिकांश समय, आप से चिपके रहना चाहते हैं -cpu host। सीपीयू को कम उपलब्ध झंडे के साथ निर्दिष्ट करने का मतलब है कि एप्लिकेशन उन विशेषताओं का उपयोग करने से बचेंगे जो उन्हें तेज बना सकते हैं।


4
वह केवीएम का उपयोग कर रहा है, जिसे उन वर्चुअलाइजेशन एक्सटेंशन की आवश्यकता होती है और वे एमुलेशन नहीं करते हैं; भले ही यह qemu पर आधारित हो
जेवियर

1
अभी भी +1 वोट प्रयासों और उपयोग के लिए -cpu मेजबान की सिफारिश के लिए!
वैलेंटाइन

3

आपको '-cpu होस्ट' विकल्प भ्रमित हो रहा है। यह विकल्प केवल आपके होस्ट सिस्टम के लिए विशिष्ट सभी CPU सुविधाओं को सक्षम नहीं करता है, यह उन सभी सुविधाओं को सक्षम करता है जो आपके CPU का समर्थन करता है और जो आपके CPU का समर्थन नहीं करता है, वे भी इसका अनुकरण कर सकते हैं।

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

स्रोत: http://wiki.qemu.org/Features/CPUModels


1
प्रारंभ में मुझे लगा कि यह उत्तर अनुदेश समर्थन के लिए संदर्भित है जैसे कि एसएसई समर्थन जो अनुकरण किया जा सकता है। लेकिन निश्चित रूप से इसका मतलब यह नहीं है कि आप केवीएम मोड या टीसीजी में चलते हैं और दोनों का मिश्रण नहीं। इसलिए मुझे लगता है कि यहाँ संदर्भित एम 2 x2apic जैसी चीजें हो सकती हैं जहाँ कोई h / w सपोर्ट नहीं है लेकिन कर्नेल इसे नकली बना सकता है। मैं केवल इसका उल्लेख करने की कोशिश करता हूं और उपरोक्त को स्पष्ट करता हूं क्योंकि इसने मुझे शुरू में भ्रमित किया था।
नील मैकगिल

-2

सेंटोस 6.7 मुझे डेल आर 9 10 पर उचित केवीएम + स्पाइस प्रदर्शन देता है। मुझे लगता है कि एक बार जब आप इसे एक शॉट देते हैं तो आप किसी और चीज़ (गंभीरता से) में वापस नहीं जाएंगे!

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