लिनक्स के KVM के तहत चलने वाला मेरा विंडोज 7 वीएम सभी वर्चुअल प्रोसेसर का उपयोग क्यों नहीं करता है?


12

सब

जब से मैंने अपने VM से Windows 2008 सर्वर से Windows 7 (अंतिम) में माइग्रेट किया है, तब से मेरे सर्वर पर एक समस्या है: हालांकि मैंने VM को चार कोर सौंपे हैं और यह उन्हें देखने के लिए भी लगता है, ऐसा लगता है दो कोर है!

यह मेरे प्रोसेसर को पहचानता है लेकिन उनका उपयोग नहीं करता है!

क्या कोई मुझे बता सकता है कि यहाँ क्या हो रहा है? मुझे लगा कि यह KVM और विंडोज 7 के बीच कुछ असंगतता हो सकती है, लेकिन जब से यह आभासी प्रोसेसर को देखता है तो मैं सोचने लगा हूं ... कोई सुराग नहीं?

यहां प्रक्रिया प्रबंधक का स्क्रीनशॉट एक ही बॉक्स पर केवल दो कोर दिखा रहा है:

कार्य प्रबंधक


क्या आप सुनिश्चित हैं कि यह आपको दो दोहरे कोर प्रोक्स नहीं दिखा रहा है?
फोएबस

@ एफोएबस: मैंने आश्चर्यचकित किया, लेकिन फिर उन सभी संस्करणों की खिड़कियों पर जहां मैंने प्रोसेसर सेटअप की निगरानी में चार कोर देखने से पहले इस सेटअप को चलाया है, जो मैं यहां नहीं करता हूं।
jkp

जब आप प्रोसेसर मॉनिटर कहते हैं, तो क्या आपका मतलब है कि कार्य प्रबंधक का प्रदर्शन निगरानी अनुभाग? क्योंकि पूरी तरह से आपके स्क्रीनशॉट्स के आधार पर, आप दो, दो-कोर प्रोसेसर का सबूत दिखा रहे हैं। यदि ऐसा है, तो आपको प्रदर्शन मॉनीटर में सभी 4 कोर देखने चाहिए। यदि आप नहीं करते हैं, तो हाँ, कुछ गड़बड़ है।
फोएबस

@ एफिबस: हां, मेरा मतलब है कि कार्य प्रबंधक का प्रदर्शन निगरानी अनुभाग। निश्चित रूप से मेरे लिए
विस्की

जवाबों:


17

मुझे संदेह है कि प्रोसेसर को अलग-अलग सॉकेट में सिंगल कोर प्रोसेसर के रूप में प्रस्तुत किया जा रहा है। विंडोज 7 अल्टीमेट 2 सॉकेट सिस्टम को सपोर्ट करता है, इसलिए यह 2 प्रोसेसर का उपयोग करेगा।

मुझे नहीं पता कि क्या आप प्रोसेसर को पेश करने के लिए केवीएम को सिंगल क्वाड कोर सीपीयू या 2 ड्यूल कोर सीपीयू के रूप में कॉन्फ़िगर कर सकते हैं, जिससे समस्या का समाधान होना चाहिए।


1
यह सही है। ATM में टोपोलॉजी बदलने का कोई तरीका नहीं है।
लुका टेटामांति

1
वाह, मुझे यह नहीं पता था। इस मुद्दे पर अपनी उंगली को सही ढंग से रखने के लिए धन्यवाद। @ लुका: क्या आपको पता है कि इस तरह के समर्थन की योजना है? मैं वास्तव में अतिरिक्त दो कोर का उपयोग कर रहा हूं या वे बेकार जा रहे हैं?
jkp

2
@ लुका: वास्तव में क्यूमू 0.12 के बाद से आप टोपोलॉजी बदल सकते हैं। मैंने अपने यूजरस्पेस kvm घटकों को अपग्रेड किया है, लेकिन मुझे लगता है कि मुझे काम करने के लिए नए कर्नेल मॉड की आवश्यकता है .... वैसे भी, यह किया जा सकता है :)
jkp

आह, मस्त ... मुझे भी अपग्रेड करना चाहिए :)
लुका टेटामेंटी

ध्यान रखें कि आप नवीनतम kvm कर्नेल मॉड्यूल को अपने वर्तमान पुराने कर्नेल पर चला सकते हैं। आपको संभवतः अपने आप को मॉड्यूल को संकलित करना होगा जब तक आप अपने डिस्ट्रो के लिए एक रिपॉजिटरी नहीं पा सकते हैं जो आपके लिए बाइनरी है। लेकिन एक मॉड्यूल का निर्माण करना बहुत मुश्किल नहीं है।
3dinfluence

21

यदि आप टाइप करते हैं तो libvirt 0.8.3 पर:

virsh capabilities | grep topology

यह मेजबान की टोपोलॉजी को सूचीबद्ध करेगा:

<topology sockets='1' cores='4' threads='1'/>

संख्या सॉकेट, कोर प्रति सॉकेट, और थ्रेड प्रति कोर को संदर्भित करती है। इस पंक्ति को xml फ़ाइल में cpu प्रविष्टि में जोड़ें, ताकि सभी 4 कोर का उपयोग करने के लिए विंडोज़ की अनुमति हो, जैसे:

 <vcpu>4</vcpu>
 <cpu>
     <topology sockets='1' cores='4' threads='1'/>
 </cpu>

यह जानता था, लेकिन इसके बारे में भूल गया - अच्छी तरह से फिर से सर्वरफॉल्ट और उन सभी लोगों को यह सब भयानक सामान लिख रहा है। पारितोषिक के लिए धन्यवाद!
फेन

1
मैंने अपने आरएचईएल 7.2 मशीन पर यह कोशिश की। <topology sockets='1' cores='4' threads='1'/>मेरे xml में जोड़ा गया । virsh capabilities | grep topologyदिखाता है <topology sockets='1' cores='6' threads='2'/>। CRITICAL: एक प्रदर्शन किया kill -HUP nnnnnजहां nnnnn मेरी libvirtd प्रक्रिया का PID है। वीएम शुरू किया। इसने काम कर दिया। +1! धन्यवाद! ... लेकिन एक HUP संकेत या पुनरारंभ के साथ libvirtd को किक करना मत भूलना!
माइक एस

4

टोपोलॉजी सेटिंग्स पूरी तरह से Ubuntu-15.04 के बाद से पुण्य-प्रबंधक में समर्थित हैं।

पुण्य-प्रबंधक से> सीपीयू> टोपोलॉजी:

  • जाँच करें: मैन्युअल रूप से CPU टोपोलॉजी सेट करें
  • कुर्सियां: 2
  • कोस: २
  • सूत्र: 2

पुण्य-प्रबंधक में निम्नलिखित सेटिंग्स से बनाया गया है। आपको इसे वायरल एडिट के साथ दर्ज करने की आवश्यकता नहीं है।

<vcpu placement='static'>8</vcpu>
<cpu mode='host-model'>
  <model fallback='allow'/>
  <topology sockets='2' cores='2' threads='2'/>
</cpu>

टोपोलॉजी को अपडेट के बाद विंडोज़ द्वारा मान्यता दी जा रही है, और फिर से वर्चुअल सीपीयू को 2 सॉकेट तक सीमित कर दिया गया है।

इसे ठीक करने के लिए, kvm फीचर को छिपाने के लिए sh virsh edit ’का उपयोग करें, और हाइपर सुविधाओं को जोड़ें। एक पूर्ण शटडाउन और विंडोज़ रिबूट के बाद वीएम फिर से कई सीपीयू को पहचान लेगा।

लिनक्स के KVM के तहत चलने वाला मेरा विंडोज 7 वीएम सभी वर्चुअल प्रोसेसर का उपयोग क्यों नहीं करता है?

<features>
  <acpi/>
  <apic/>
  <hyperv>
    <relaxed state='on'/>
    <vapic state='on'/>
    <spinlocks state='on' retries='8191'/>
  </hyperv>
  <kvm>
    <hidden state='on'/>
  </kvm>
</features>

2

RHEL / CentOS 5.5 (kvm> = 83-164.el5) में kvm बाइनरी "-smp N, cores = N" विकल्प का भी समर्थन करता है (पैकेज में बैकपैक पैच हैं); हालाँकि, libvirt संस्करण डोमेन में <टोपोलॉजी> तत्व का समर्थन नहीं करता है। वर्कअराउंड / usr / libexec / kvm के लिए एक रैपर स्क्रिप्ट बनाना है जो उपयुक्त विकल्प जोड़ता है और उस स्क्रिप्ट को डिफ़ॉल्ट पथ के बजाय <emulator> तत्व में निर्दिष्ट करता है।


1

यह ध्यान देने योग्य है कि उबंटू 10.4 (ल्यूसिड) में संस्करण 0.7.5 का एफर्ट है, जबकि टोपोलॉजी के लिए समर्थन को संस्करण 0.7.6 में लिबरविर्ट में जोड़ा गया था। उबंटू 10.10 (मावेरिक) में 0.8.3 लिबावर्ट है और इसलिए बिना किसी आवरण के XML में टोपोलॉजी विनिर्देश का सीधे समर्थन करने में सक्षम होना चाहिए।

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