अविश्वसनीय रूप से कम केवीएम डिस्क प्रदर्शन (qcow2 डिस्क फ़ाइलें + गुण)


27

KVM अतिथि सेट करते समय मुझे कुछ गंभीर डिस्क प्रदर्शन समस्याएँ हो रही हैं। एक सरल का उपयोग करते हुए ddपरीक्षण, मेजबान कि qcow2 छवियों पर (एक मिरर RAID सरणी) रहते हैं पर विभाजन से अधिक पर लिखते हैं 120MB / s , जबकि मेरी अतिथि से लेकर लेखन हो जाता है 0.5 3MB / s

  • अतिथि को कुछ सीपीयू और 4 जी रैम के साथ कॉन्फ़िगर किया गया है और वर्तमान में कुछ और नहीं चल रहा है; यह इस समय पूरी तरह से न्यूनतम स्थापित है।
  • प्रदर्शन का उपयोग करके परीक्षण किया जाता है time dd if=/dev/zero of=/tmp/test oflag=direct bs=64k count=16000
  • अतिथि को गुण का उपयोग करने के लिए कॉन्फ़िगर किया गया है, लेकिन इससे प्रदर्शन पर कोई फर्क नहीं पड़ता है।
  • होस्ट विभाजन 4kb संरेखित किए गए हैं (और प्रदर्शन वैसे भी होस्ट पर ठीक है)।
  • डिस्क पर राइटबैक कैशिंग का उपयोग करते हुए रिपोर्ट किए गए प्रदर्शन को बड़े पैमाने पर बढ़ाता है, लेकिन मैं इसका उपयोग नहीं करना पसंद करूंगा; इसके बिना भी प्रदर्शन इससे बेहतर होना चाहिए।
  • मेजबान और अतिथि दोनों Ubuntu 12.04 LTS चला रहे हैं, जो कि qemu-kvm 1.0 + noroms-0ubuntu13 और libvirt 0.9.8-2ubuntu17.1 के साथ आता है।
  • होस्ट की समय सीमा IO शेड्यूलर सक्षम है और अतिथि के पास नहीं है।

वहाँ बहुत सारे मार्गदर्शक प्रतीत होते हैं, केवीएम के प्रदर्शन को छोटा करते हुए, और मैं अंततः वहां पहुँच जाऊंगा, लेकिन ऐसा लगता है कि मुझे इस समय इस से भी बेहतर प्रदर्शन मिलना चाहिए, इसलिए ऐसा लगता है कि कुछ पहले से ही बहुत गलत है।

अपडेट १

और अचानक जब मैं वापस जाता हूं और परीक्षण करता हूं, तो यह 26.6 एमबी / एस है; यह वैसा ही है जैसा मैंने w / qcrow2 की अपेक्षा की थी। यदि किसी को कोई समस्या हो सकती है (और अगर यह फिर से रहस्यमय तरीके से लौटता है) तो मैं सवाल छोड़ दूंगा।

अपडेट २

मैं qcow2 प्रदर्शन के बारे में चिंता करना बंद कर दिया और बस कच्ची छवियों के साथ RAID1 के शीर्ष पर LVM को काट दिया, फिर भी गुण का उपयोग करते हुए लेकिन कैश = 'कोई नहीं' और io = 'देशी' को डिस्क ड्राइव पर सेट करना। लिखें प्रदर्शन अब appx है। 135MB / s ऊपर के रूप में एक ही मूल परीक्षण का उपयोग कर रहा है, इसलिए यह पता लगाने में कोई बात नहीं है कि समस्या क्या थी जब यह इतनी आसानी से पूरी तरह से काम किया जा सकता है।


आपने उपयोग में वितरण और सॉफ़्टवेयर संस्करणों का उल्लेख नहीं किया है।
डायसनी जूल

संस्करणों पर कुछ जानकारी जोड़ी गई।
एल योबो

आह, के रूप में की उम्मीद है, ubuntu ... किसी भी मौका आप फेडोरा पर इस पुन: पेश कर सकते हैं?
डायस्नीज

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

वही तो मैं कह रहा हूँ। और किसी भी मामले में, यदि आप सर्वर ग्रेड ओएस के बाद
आरएचईएल की

जवाबों:


14

खैर, हाँ, qcow2 फाइलें धधकते तेज प्रदर्शन के लिए नहीं बनाई गई हैं। आपको कच्चे विभाजन (या, अधिमानतः, LVs) से बहुत बेहतर किस्मत मिलेगी।


3
जाहिर है, लेकिन वे भी बकवास करने के लिए नहीं हैं क्योंकि मैं या तो नंबर मिल रहा हूं।
एल योबो जूल

1
अधिकांश उदाहरण qcow2 के साथ समान प्रदर्शन दिखाते हैं, जो पुराने संस्करण पर एक महत्वपूर्ण सुधार प्रतीत होता है। KVM साइट पर linux-kvm.org/page/Qcow2 नंबर आ गए हैं जो कई मामलों के लिए तुलनीय समय दिखाते हैं।
एल योबो

1
18:35 (qcow2) बनाम 8:48 (कच्चा) "तुलनीय समय" है?
Womble

1
मैंने उन्हें RAID1 के शीर्ष पर LVM समर्थित कच्ची छवियों पर स्विच किया है, io शेड्यूलर को अतिथि पर सेट करने और होस्ट की समय सीमा पर सेट करने के लिए सेट किया है और यह अब 138 एमबी / एस पर लिखता है। मैं अभी भी नहीं जानता कि यह क्या था कि qcow2 के कारण 3MB / s की गति थी, लेकिन स्पष्ट रूप से इसे कच्चे का उपयोग करके साइडस्टेप किया जा सकता है, इसलिए मुझे उस दिशा में धकेलने के लिए धन्यवाद।
एल योबो

1
यह बहुत सच नहीं है - qemu गति में नवीनतम पैच qcow2 बहुत कुछ! हम लगभग बराबर हैं।
लाजप

7

QCOW2 के साथ शीर्ष प्रदर्शन कैसे प्राप्त करें :

qemu-img create -f qcow2 -o preallocation=metadata,compat=1.1,lazy_refcounts=on imageXYZ

सबसे महत्वपूर्ण एक प्रचार है जो qcow2 डेवलपर्स के अनुसार अच्छा बढ़ावा देता है। यह अब LVM के बराबर है ! ध्यान दें कि यह आमतौर पर आधुनिक (फेडोरा 25+) लिनक्स डिस्ट्रोस में सक्षम है।

इसके अलावा आप असुरक्षित कैश प्रदान कर सकते हैं यदि यह उत्पादन उदाहरण नहीं है (यह खतरनाक है और अनुशंसित नहीं है, केवल परीक्षण के लिए अच्छा है):

<driver name='qemu' cache='unsafe' />

कुछ उपयोगकर्ता रिपोर्ट करते हैं कि यह कॉन्फ़िगरेशन कुछ परीक्षणों में LVM / असुरक्षित कॉन्फ़िगरेशन को हराता है।

इन सभी मापदंडों के लिए नवीनतम QEMU 1.5+ आवश्यक है! फिर से, अधिकांश आधुनिक डिस्ट्रोस में ये हैं।


2
यह है नहीं उपयोग कैश = असुरक्षित करने के लिए एक अच्छा विचार है: एक अप्रत्याशित मेजबान शटडाउन होने पर कहर बरपाने कर सकते हैं पूरे अतिथि फाइल सिस्टम। यह है बहुत इसी तरह के प्रदर्शन, लेकिन काफी बेहतर विश्वसनीयता: उपयोग कैश = writeback करने के लिए बेहतर।
शोडणशोक

1
जैसा कि मैंने कहा है: यदि यह उत्पादन उदाहरण नहीं है (परीक्षण के लिए अच्छा है)
lzap

काफी उचित। मैंने इसे याद किया;)
षोडशशोक

6

मैंने इस सेटिंग के साथ qcow2 छवि के लिए शानदार परिणाम प्राप्त किए:

<driver name='qemu' type='raw' cache='none' io='native'/>

जो अतिथि कैश को अक्षम करता है और AIO (एसिंक्रोनस IO) को सक्षम करता है। आपकी ddआज्ञा से मुझे मेजबान पर 177MB / s और अतिथि को 155MB / s दिए गए। छवि को उसी LVM वॉल्यूम पर रखा गया है जहाँ होस्ट का परीक्षण किया गया था।

मेरा qemu-kvmसंस्करण स्टॉक उबंटू 12.04.2 LTS से 1.0+noroms-0ubuntu14.8कर्नेल 3.2.0-41-genericहै।


5
आपने "कच्ची" के लिए एक qcow2 छवि प्रकार सेट किया है?
एलेक्स

मुझे लगता है कि मैंने पुरानी प्रविष्टि की प्रतिलिपि बनाई है, मुझे लगता है कि गति लाभ समान होना चाहिए type='qcow2', क्या आप इसे संपादित करने से पहले जांच सकते हैं? मेरे पास इस तरह के कॉन्फ़िगरेशन के लिए अधिक पहुंच नहीं है - मैंने mount bindमेहमानों में वास्तविक देशी गति प्राप्त करने के लिए निर्देशिकाओं के साथ एलएक्ससी पर माइग्रेट किया ।
gertas

2

यदि आप अपने vms को एक कमांड के साथ चला रहे हैं, तो आप जिन तर्कों का उपयोग कर सकते हैं

kvm -drive फ़ाइल = / path_to.qcow2, अगर = गुण, कैश = बंद <...>

यह मुझे 3MB / s से 70MB / s तक मिला


2

पुराने Qemu / KVM संस्करणों पर, Qcow2 बैकेंड बहुत धीमा था जब प्रचार नहीं किया गया था, तो अधिक अगर बिना राइटबैक कैश सक्षम किया गया हो। अधिक जानकारी के लिए यहां देखें।

अधिक हाल ही में Qemu संस्करणों पर, Qcow2 फाइलें बहुत तेज हैं, यहां तक ​​कि जब कोई प्रचार (या मेटाडेटा-केवल प्रचार) का उपयोग नहीं कर रही है। फिर भी, LVM वॉल्यूम तेज बने हुए हैं।

कैश मोड पर एक नोट: राइटबैक कैश एक पसंदीदा मोड है, जब तक कि डिस्क कैश फ्लश / बाधाओं के लिए बिना या अक्षम समर्थन वाले अतिथि का उपयोग नहीं किया जाता है। व्यवहार में, Win2000 + मेहमान और कोई भी Linux EXT4, XFS या EXT3 + अवरोध माउंट विकल्प जुर्माना हैं। दूसरी ओर, कैश = असुरक्षित को कभी भी उत्पादन मशीनों का उपयोग नहीं किया जाना चाहिए , क्योंकि कैश फ़्लश का मेजबान सिस्टम को प्रचार नहीं किया जाता है। एक अप्रत्याशित मेजबान शटडाउन वास्तव में अतिथि की फाइल सिस्टम को नष्ट कर सकता है।


2

मैंने ठीक उसी मुद्दे का अनुभव किया। RHEL7 वर्चुअल मशीन के भीतर मेरे पास LIO iSCSI टारगेट सॉफ्टवेयर है जिससे अन्य मशीनें कनेक्ट होती हैं। अपने iSCSI LUN के लिए अंतर्निहित भंडारण (बैकस्टोर) के रूप में, मैंने शुरू में LVM का उपयोग किया था, लेकिन फिर आधारित चित्रों को दर्ज करने के लिए स्विच किया।

लम्बी कहानी छोटी: जब बैकिंग स्टोरेज virtio_blk (vda, vdb, आदि) से जुड़ी होती है, तो स्टोरेज कंट्रोलर - iSCSI क्लाइंट से iSCSI टारगेट से जुड़ने का प्रदर्शन मेरे वातावरण में था ~ 20 IOPS, थ्रूपुट (IO आकार के आधार पर) ~ 2- 3 MiB / s। मैंने वर्चुअल डिस्क कंट्रोलर को वर्चुअल मशीन में SCSI में बदल दिया है और मैं अपने iSCSI क्लाइंट से 1000+ IOPS और थ्रूपुट 100+ MiB / s प्राप्त करने में सक्षम हूं।

<disk type='file' device='disk'>
   <driver name='qemu' type='qcow2' cache='none' io='native'/>
   <source file='/var/lib/libvirt/images/station1/station1-iscsi1-lun.img'/>
   <target dev='sda' bus='scsi'/>
   <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.