KVM / Qemu, Ubuntu: अधिक अतिथि CPU डिस्क-आई / ओ को तेजी से क्यों बढ़ाते हैं?


9

हमारे पास एक हार्टबीट / DRBD / पेसमेकर / KVM / Qemu / libvirt क्लस्टर है जिसमें दो नोड्स हैं। प्रत्येक नोड निम्न पैकेज / संस्करणों के साथ Ubuntu 12.04 64 बिट चलाता है:

  • कर्नेल 3.2.0-32-जेनेरिक # 51-उबंटू एसएमपी
  • DRBD 8.3.11
  • क्यूमू-केवीएम 1.0 + नॉरमोम्स-0ubuntu14.3
  • libvirt 0.9.13
  • पेसमेकर 1.1.7
  • दिल की धड़कन 3.0.5

आभासी मेहमान Ubuntu 10.04 64 बिट और Ubuntu 12.04 64 बिट चला रहे हैं। हम बेहतरीन CPU प्रदर्शन प्राप्त करने के लिए वर्चुअल मेहमानों को होस्ट CPU की क्षमताओं को पारित करने के लिए एक libvirt सुविधा का उपयोग करते हैं।

अब यहाँ इस क्लस्टर पर एक सामान्य सेटअप है:

  • वीएम "मॉनिटरिंग" में 4 वीसीपीयू हैं
  • VM "मॉनिटरिंग" डिस्क इंटरफ़ेस के रूप में आइड का उपयोग करता है (हम वर्तमान में स्पष्ट कारणों से Virtio पर स्विच कर रहे हैं)

हमने हाल ही में कुछ सरल परीक्षण किए हैं। मुझे पता है कि वे पेशेवर नहीं हैं और उच्च मानकों तक नहीं पहुंचते हैं, लेकिन वे पहले से ही एक मजबूत प्रवृत्ति दिखाते हैं:

नोड A, VM "bla" चला रहा है, Node B, VM "मॉनिटरिंग" चला रहा है

जब हम VM "bla" से VM "मॉनीटरिंग" की फाइल को rsync करते हैं तो हम केवल 12 MB / s प्राप्त करते हैं। जब हम एक साधारण dd प्रदर्शन करते हैं, तो VM के "मॉनिटरिंग" के अंदर = / dev / null of = / tmp / blubb हम लगभग 30 MB / s प्राप्त करते हैं।

फिर हमने वीएम "मॉनिटरिंग" में 4 और वीसीपीयू जोड़े और इसे पुनः आरंभ करें। वीएम "मॉनिटरिंग" में अब 8 वीसीपीयू हैं। हमने निम्नलिखित परिणामों के साथ परीक्षण फिर से चलाया: जब हम VM "bla" से VM "मॉनिटरिंग" में एक फाइल rsync करते हैं, तो हम अब 36 एमबी / एस प्राप्त करते हैं। जब हम एक साधारण dd करते हैं, तो VM के "मॉनिटरिंग" के अंदर = / dev / null of / / tmp / blubb करते हैं, अब हम लगभग 61 MB / s प्राप्त करते हैं।

मेरे लिए, यह प्रभाव काफी आश्चर्यजनक है। यह कैसे आता है कि जाहिरा तौर पर इस आभासी अतिथि के लिए अधिक वर्चुअल सीपीयू जोड़ने का मतलब है कि वीएम के अंदर अधिक डिस्क प्रदर्शन है?

मेरे पास इसके लिए कोई स्पष्टीकरण नहीं है और मैं वास्तव में आपके इनपुट की सराहना करूंगा। मैं समझना चाहता हूं कि इस प्रदर्शन के बढ़ने का क्या कारण है क्योंकि मैं इस व्यवहार को 100% पुन: पेश कर सकता हूं।


2
अन्य चर को खत्म करने में मदद करने के लिए iozone या bonnie ++ जैसे उद्देश्य-निर्मित बेंचमार्किंग टूल का उपयोग करें ।
ewwhite

यह दिलचस्प होगा कि वास्तविक सीपीयू लोड कैसे दिखता है ... एक छिपी हुई जगह में आरएसयू बाउंड को पेश किया जाता है (rsync प्लस शायद ssh निश्चित रूप से एक हद तक है, इसलिए नेटवर्क ड्राइवरों को इस तरह पेश किया जाता है, dd अप्रत्याशित सीपीयू बाउंड चीजें भी कर सकता है। ...), या यह वास्तव में चीजें हैं जो कम से कम निष्पादन धागे उपलब्ध होने के कारण एक-दूसरे के लिए इंतजार कर रहे हैं?
रैडकंडबोमेन

3
चलाने kvm_traceको देखने के लिए कैसे की संख्या IO_Exitsमें परिवर्तन जब आप सीपीयू संख्या बदल जाते हैं। मुझे लगता है कि यह इसलिए है क्योंकि आप IDE का उपयोग कर रहे हैं, जो अतिथि CPU के साथ अनुसूचित हो जाता है। गुण के साथ प्रदर्शन सुसंगत होना चाहिए, और जब डेटा-प्लेन क्यूमू में होता है, तो इसे काफी बढ़ावा मिलेगा। एक और अनुमान इस तथ्य पर हो सकता है कि आप एक वितरण का उपयोग कर रहे हैं जो एक छोटी गाड़ी वर्चुअलाइजेशन स्टैक के लिए जाना जाता है।
dyasny

@ ewwhite: हाँ, पेशेवर परीक्षण चलाना एक अच्छा विकल्प होगा। हालाँकि, मैं पहले यह समझना चाहता हूं कि यह I / O व्यवहार क्यों होता है। @ rachandboneman: जब मैंने आखिरी बार देखा, तो 4 सीपीयू में बहुत अधिक प्रतीक्षा मूल्य (लगभग 70-80%) था। @dyasny: धन्यवाद, मैं कोशिश करूँगा। मैं कैसे जांच सकता हूं कि डेटा-प्लेन सक्रिय है / वर्तमान में उपयोग किया जाता है?
वैलेंटाइन

डेटा-प्लेन अब के लिए प्रायोगिक है, और मुझे पूरा यकीन है कि इसे लेने वाला पहला वितरण फेडोरा होगा। pl.digipedia.org/usenet/thread/11769/28329
dyasny

जवाबों:


9

मैं बहुत मोटा विचार / स्पष्टीकरण दूंगा।

ओपी स्थिति में, वीएम के भीतर मापने के अलावा, मेजबान को भी देखना चाहिए।

इस मामले में, हम मान सकते हैं कि निम्नलिखित सही हैं

  1. सभी परीक्षण में, होस्ट I / O (डिस्क) बैंडविड्थ अधिकतम नहीं है। VM के रूप में ( "monitoring") I / O अधिक सीपीयू के साथ बढ़ता है जो इसे आवंटित किया गया है। यदि होस्ट I / O पहले से ही अधिकतम था, तो कोई I / O प्रदर्शन लाभ नहीं होना चाहिए।
  2. "bla"क्या सीमित कारक नहीं है जैसा कि "monitoring"I / O प्रदर्शन में बदलाव के बिना सुधार हुआ है"bla"
  3. सीपीयू प्रदर्शन लाभ के लिए मुख्य कारखाना है (ओपी मामले में) चूंकि आई / ओ बोतल गर्दन नहीं है, और ओपी किसी भी मेमोरी साइज में बदलाव का उल्लेख नहीं करता है। लेकिन क्यों? या कैसे?

अतिरिक्त कारक

  1. Read से अधिक समय लिखें Read यह VM और host के लिए समान है। इसे अत्यंत सरल शब्दों में रखें: VM पढ़ने और लिखने के लिए मेजबान की प्रतीक्षा करता है।

क्या होता है जब अधिक सीपीयू को सौंपा जाता है "monitoring"?

जब "monitoring"अधिक CPU आवंटित किया जाता है, तो यह अधिक प्रसंस्करण शक्ति प्राप्त करता है, लेकिन यह I / O के लिए अधिक प्रसंस्करण समय भी प्राप्त करता है

इससे कोई लेना-देना नहीं है rsyncक्योंकि यह एक एकल कार्यक्रम है।

यह बढ़ी हुई सीपीयू शक्ति का उपयोग करने वाली आई / ओ परत है, या अधिक सटीक रूप से, वृद्धि हुई प्रसंस्करण समय।

यदि "monitoring"परीक्षण के दौरान सीपीयू मॉनिटरिंग प्रोग्राम (जैसे। टॉप) का उपयोग किया जाता है , तो यह एक नहीं, बल्कि सभी सीपीयू उपयोग को बढ़ाएगा, और% वा को भी दिखाएगा। % वा प्रतीक्षा समय I / O पर खर्च होता है।

यह प्रदर्शन वृद्धि तभी होगी जब आपका होस्ट I / O अधिकतम नहीं होगा। बाहर।

मुझे केवीएम साइट में सीपीयू शेड्यूलिंग नहीं मिल रही है, लेकिन इस ब्लॉग का उल्लेख है कि केवीएम सीएफएस और सीग्रुप का उपयोग कर रहा है, निम्नलिखित उद्धरण है

KVM के भीतर, प्रत्येक vcpu को एक Linux प्रक्रिया में मैप किया जाता है जो बदले में virtualisation के लिए आवश्यक 'धुआं और दर्पण' बनाने के लिए हार्डवेयर सहायता का उपयोग करता है। जैसे, एक vcpu CFS के लिए सिर्फ एक और प्रक्रिया है और महत्वपूर्ण रूप से cgroups के लिए भी है, जो एक संसाधन प्रबंधक के रूप में, लिनक्स को संसाधनों के आवंटन का प्रबंधन करने की अनुमति देता है - आमतौर पर आनुपातिक रूप से अवरोध आवंटन निर्धारित करने के लिए। cgroups मेमोरी, नेटवर्क और I / O पर भी लागू होते हैं। प्रक्रियाओं के समूहों को प्रक्रियाओं के पदानुक्रमित समूहों के लिए संसाधन आवंटन आवश्यकताओं को लागू करने के लिए एक समयबद्धन समूह का हिस्सा बनाया जा सकता है।

संक्षेप में, किसी दिए गए समय में अधिक सीपीयू = अधिक सीपीयू समय = अधिक I / O समय स्लॉट।


इस उत्तर को लिखने के लिए धन्यवाद। "अधिक वीसीपीयू का अर्थ है I / O के लिए अधिक प्रसंस्करण समय" वह स्पष्टीकरण है जिसकी मुझे तलाश थी। इनाम के लायक!
वैलेंटाइन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.