O'g'irlash: virtual mashinalardan protsessor vaqtini kim o'g'irlaydi

O'g'irlash: virtual mashinalardan protsessor vaqtini kim o'g'irlaydi

Salom! Men sizga virtual mashinalar ichidagi o'g'irlik mexanikasi va biz bulutli platformaning texnik direktori sifatida sho'ng'ishim kerak bo'lgan tadqiqot davomida aniqlagan ba'zi noaniq artefaktlar haqida oddiy so'zlar bilan aytib bermoqchiman. Mail.ru bulutli echimlar. Platforma KVM da ishlaydi.

CPU o'g'irlash vaqti - bu virtual mashina uni bajarish uchun protsessor resurslarini olmaydigan vaqt. Bu vaqt faqat virtualizatsiya muhitida mehmon operatsion tizimlarida hisoblanadi. Bu eng ko'p ajratilgan resurslar qayerga ketishining sabablari, hayotdagi kabi, juda noaniq. Ammo biz buni aniqlashga qaror qildik va hatto bir qator tajribalarni o'tkazdik. Endi biz o'g'irlik haqida hamma narsani bilamiz degani emas, lekin hozir sizga qiziq bir narsani aytib beramiz.

1. O'g'irlik nima

Shunday qilib, o'g'irlash virtual mashina ichidagi jarayonlar uchun protsessor vaqtining etishmasligini ko'rsatadigan ko'rsatkichdir. Ta'riflanganidek KVM yadro patchidaYashirinlik - bu gipervisor virtual mashina jarayonini bajarish uchun navbatga qo'ygan bo'lsa ham, asosiy operatsion tizimda boshqa jarayonlarni bajaradigan vaqt. Ya'ni, o'g'irlash jarayonni bajarishga tayyor bo'lgan vaqt va jarayonga protsessor vaqti ajratilgan vaqt o'rtasidagi farq sifatida hisoblanadi.

Virtual mashina yadrosi gipervisordan o'g'irlash ko'rsatkichini oladi. Shu bilan birga, gipervisor boshqa qanday jarayonlar ishlayotganini aniq ko'rsatmaydi, shunchaki "men band bo'lsam, sizga vaqt bera olmayman" deb aytadi. KVM-ga o'g'irlikni hisoblash uchun yordam qo'shildi yamalar. Bu erda ikkita asosiy nuqta bor:

  • Virtual mashina gipervisordan o'g'irlik haqida bilib oladi. Ya'ni, yo'qotishlar nuqtai nazaridan, virtual mashinadagi jarayonlar uchun bu turli xil buzilishlarga duchor bo'lishi mumkin bo'lgan bilvosita o'lchovdir.
  • Gipervisor virtual mashina bilan boshqa nima qilayotgani haqida ma'lumot almashmaydi - asosiysi, u bunga vaqt ajratmaydi. Shu sababli, virtual mashinaning o'zi o'g'irlik indikatoridagi buzilishlarni aniqlay olmaydi, bu raqobatdosh jarayonlarning tabiati bilan baholanishi mumkin.

2. O'g'irlik nima ta'sir qiladi

2.1. O'g'irlash hisobi

Aslini olganda, o'g'irlash protsessorning odatdagidan foydalanish vaqti bilan taxminan bir xil hisoblanadi. Qayta ishlash qanday ko'rib chiqilishi haqida ko'p ma'lumot yo'q. Ehtimol, chunki ko'pchilik bu savolni aniq deb hisoblaydi. Ammo bu erda ham tuzoqlar mavjud. Ushbu jarayon bilan tanishish uchun siz o'qishingiz mumkin Brendan Gregg maqolasi: foydalanishni hisoblashda siz ko'plab nuanslar va ushbu hisob quyidagi sabablarga ko'ra xato bo'ladigan holatlar haqida bilib olasiz:

  • Protsessor haddan tashqari qizib ketadi, bu tsikllarning o'tkazib yuborilishiga olib keladi.
  • Protsessorning soat chastotasini o'zgartiradigan turbo boostni yoqish/o'chirish.
  • SpeedStep kabi protsessor quvvatini tejovchi texnologiyalardan foydalanganda sodir bo'ladigan vaqt oralig'idagi o'zgarish.
  • O'rtacha hisoblash muammosi: bir daqiqadan foydalanishni 80% da baholash qisqa muddatli 100% portlashni yashirishi mumkin.
  • Spin blokirovkasi protsessorni qayta tiklashga olib keladi, lekin foydalanuvchi jarayoni uning bajarilishida hech qanday taraqqiyotni ko'rmaydi. Natijada, protsessorning protsessor vaqtini jismoniy iste'mol qilmasa ham, jarayon tomonidan hisoblangan protsessordan foydalanish yuz foizni tashkil qiladi.

Men o'g'irlik uchun shunga o'xshash hisob-kitobni tavsiflovchi maqola topmadim (agar bilsangiz, sharhlarda baham ko'ring). Ammo, manba kodiga ko'ra, hisoblash mexanizmi qayta ishlash bilan bir xil. Oddiy qilib aytganda, yadroga to'g'ridan-to'g'ri KVM jarayoni (virtual mashina jarayoni) uchun boshqa hisoblagich qo'shiladi, u KVM jarayonining CPU vaqtini kutayotgan davomiyligini hisoblaydi. Hisoblagich protsessor haqida ma'lumotni uning spetsifikatsiyasidan oladi va uning barcha belgilari virtual mashina jarayoni tomonidan foydalanilganligini tekshiradi. Agar hammasi bo'lsa, protsessor faqat virtual mashina jarayoni bilan band bo'lgan deb taxmin qilamiz. Aks holda, protsessor boshqa narsa qilayotganini xabar qilamiz, o'g'irlik paydo bo'ldi.

O'g'irlikni hisoblash jarayoni muntazam qayta ishlashni hisoblash bilan bir xil muammolarga duch keladi. Bunday muammolar tez-tez paydo bo'ladi, deb aytmaslik kerak, lekin ular tushkunlikka tushadi.

2.2. KVMda virtualizatsiya turlari

Keng ma'noda, virtualizatsiyaning uchta turi mavjud, ularning barchasi KVM tomonidan qo'llab-quvvatlanadi. O'g'irlikning paydo bo'lish mexanizmi virtualizatsiya turiga bog'liq bo'lishi mumkin.

Translatsiya. Bunday holda, virtual mashina operatsion tizimining jismoniy gipervisor qurilmalari bilan ishlashi quyidagicha sodir bo'ladi:

  1. Mehmon operatsion tizimi mehmon qurilmasiga buyruq yuboradi.
  2. Mehmon qurilma drayveri buyruqni oladi, qurilma BIOS uchun so'rovni yaratadi va uni gipervisorga yuboradi.
  3. Gipervisor jarayoni buyruqni jismoniy qurilma uchun buyruqqa tarjima qiladi va boshqa narsalar qatorida uni xavfsizroq qiladi.
  4. Jismoniy qurilma drayveri o'zgartirilgan buyruqni qabul qiladi va uni jismoniy qurilmaning o'ziga yuboradi.
  5. Buyruqlarni bajarish natijalari xuddi shu yo'l bo'ylab qaytib keladi.

Tarjimaning afzalligi shundaki, u har qanday qurilmaga taqlid qilish imkonini beradi va operatsion tizim yadrosini maxsus tayyorlashni talab qilmaydi. Lekin buning uchun, birinchi navbatda, tezlikda to'lashingiz kerak.

Uskuna virtualizatsiyasi. Bunday holda, apparat darajasidagi qurilma operatsion tizimdan buyruqlarni tushunadi. Bu eng tez va eng yaxshi usul. Ammo, afsuski, u barcha jismoniy qurilmalar, gipervisorlar va mehmon operatsion tizimlari tomonidan qo'llab-quvvatlanmaydi. Hozirgi vaqtda apparat virtualizatsiyasini qo'llab-quvvatlaydigan asosiy qurilmalar protsessorlardir.

Paravirtualizatsiya. KVM-da qurilma virtualizatsiyasining eng keng tarqalgan varianti va odatda mehmon operatsion tizimlari uchun eng keng tarqalgan virtualizatsiya rejimi. Uning o'ziga xosligi shundaki, ba'zi bir gipervizor quyi tizimlari bilan ishlash (masalan, tarmoq yoki disk steklari bilan) yoki xotira sahifalarini taqsimlash gipervisor API yordamida, past darajadagi buyruqlarni tarjima qilmasdan amalga oshiriladi. Ushbu virtualizatsiya usulining kamchiligi shundaki, mehmon operatsion tizimining yadrosi ushbu API yordamida gipervizor bilan bog'lanishi uchun o'zgartirilishi kerak. Ammo bu odatda mehmon operatsion tizimiga maxsus drayverlarni o'rnatish orqali hal qilinadi. KVM da bu API deyiladi virtio API.

Paravirtualizatsiya bilan, translyatsiya bilan solishtirganda, virtual mashinadan to'g'ridan-to'g'ri xostdagi gipervisor jarayoniga buyruqlar yuborish orqali jismoniy qurilmaga yo'l sezilarli darajada kamayadi. Bu virtual mashina ichidagi barcha ko'rsatmalarning bajarilishini tezlashtirish imkonini beradi. KVM-da bu faqat tarmoq yoki disk adapteri kabi ma'lum qurilmalar uchun ishlaydigan virtio API tomonidan amalga oshiriladi. Shuning uchun virtual mashinalar ichida virtio drayverlar o'rnatiladi.

Ushbu tezlashtirishning salbiy tomoni shundaki, virtual mashina ichida ishlaydigan barcha jarayonlar uning ichida qolmaydi. Bu o'g'irlash paytida urug'lanishga olib keladigan ba'zi maxsus effektlarni yaratadi. Men ushbu masalani batafsil o'rganishni boshlashni maslahat beraman Virtual kiritish-chiqarish uchun API: virtio.

2.3. "Adolatli" rejalashtirish

Gipervisordagi virtual mashina, aslida, Linux yadrosida rejalashtirish (jarayonlar o'rtasida resurslarni taqsimlash) qonunlariga bo'ysunadigan oddiy jarayon, shuning uchun uni batafsil ko'rib chiqaylik.

Linux 2.6.23 yadrosidan boshlab standart rejalashtiruvchiga aylangan CFS, Completely Fair Scheduler-dan foydalanadi. Ushbu algoritmni tushunish uchun siz Linux yadrosi arxitekturasini yoki manba kodini o'qishingiz mumkin. CFSning mohiyati protsessor vaqtini jarayonlar o'rtasida ularning bajarilish davomiyligiga qarab taqsimlashdan iborat. Jarayon qancha ko'p CPU vaqtini talab qilsa, u kamroq CPU vaqtini oladi. Bu barcha jarayonlarning "adolatli" bajarilishini ta'minlaydi - bir jarayon doimiy ravishda barcha protsessorlarni egallamaydi va boshqa jarayonlar ham bajarilishi mumkin.

Ba'zan bu paradigma qiziqarli artefaktlarga olib keladi. Uzoq vaqt davomida Linux foydalanuvchilari, ehtimol, kompilyator kabi resurs talab qiladigan ilovalarni ishga tushirishda ish stolida oddiy matn muharriri muzlatilganini eslashadi. Bu ish stoli ilovalarining resurs talab qilmaydigan vazifalari kompilyator kabi resurslarni faol iste'mol qiladigan vazifalar bilan raqobatlashgani sababli sodir bo'ldi. CFS buni adolatsiz deb hisoblaydi, shuning uchun u vaqti-vaqti bilan matn muharririni to'xtatadi va protsessorga kompilyator vazifalarini bajarishga imkon beradi. Bu mexanizm yordamida tuzatildi sched_autogroup, lekin protsessor vaqtini vazifalar o'rtasida taqsimlashning ko'plab boshqa xususiyatlari saqlanib qoldi. Aslida, bu CFS-da hamma narsa qanchalik yomon ekanligi haqidagi hikoya emas, balki protsessor vaqtini "adolatli" taqsimlash eng ahamiyatsiz vazifa emasligiga e'tiborni qaratishga urinish.

Rejalashtiruvchining yana bir muhim jihati - bu oldindan belgilab qo'yish. Bu protsessordan snickering jarayonini olib tashlash va boshqalarning ishlashiga imkon berish uchun kerak. Chiqarish jarayoni kontekstni almashtirish deb ataladi. Bunday holda, vazifaning butun konteksti saqlanib qoladi: stekning holati, registrlar va boshqalar, shundan so'ng jarayon kutishga yuboriladi va uning o'rnini boshqasi egallaydi. Bu OS uchun qimmat operatsiya bo'lib, kamdan-kam qo'llaniladi, ammo buning hech qanday yomon joyi yo'q. Tez-tez kontekstni almashtirish OSdagi muammoni ko'rsatishi mumkin, lekin odatda u uzluksiz bo'lib, alohida narsani ko'rsatmaydi.

Bitta haqiqatni tushuntirish uchun shunday uzoq hikoya kerak: jarayon halol Linux rejalashtiruvchisida qancha ko'p protsessor resurslarini iste'mol qilishga harakat qilsa, boshqa jarayonlar ham ishlashi uchun u tezroq to'xtatiladi. Bu to'g'ri yoki yo'qmi - bu turli xil yuklarda turlicha hal qilinishi mumkin bo'lgan murakkab savol. Windows-da, yaqin vaqtgacha, rejalashtiruvchi ish stoli ilovalarini ustuvor qayta ishlashga qaratilgan edi, bu esa fon jarayonlarini muzlatib qo'yishi mumkin edi. Sun Solaris besh xil toifadagi rejalashtiruvchilarga ega edi. Virtualizatsiyani ishga tushirganimizda, oltinchini qo'shdik, Adolatli ulush rejalashtiruvchisi, chunki oldingi beshta Solaris Zones virtualizatsiyasi bilan etarli darajada ishlamagan. kabi kitoblar bilan ushbu masalani batafsil o'rganishni boshlashni tavsiya etaman Solaris Internals: Solaris 10 va OpenSolaris yadro arxitekturasi yoki Linux yadrosini tushunish.

2.4. O'g'irlikni qanday kuzatish mumkin?

Har qanday boshqa protsessor ko'rsatkichlari kabi virtual mashina ichidagi o'g'irlikni kuzatish juda oddiy: har qanday protsessor ko'rsatkichlari vositasidan foydalanishingiz mumkin. Asosiysi, virtual mashina Linuxda. Ba'zi sabablarga ko'ra Windows o'z foydalanuvchilariga bu ma'lumotni bermaydi. πŸ™

O'g'irlash: virtual mashinalardan protsessor vaqtini kim o'g'irlaydi
Yuqori buyruqning chiqishi: protsessor yukining tafsilotlari, eng o'ng ustunda - o'g'irlash

Qiyinchilik gipervisordan ushbu ma'lumotni olishga harakat qilganda paydo bo'ladi. Siz asosiy kompyuterda o'g'irlashni bashorat qilishga urinib ko'rishingiz mumkin, masalan, O'rtacha yuklash (LA) parametri - bajarish navbatda kutilayotgan jarayonlar sonining o'rtacha qiymati. Ushbu parametrni hisoblash usuli oddiy emas, lekin umuman olganda, agar protsessor iplari soni bo'yicha normallashtirilgan LA 1 dan ortiq bo'lsa, bu Linux serveri biror narsa bilan ortiqcha yuklanganligini ko'rsatadi.

Bu jarayonlarning barchasi nimani kutmoqda? Aniq javob - bu protsessor. Lekin javob butunlay to'g'ri emas, chunki ba'zida protsessor bepul, lekin LA miqyosdan chiqib ketadi. Eslab qoling NFS qanday tushadi va LA qanday o'sadi. Xuddi shu narsa disk va boshqa kirish/chiqarish qurilmalari bilan sodir bo'lishi mumkin. Lekin, aslida, jarayonlar kirish-chiqarish qurilmasi bilan bog'liq bo'lgan jismoniy yoki mantiqiy, masalan, mutex kabi har qanday blokirovkaning tugashini kutishi mumkin. Bu, shuningdek, apparat darajasida blokirovkani (diskdan bir xil javob) yoki mantiqni (qulflash ibtidoiy deb ataladi, ular bir qator ob'ektlarni, mutex adaptiv va spinni, semaforlarni, shart o'zgaruvchilarni, rw qulflarini, ipc qulflarini o'z ichiga oladi. ...).

LA ning yana bir xususiyati shundaki, u operatsion tizimning o'rtacha ko'rsatkichi hisoblanadi. Masalan, bitta fayl uchun 100 ta jarayon raqobatlashadi, keyin esa LA=50. Bunday katta qiymat operatsion tizimning yomon ekanligini ko'rsatadi. Ammo boshqa egri yozilgan kodlar uchun bu oddiy holat bo'lishi mumkin, garchi u faqat yomon bo'lsa va operatsion tizimdagi boshqa jarayonlar zarar ko'rmaydi.

Ushbu o'rtacha (va bir daqiqadan kam bo'lmagan) tufayli, LA indikatori bo'yicha biror narsani aniqlash eng foydali vazifa emas, aniq holatlarda juda noaniq natijalar. Agar siz buni tushunishga harakat qilsangiz, Vikipediya va boshqa mavjud manbalardagi maqolalarda jarayonni chuqur tushuntirmasdan, faqat eng oddiy holatlar tasvirlanganini topasiz. Men barcha qiziqqanlarni yana yuboraman, bu erda Brendan Greggga  - quyidagi havolalarga o'ting. Kim ingliz tilida gapirishga dangasa - LA haqidagi mashhur maqolasining tarjimasi.

3. Maxsus effektlar

Endi biz duch kelgan o'g'irlikning asosiy holatlarini ko'rib chiqaylik. Men sizga yuqorida aytilganlarning barchasiga qanday amal qilishini va hipervisordagi ko'rsatkichlar bilan qanday bog'liqligini aytib beraman.

Qayta ishlash. Eng oddiy va eng keng tarqalgan: gipervisor qayta ishlatildi. Haqiqatan ham, ishlaydigan virtual mashinalar juda ko'p, ular ichida yuqori protsessor iste'moli, juda ko'p raqobat, LA foydalanish 1 dan ortiq (protsessor iplari bilan normallashtirilgan). Barcha virtual mashinalar ichidagi hamma narsa sekinlashadi. Gipervizordan uzatiladigan o'g'irlik ham o'sib bormoqda, yukni qayta taqsimlash yoki kimnidir o'chirish kerak. Umuman olganda, hamma narsa mantiqiy va tushunarli.

Paravirtualizatsiya va yagona misollar. Gipervizorda faqat bitta virtual mashina mavjud, u uning kichik qismini sarflaydi, lekin katta kiritish-chiqarish yukini ishlab chiqaradi, masalan, diskda. Va biron bir joyda 10% gacha bo'lgan kichik o'g'irlik paydo bo'ladi (bir nechta tajribalar shuni ko'rsatadiki).

Vaziyat qiziq. O'g'irlash bu erda aynan paravirtuallashtirilgan drayverlar darajasida blokirovka qilinganligi sababli paydo bo'ladi. Virtual mashina ichida uzilish yaratiladi, haydovchi tomonidan qayta ishlanadi va gipervisorga yuboriladi. Gipervisorda uzilishlar bilan ishlov berish tufayli virtual mashina uchun u yuborilgan so'rovga o'xshaydi, u bajarishga tayyor va protsessorni kutmoqda, lekin unga protsessor vaqti berilmaydi. Virtual qiz bu vaqt o'g'irlangan deb o'ylaydi.

Bu bufer yuborilgan paytda sodir bo'ladi, u gipervisorning yadro maydoniga kiradi va biz uni kutishni boshlaymiz. Garchi virtual mashina nuqtai nazaridan u darhol qaytishi kerak. Shuning uchun, o'g'irlikni hisoblash algoritmiga ko'ra, bu vaqt o'g'irlangan hisoblanadi. Ehtimol, bu holatda boshqa mexanizmlar bo'lishi mumkin (masalan, ba'zi boshqa sys qo'ng'iroqlarini qayta ishlash), lekin ular unchalik farq qilmasligi kerak.

Rejalashtiruvchi va yuqori yuklangan virtual mashinalar. Bitta virtual mashina boshqalardan ko'ra ko'proq o'g'irlikdan aziyat cheksa, bu rejalashtiruvchi bilan bog'liq. Jarayon protsessorni qanchalik ko'p yuklasa, boshqalari ham ishlashi uchun rejalashtiruvchi uni tezroq o'chiradi. Agar virtual mashina ozgina iste'mol qilsa, u o'g'irlashni deyarli ko'rmaydi: uning jarayoni halol o'tirdi va kutdi, biz unga ko'proq vaqt berishimiz kerak. Agar virtual mashina barcha yadrolarida maksimal yukni ishlab chiqarsa, u ko'pincha protsessordan chiqarib yuboriladi va ular unga ko'p vaqt bermaslikka harakat qilishadi.

Virtual mashina ichidagi jarayonlar ko'proq protsessor olishga harakat qilsa, bundan ham yomoni, chunki ular ma'lumotlarni qayta ishlashga dosh bera olmaydi. Keyin gipervisordagi operatsion tizim, halol optimallashtirish tufayli, protsessorning kamroq va kamroq vaqtini ta'minlaydi. Bu jarayon qor ko'chkisi kabi sodir bo'ladi va o'g'irlik osmonga sakraydi, ammo boshqa virtual mashinalar buni deyarli sezmaydilar. Va yadrolar qanchalik ko'p bo'lsa, ta'sirlangan mashina shunchalik yomon bo'ladi. Muxtasar qilib aytganda, ko'p yadroli yuqori yuklangan virtual mashinalar eng ko'p zarar ko'radi.

Kam LA, lekin o'g'irlik bor. Agar LA taxminan 0,7 ga teng bo'lsa (ya'ni gipervisor kam yuklanganga o'xshaydi), lekin o'g'irlash alohida virtual mashinalarda kuzatiladi:

  • Yuqorida tavsiflangan paravirtualizatsiya varianti. Gipervisor yaxshi bo'lsa-da, virtual mashina o'g'irlikni ko'rsatadigan ko'rsatkichlarni qabul qilishi mumkin. Bizning tajribalarimiz natijalariga ko'ra, ushbu o'g'irlash opsiyasi 10% dan oshmaydi va virtual mashina ichidagi ilovalarning ishlashiga sezilarli ta'sir ko'rsatmasligi kerak.
  • LA parametri noto'g'ri hisoblangan. Aniqrog'i, har bir aniq daqiqada u to'g'ri hisoblangan, ammo bir daqiqada o'rtacha hisoblanganda u kam baholangan bo'lib chiqadi. Misol uchun, agar gipervisorning uchdan biriga bitta virtual mashina o'zining barcha protsessorlarini roppa-rosa yarim daqiqa davomida iste'mol qilsa, gipervizorda bir daqiqada LA 0,15 ga teng bo'ladi; bir vaqtning o'zida ishlaydigan to'rtta shunday virtual mashinalar 0,6 ni beradi. Va ularning har birida yarim daqiqa davomida LA indikatoriga ko'ra 25% yirtqich o'g'irlash sodir bo'lganligini endi chiqarib bo'lmaydi.
  • Yana, kimdir juda ko'p ovqat eyayotganiga qaror qilgan va kimdir kutishga ruxsat bergan rejalashtiruvchi tufayli. Ayni paytda men kontekstni almashtiraman, uzilishlarni boshqaraman va boshqa muhim tizim ishlari bilan shug'ullanaman. Natijada, ba'zi virtual mashinalar hech qanday muammoni ko'rmaydi, boshqalari esa jiddiy ish faoliyatini yomonlashtiradi.

4. Boshqa buzilishlar

Virtual mashinada protsessor vaqtining adolatli qaytarilishini buzish uchun yana millionlab sabablar mavjud. Misol uchun, hyperthreading va NUMA hisob-kitoblarda qiyinchiliklarga olib keladi. Ular jarayonni bajarish uchun yadro tanlashni butunlay chalkashtirib yuborishadi, chunki rejalashtiruvchi kontekstni almashtirishda hisoblashni yanada qiyinlashtiradigan koeffitsientlar - og'irliklardan foydalanadi.

Turbo boost yoki aksincha, energiya tejash rejimi kabi texnologiyalar tufayli buzilishlar mavjud bo'lib, ular foydalanishni hisoblashda serverdagi chastotani yoki hatto vaqt oralig'ini sun'iy ravishda oshirishi yoki kamaytirishi mumkin. Turbo boostni yoqish boshqa protsessorning ishlashi tufayli bir protsessor oqimining ish faoliyatini pasaytiradi. Hozirgi vaqtda protsessorning joriy chastotasi haqidagi ma'lumotlar virtual mashinaga uzatilmaydi va u kimdir uning vaqtini o'g'irlayapti deb hisoblaydi (masalan, u 2 gigagertsli chastotani so'radi, lekin yarmini oldi).

Umuman olganda, buzilishning sabablari ko'p bo'lishi mumkin. Muayyan tizimda siz boshqa narsalarni topishingiz mumkin. Yuqorida men havolalar bergan kitoblardan va gipervizordan perf, sysdig, systemtap kabi yordam dasturlari yordamida statistik ma'lumotlarni olishdan boshlagan ma'qul. o'nlab.

5. Xulosalar

  1. Paravirtualizatsiya tufayli ma'lum miqdordagi o'g'irlik sodir bo'lishi mumkin va buni normal deb hisoblash mumkin. Ular Internetda bu qiymat 5-10% bo'lishi mumkinligini yozadilar. Virtual mashina ichidagi ilovalarga va uning jismoniy qurilmalariga yuklaydigan yukga bog'liq. Bu erda ilovalarning virtual mashinalar ichida qanday his qilishiga e'tibor berish muhimdir.
  2. Gipervisorga yuklanish va virtual mashina ichidagi o'g'irlik nisbati har doim ham aniq bir-biriga bog'liq emas; o'g'irlikning ikkala bahosi ham turli xil yuklar ostida muayyan holatlarda noto'g'ri bo'lishi mumkin.
  3. Reja tuzuvchisi ko'p narsani talab qiladigan jarayonlarga yomon munosabatda. Ko'p so'raganlarga kamroq berishga harakat qiladi. Katta virtual mashinalar yomon.
  4. Kichkina o'g'irlik, hatto paravirtualizatsiyasiz ham norma bo'lishi mumkin (virtual mashina ichidagi yukni, qo'shnilar yukining xususiyatlarini, iplar bo'ylab yuk taqsimotini va boshqa omillarni hisobga olgan holda).
  5. Agar siz ma'lum bir tizimda o'g'irlikni aniqlamoqchi bo'lsangiz, turli xil variantlarni o'rganishingiz, ko'rsatkichlarni to'plashingiz, ularni diqqat bilan tahlil qilishingiz va yukni qanday qilib teng taqsimlash haqida o'ylashingiz kerak. Har qanday holatlardan chetga chiqish mumkin, ular eksperimental tarzda tasdiqlanishi yoki yadro tuzatuvchisida ko'rib chiqilishi kerak.

Manba: www.habr.com

a Izoh qo'shish