{"id":32331,"date":"2019-10-31T21:46:24","date_gmt":"2019-10-31T18:46:24","guid":{"rendered":"https:\/\/prohoster.info\/blog\/steal-kto-kradyot-u-virtualok-protsessornoe-vremya\/"},"modified":"2019-10-31T21:46:24","modified_gmt":"2019-10-31T18:46:24","slug":"steal-kto-kradyot-u-virtualok-protsessornoe-vremya","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/steal-kto-kradyot-u-virtualok-protsessornoe-vremya","title":{"rendered":"Steal: kto kradne procesorov\u00fd \u010das virtu\u00e1lnych strojov","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Steal: kto kradne procesorov\u00fd \u010das virtu\u00e1lnych strojov\" src=\"\/wp-content\/uploads\/2019\/04\/23cac5d3cc3295dc6f1014e9fda36b89.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAhoj! Chcem jednoducho vysvetli\u0165 mechaniku vzniku steal v r\u00e1mci virtu\u00e1lnych strojov a niektor\u00e9 menej zjavn\u00e9 artefakty, ktor\u00e9 sme dok\u00e1zali objasni\u0165 po\u010das jeho sk\u00famania, do ktor\u00e9ho som sa musel ponori\u0165 ako technick\u00fd riadite\u013e cloudovej platformy. <noindex><a rel=\"nofollow\" href=\"https:\/\/mcs.mail.ru\/\">Mail.ru Cloud Solutions<\/a><\/noindex>. Platforma funguje na KVM.<\/p>\n<p>CPU steal time je \u010das, po\u010das ktor\u00e9ho virtu\u00e1lny stroj nedost\u00e1va procesorov\u00e9 zdroje na svoje vykon\u00e1vanie. Tento \u010das sa po\u010d\u00edta iba v hostite\u013esk\u00fdch opera\u010dn\u00fdch syst\u00e9moch v prostrediach virtualiz\u00e1cie. D\u00f4vody, kam sa tieto vy\u010dlenen\u00e9 zdroje str\u00e1caj\u00fa, s\u00fa, podobne ako v \u017eivote, dos\u0165 nejasn\u00e9. Ale rozhodli sme sa to presk\u00fama\u0165, dokonca sme vykonali cel\u00fa s\u00e9riu experimentov. Nie \u017ee by sme teraz v\u0161etko vedeli o steal, ale nie\u010do zauj\u00edmav\u00e9 v\u00e1m teraz povieme.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>1. \u010co je steal<\/h2>\n<p>\nTak\u017ee steal je metrika, ktor\u00e1 nazna\u010duje nedostatok procesorov\u00e9ho \u010dasu pre procesy vo vn\u00fatri virtu\u00e1lneho stroja. Ako je pop\u00edsan\u00e9 <noindex><a rel=\"nofollow\" href=\"https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/stable\/linux.git\/patch\/?id=c9aaa8957f203bd6df83b002fb40b98390bed078\">v patche jadra KVM<\/a><\/noindex>, steal je \u010das, po\u010das ktor\u00e9ho hyperv\u00edzor vykon\u00e1va in\u00e9 procesy na hostite\u013eskom OS, hoci dal proces virtu\u00e1lneho stroja do poradia na vykonanie. To znamen\u00e1, \u017ee steal sa po\u010d\u00edta ako rozdiel medzi \u010dasom, ke\u010f je proces pripraven\u00fd na vykonanie, a \u010dasom, kedy mu je pridelen\u00fd procesorov\u00fd \u010das.<\/p>\n<p>Metriku steal jadro virtu\u00e1lneho stroja z\u00edskava od hyperv\u00edzora. Pri tom hyperv\u00edzor ne\u0161pecifikuje, ak\u00e9 presne in\u00e9 procesy vykon\u00e1va, jednoducho \"k\u00fdm som zamestnan\u00fd, nem\u00f4\u017eem ti venova\u0165 \u010das\". Na KVM bola podpora po\u010d\u00edtania steal pridan\u00e1 v <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/449657\/\">patchoch.<\/a><\/noindex>Dva k\u013e\u00fa\u010dov\u00e9 body s\u00fa tu: <\/p>\n<ul>\n<li>Virtu\u00e1lny stroj z\u00edskava inform\u00e1cie o steal od hyperv\u00edzora. To znamen\u00e1, \u017ee z poh\u013eadu str\u00e1t je to pre procesy na samotnom virtu\u00e1lnom stroji nepriamy ukazovate\u013e, ktor\u00fd m\u00f4\u017ee by\u0165 vystaven\u00fd r\u00f4znym skresleniam.\n<\/li>\n<li>Hyperv\u00edzor sa nezdie\u013ea s virtu\u00e1lnym strojom inform\u00e1ciou o tom, \u010d\u00edm in\u00fdm je zamestnan\u00fd \u2013 d\u00f4le\u017eit\u00e9 je, \u017ee mu nevenuje \u010das. Z tohto d\u00f4vodu samotn\u00fd virtu\u00e1lny stroj nem\u00f4\u017ee identifikova\u0165 skreslenia v ukazovateli steal, ktor\u00e9 by mohli by\u0165 pos\u00faden\u00e9 pod\u013ea charakteru konkuren\u010dn\u00fdch procesov.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>2. \u010co ovplyv\u0148uje steal<\/h2>\n<p><\/p>\n<h3>2.1. V\u00fdpo\u010det steal<\/h3>\n<p>\nV podstate sa steal po\u010d\u00edta pribli\u017ene rovnako, ako obvykl\u00fd \u010das vyu\u017eitia procesora. Inform\u00e1ci\u00ed o tom, ako sa po\u010d\u00edta vyu\u017eitie, nie je ve\u013ea. Pravdepodobne preto, \u017ee v\u00e4\u010d\u0161ina pova\u017euje t\u00fato ot\u00e1zku za zrejm\u00fa. Ale aj tu m\u00f4\u017eu by\u0165 nejak\u00e9 \u00faskalia. Pre obozn\u00e1menie sa s t\u00fdmto procesom si m\u00f4\u017eete pre\u010d\u00edta\u0165. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/blog\/2017-05-09\/cpu-utilization-is-wrong.html\">\u010dl\u00e1nok Brendanna Gregga<\/a><\/noindex>: dozviete sa o mno\u017estve nu\u00e1ns pri v\u00fdpo\u010dte vyu\u017eitia a o situ\u00e1ci\u00e1ch, kedy bude tento v\u00fdpo\u010det chybn\u00fd z t\u00fdchto d\u00f4vodov:<\/p>\n<ul>\n<li>Prehriatie procesora, pri ktorom sa preskakuje takty.\n<\/li>\n<li>Zap\u00ednanie\/vyp\u00ednanie turbo boostu, v d\u00f4sledku ktor\u00e9ho sa men\u00ed taktovacia frekvencia procesora.\n<\/li>\n<li>Zmena trvania \u010dasov\u00e9ho kvanta, k \u010domu doch\u00e1dza pri vyu\u017e\u00edvan\u00ed technol\u00f3gi\u00ed \u0161etrenia energie procesora, napr\u00edklad SpeedStep.\n<\/li>\n<li>Probl\u00e9m pri v\u00fdpo\u010dte priemeru: odhad vyu\u017eitia po\u010das jednej min\u00faty na \u00farovni 80 % m\u00f4\u017ee skry\u0165 kr\u00e1tkodob\u00fd v\u00fdbuch na \u00farovni 100 %.\n<\/li>\n<li>Cyklick\u00e9 zamknutie (spin lock) vedie k tomu, \u017ee procesor je vyu\u017eit\u00fd, ale pou\u017e\u00edvate\u013esk\u00fd proces nevid\u00ed pokrok vo svojom vykon\u00e1van\u00ed. V d\u00f4sledku toho sa odhadovan\u00e1 vyu\u017eite\u013enos\u0165 procesora procesom zobrazuje ako stopercentn\u00e1, hoci fyzicky procesorov\u00fd \u010das proces spotreb\u00fava\u0165 nebude.\n<\/li>\n<\/ul>\n<p>\n\u010cl\u00e1nky opisuj\u00face podobn\u00fd v\u00fdpo\u010det pre steal som nena\u0161iel (ak viete \u2014 pode\u013ete sa v koment\u00e1roch). Ale pod\u013ea zdrojov\u00fdch dokumentov je mechanizmus v\u00fdpo\u010dtu rovnak\u00fd ako pre vyu\u017eitie. Do jadra sa jednoducho prid\u00e1 \u010fal\u0161\u00ed \u010d\u00edta\u010d priamo pre proces KVM (proces virtu\u00e1lnej ma\u0161iny), ktor\u00fd po\u010d\u00edta d\u013a\u017eku pobytu procesu KVM v stave \u010dakania na procesov\u00fd \u010das. \u010c\u00edta\u010d berie inform\u00e1cie o procesore zo \u0161pecifik\u00e1cie a sleduje, \u010di s\u00fa v\u0161etky jeho tiky vyu\u017eit\u00e9 procesom virtu\u00e1lky. Ak \u00e1no, pova\u017eujeme, \u017ee procesor pracoval len s procesom virtu\u00e1lnej ma\u0161iny. Inak informujeme, \u017ee procesor sa zaoberal nie\u010d\u00edm in\u00fdm, do\u0161lo k steal. <\/p>\n<p>Proces v\u00fdpo\u010dtu steal je vystaven\u00fd t\u00fdm ist\u00fdm probl\u00e9mom, ako je be\u017en\u00fd v\u00fdpo\u010det vyu\u017eitia. Ned\u00e1 sa poveda\u0165, \u017ee by sa tak\u00e9to probl\u00e9my vyskytovali \u010dasto, ale vyzeraj\u00fa deprimuj\u00faco.<\/p>\n<h3>2.2. Typy virtualiz\u00e1cie na KVM<\/h3>\n<p>\nVo v\u0161eobecnosti existuj\u00fa tri typy virtualiz\u00e1cie, a v\u0161etky s\u00fa podporovan\u00e9 KVM. Typ virtualiz\u00e1cie m\u00f4\u017ee ovplyvni\u0165 mechanizmus vzniku steal.<\/p>\n<p><b>Preklad<\/b>. V tomto pr\u00edpade je pr\u00e1ca opera\u010dn\u00e9ho syst\u00e9mu virtu\u00e1lnej ma\u0161iny s fyzick\u00fdmi zariadeniami hyperv\u00edzora zhruba tak\u00e1to:<\/p>\n<ol>\n<li>Hostite\u013esk\u00fd opera\u010dn\u00fd syst\u00e9m posiela svojmu hos\u0165ovsk\u00e9mu zariadeniu pr\u00edkaz.\n<\/li>\n<li>Ovl\u00e1da\u010d hos\u0165ovsk\u00e9ho zariadenia prij\u00edma pr\u00edkaz, formuje po\u017eiadavku pre BIOS zariadenia a posiela ju do hyperv\u00edzora.\n<\/li>\n<li>Hyperv\u00edzor vykon\u00e1va preklad pr\u00edkazu na pr\u00edkaz pre fyzick\u00e9 zariadenie, \u010d\u00edm sa rob\u00ed aj bezpe\u010dnej\u0161\u00edm.\n<\/li>\n<li>Ovl\u00e1da\u010d fyzick\u00e9ho zariadenia prij\u00edma modifikovan\u00fd pr\u00edkaz a posiela ho priamo do fyzick\u00e9ho zariadenia.\n<\/li>\n<li>V\u00fdsledky vykon\u00e1vania pr\u00edkazov sa vracaj\u00fa rovnakou cestou. \n<\/li>\n<\/ol>\n<p>\nV\u00fdhodou prekladu je, \u017ee umo\u017e\u0148uje emulova\u0165 ak\u00e9ko\u013evek zariadenie a nevy\u017eaduje \u0161peci\u00e1lnu pr\u00edpravu jadra opera\u010dn\u00e9ho syst\u00e9mu. Mus\u00edme v\u0161ak za to zaplati\u0165, predov\u0161etk\u00fdm v\u00fdkonnos\u0165ou. <\/p>\n<p><b>Hardv\u00e9rov\u00e1 virtualiz\u00e1cia<\/b>. V tomto pr\u00edpade zariadenie na hardv\u00e9rovej \u00farovni rozumie pr\u00edkazom z opera\u010dn\u00e9ho syst\u00e9mu. Je to najr\u00fdchlej\u0161\u00ed a najlep\u0161\u00ed sp\u00f4sob. Bohu\u017eia\u013e, nie v\u0161etky fyzick\u00e9 zariadenia, hyperv\u00edzory a hostite\u013esk\u00e9 opera\u010dn\u00e9 syst\u00e9my ho podporuj\u00fa. V s\u00fa\u010dasnosti s\u00fa hlavn\u00e9 zariadenia, ktor\u00e9 podporuj\u00fa hardv\u00e9rov\u00fa virtualiz\u00e1ciu, procesory.<\/p>\n<p><b>Paravirtualiz\u00e1cia (paravirtualization)<\/b>. Najroz\u0161\u00edrenej\u0161ia varianta virtualiz\u00e1cie zariaden\u00ed na KVM a v\u00f4bec najbe\u017enej\u0161\u00ed re\u017eim virtualiz\u00e1cie pre hos\u0165uj\u00face opera\u010dn\u00e9 syst\u00e9my. Jej zvl\u00e1\u0161tnos\u0165ou je, \u017ee pr\u00e1ca s niektor\u00fdmi subsyst\u00e9mami hyperv\u00edzora (napr\u00edklad sie\u0165ov\u00fdm alebo diskov\u00fdm syst\u00e9mom) alebo pride\u013eovanie str\u00e1nok pam\u00e4te sa uskuto\u010d\u0148uje pou\u017eit\u00edm API hyperv\u00edzora bez prekladu n\u00edzko\u00farov\u0148ov\u00fdch pr\u00edkazov. Nev\u00fdhodou tohto sp\u00f4sobu virtualiz\u00e1cie je potreba modifik\u00e1cie jadra hos\u0165uj\u00faceho opera\u010dn\u00e9ho syst\u00e9mu, aby mohlo komunikova\u0165 s hyperv\u00edzorom cez toto API. Zvy\u010dajne sa to v\u0161ak rie\u0161i in\u0161tal\u00e1ciou \u0161peci\u00e1lnych ovl\u00e1da\u010dov do hos\u0165uj\u00faceho opera\u010dn\u00e9ho syst\u00e9mu. V KVM sa toto API naz\u00fdva <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ibm.com\/developerworks\/library\/l-virtio\/index.html\">virtio API<\/a><\/noindex>.<\/p>\n<p>Pri paravirtualiz\u00e1cii, v porovnan\u00ed s prekladom, sa cesta k fyzick\u00e9mu zariadeniu zna\u010dn\u011b skracuje v\u010faka priamemu odoslaniu pr\u00edkazov z virtu\u00e1lneho stroja do procesu hyperv\u00edzora na hostite\u013eskom syst\u00e9me. To umo\u017e\u0148uje ur\u00fdchli\u0165 vykon\u00e1vanie v\u0161etk\u00fdch in\u0161trukci\u00ed vo vn\u00fatri virtu\u00e1lneho stroja. V KVM za to zodpoved\u00e1 virtio API, ktor\u00e9 funguje len pre ur\u010dit\u00e9 zariadenia, ako s\u00fa sie\u0165ov\u00e9 alebo diskov\u00e9 adapt\u00e9ry. Pr\u00e1ve preto sa do virtu\u00e1lnych strojov in\u0161taluj\u00fa ovl\u00e1da\u010de virtio. <\/p>\n<p>Negat\u00edvna str\u00e1nka tak\u00e9hoto zr\u00fdchlenia je, \u017ee nie v\u0161etky procesy, ktor\u00e9 sa vykon\u00e1vaj\u00fa vo virtu\u00e1lnom stroji, zost\u00e1vaj\u00fa vo vn\u00fatri neho. To vytv\u00e1ra niektor\u00e9 \u0161peci\u00e1lne efekty, ktor\u00e9 m\u00f4\u017eu vies\u0165 k objaveniu na steal. Odpor\u00fa\u010dam podrobne presk\u00fama\u0165 t\u00fato problematiku za\u010d\u00ednaj\u00fac od <noindex><a rel=\"nofollow\" href=\"https:\/\/lwn.net\/Articles\/239238\/\">API pre virtu\u00e1lne I\/O: virtio<\/a><\/noindex>.<\/p>\n<h3>2.3. \u201eSpravodliv\u00e9\u201c pl\u00e1novanie<\/h3>\n<p>\nVirtu\u00e1lny stroj na hyperv\u00edzore je v podstate oby\u010dajn\u00fd proces, ktor\u00fd podlieha z\u00e1konom pl\u00e1novania (rozde\u013eovania zdrojov medzi procesmi) v jadre Linuxu, preto sa na to pozrime podrobnej\u0161ie. <\/p>\n<p>V Linuxe sa pou\u017e\u00edva takzvan\u00fd CFS, Completely Fair Scheduler, ktor\u00fd sa stal predvolen\u00fdm pl\u00e1nova\u010dom od jadra 2.6.23. Aby ste pochopili tento algoritmus, m\u00f4\u017eete si pre\u010d\u00edta\u0165 Linux Kernel Architecture alebo zdrojov\u00fd k\u00f3d. Podstata CFS spo\u010d\u00edva v rozde\u013eovan\u00ed procesorov\u00e9ho \u010dasu medzi procesmi v z\u00e1vislosti od d\u013a\u017eky ich vykon\u00e1vania. \u010c\u00edm viac procesorov\u00e9ho \u010dasu proces potrebuje, t\u00fdm menej tohto \u010dasu dost\u00e1va. To garantuje \u201espravodliv\u00e9\u201c vykon\u00e1vanie v\u0161etk\u00fdch procesov \u2014 aby jeden proces neobsadil v\u0161etky procesory neust\u00e1le a ostatn\u00e9 procesy mohli tie\u017e vykon\u00e1va\u0165. <\/p>\n<p>Niekedy t\u00e1to paradigma vedie k zauj\u00edmav\u00fdm artefaktom. Dlhodob\u00ed pou\u017e\u00edvatelia Linuxu si ur\u010dite pam\u00e4taj\u00fa zam\u0155zanie oby\u010dajn\u00e9ho textov\u00e9ho editora na desktopoch pri spusten\u00ed n\u00e1ro\u010dn\u00fdch aplik\u00e1ci\u00ed ako je kompil\u00e1tor. St\u00e1valo sa to preto, lebo nerazovo n\u00e1ro\u010dn\u00e9 \u00falohy desktopov\u00fdch aplik\u00e1ci\u00ed s\u00fa\u0165a\u017eili s \u00falohami, ktor\u00e9 akt\u00edvne spotreb\u00favaj\u00fa prostriedky, ako je kompil\u00e1tor. CFS pova\u017euje toto za nespravodliv\u00e9, preto ob\u010das zastav\u00ed textov\u00fd editor a nech\u00e1 procesor spracova\u0165 \u00falohy kompil\u00e1tora. To sa opravilo pomocou mechanizmu <noindex><a rel=\"nofollow\" href=\"https:\/\/marc.info\/?l=linux-kernel&amp;m=128978361700898\">sched_autogroup<\/a><\/noindex>, ale zostali mnoh\u00e9 \u010fal\u0161ie vlastnosti rozde\u013eovania procesorov\u00e9ho \u010dasu medzi \u00falohami. Vlastne, toto nie je rozpr\u00e1vanie o tom, ako to v\u0161etko zle funguje v CFS, ale pokus upozorni\u0165 na to, \u017ee \u201espravodliv\u00e9\u201c rozde\u013eovanie procesorov\u00e9ho \u010dasu nie je trivi\u00e1lna \u00faloha.<\/p>\n<p>\u010eal\u0161\u00ed d\u00f4le\u017eit\u00fd aspekt v pl\u00e1nova\u010di je preemption. Je to potrebn\u00e9 na to, aby sa odstr\u00e1nil \u201epre\u017erat\u00fd\u201c proces z procesora a dal priestor in\u00fdm. Proces odstr\u00e1nenia sa naz\u00fdva prep\u00ednanie kontextu procesora. Pri tom sa zachov\u00e1va cel\u00fd kontext \u00falohy: stav z\u00e1sobn\u00edka, registre a \u010fal\u0161ie, po \u010dom je proces poslan\u00fd na \u010dakanie a na jeho miesto nastupuje in\u00fd. Je to n\u00e1kladn\u00e1 oper\u00e1cia pre opera\u010dn\u00fd syst\u00e9m, a pou\u017e\u00edva sa zriedkavo, ale v podstate na tom nie je ni\u010d zl\u00e9. \u010cast\u00e9 prep\u00ednanie kontextu m\u00f4\u017ee nazna\u010dova\u0165 probl\u00e9m v opera\u010dnom syst\u00e9me, ale zvy\u010dajne prebieha nepretr\u017eite a na nie\u010do \u0161peci\u00e1lne neukazuje.<\/p>\n<p>Tento dlh\u00fd pr\u00edbeh je potrebn\u00fd na vysvetlenie jedn\u00e9ho faktu: \u010d\u00edm viac zdrojov procesora sa sna\u017e\u00ed spotrebova\u0165 proces v f\u00e9rovom pl\u00e1nova\u010di Linuxu, t\u00fdm r\u00fdchlej\u0161ie bude zastaven\u00fd, aby mohli pracova\u0165 aj in\u00e9 procesy. \u010ci je to spr\u00e1vne alebo nie, je zlo\u017eit\u00e1 ot\u00e1zka, ktor\u00e1 sa pri r\u00f4znych za\u0165a\u017eeniach rie\u0161i r\u00f4zne. V syst\u00e9me Windows bol doteraz pl\u00e1nova\u010d orientovan\u00fd na prioritn\u00fa obranu desktopov\u00fdch aplik\u00e1ci\u00ed, \u010do mohlo sp\u00f4sobova\u0165 zamrznutie pozad\u00ed procesov. V Sun Solaris existovalo p\u00e4\u0165 r\u00f4znych tried pl\u00e1nova\u010dov. Ke\u010f zaviedli virtualiz\u00e1ciu, pridali \u0161iesty, <noindex><a rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/man.shtml?topic=FSS&amp;category=7&amp;russian=4\">F\u00e9rov\u00fd pl\u00e1nova\u010d<\/a><\/noindex>, preto\u017ee predch\u00e1dzaj\u00facich p\u00e4\u0165 pracovalo s virtualiz\u00e1ciou Solaris Zones neadekv\u00e1tne. Podrobn\u00e9 \u0161t\u00fadium tejto problematiky odpor\u00fa\u010dam za\u010da\u0165 knihami ako s\u00fa <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Solaris-Internals-OpenSolaris-Kernel-Architecture\/dp\/0131482092\/\">Architekt\u00fara jadra Solaris 10 a OpenSolaris<\/a><\/noindex> alebo <noindex><a rel=\"nofollow\" href=\"https:\/\/www.amazon.com\/Understanding-Linux-Kernel-Third-Daniel\/dp\/0596005652\/\">Pochopenie jadra Linuxu<\/a><\/noindex>.<\/p>\n<h3>2.4. Ako monitorova\u0165 steal?<\/h3>\n<p>\nMonitorovanie steal v r\u00e1mci virtu\u00e1lneho stroja, ako aj ak\u00fako\u013evek in\u00fa procesorov\u00fa metriku, je jednoduch\u00e9: m\u00f4\u017eete pou\u017e\u00edva\u0165 ak\u00fdko\u013evek n\u00e1stroj na meranie procesorov\u00fdch metr\u00edk. Hlavn\u00e9 je, aby virtu\u00e1lka bola na Linuxe. Windows z nejak\u00e9ho d\u00f4vodu tak\u00fato inform\u00e1ciu svojim pou\u017e\u00edvate\u013eom neposkytuje. \ud83d\ude41<\/p>\n<p><img decoding=\"async\" alt=\"Steal: kto kradne procesorov\u00fd \u010das virtu\u00e1lnych strojov\" src=\"\/wp-content\/uploads\/2019\/04\/3c7cd04f73fd6a74b86af81382090b69.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>V\u00fdstup pr\u00edkazu top: detail loading na procesor, v najpravej\u0161om st\u013apci \u2014 steal<\/i><\/p>\n<p>S\u0165a\u017enosti nast\u00e1vaj\u00fa pri pokuse z\u00edska\u0165 tieto inform\u00e1cie z hyperv\u00edzora. M\u00f4\u017eete sa pok\u00fasi\u0165 predpoveda\u0165 steal na hostite\u013eskom stroji, napr\u00edklad pod\u013ea parametra Load Average (LA) \u2014 priemern\u00fa hodnotu po\u010dtu procesov, ktor\u00e9 \u010dakaj\u00fa v rade na vykonanie. Met\u00f3dika po\u010d\u00edtania tohto parametra nie je jednoduch\u00e1, ale vo v\u0161eobecnosti, ak je normalizovan\u00fd pod\u013ea po\u010dtu vl\u00e1kien procesora LA v\u00e4\u010d\u0161\u00ed ako 1, nazna\u010duje to, \u017ee server s Linuxom je nie\u010d\u00edm pre\u0165a\u017een\u00fd. <\/p>\n<p>Na \u010do v\u0161etci t\u00edto procesy \u010dakaj\u00fa? O\u010dividn\u00e1 odpove\u010f je procesor. Ale odpove\u010f nie je \u00faplne spr\u00e1vna, preto\u017ee niekedy je procesor vo\u013en\u00fd, zatia\u013e \u010do LA sa zvy\u0161uje. Spome\u0148te si, <noindex><a rel=\"nofollow\" href=\"https:\/\/serverfault.com\/questions\/911976\/redhat-nfs-cluster-high-load-average-suddenly\">ako NFS vypad\u00e1va a pritom rastie LA.<\/a><\/noindex>Podobne to m\u00f4\u017ee by\u0165 aj s diskom a in\u00fdmi vstupno\/v\u00fdstupn\u00fdmi zariadeniami. Skuto\u010dne v\u0161ak procesy m\u00f4\u017eu \u010daka\u0165 na ukon\u010denie ak\u00e9hoko\u013evek typu blok\u00e1cie, \u010di u\u017e fyzickej, s\u00favisiacej so vstupno\/v\u00fdstupn\u00fdm zariaden\u00edm, alebo logickej, ako je mutex. Sem patr\u00ed aj blokovanie na \u00farovni hardv\u00e9ru (napr\u00edklad odpove\u010f z disku) alebo logiky (takzvan\u00e9 blokovacie primit\u00edvy, ktor\u00e9 zah\u0155\u0148aj\u00fa mno\u017estvo ent\u00edt, ako s\u00fa adapt\u00edvne mutexy a spin, semafory, podmienkov\u00e9 premenn\u00e9, rw z\u00e1mky, ip z\u00e1mky\u2026).<\/p>\n<p>\u010eal\u0161ou vlastnos\u0165ou LA je, \u017ee sa po\u010d\u00edta ako priemer cez opera\u010dn\u00fd syst\u00e9m. Napr\u00edklad, 100 procesov s\u00fa\u0165a\u017e\u00ed o jeden s\u00fabor, a potom LA=50. Tak vysok\u00e1 hodnota sa zd\u00e1 nazna\u010dova\u0165, \u017ee opera\u010dn\u00fd syst\u00e9m m\u00e1 probl\u00e9my. Ale pri nejakom zle nap\u00edsanom k\u00f3de to m\u00f4\u017ee by\u0165 norm\u00e1lny stav, kde je zle len jemu, zatia\u013e \u010do ostatn\u00e9 procesy v opera\u010dnom syst\u00e9me netrpia. <\/p>\n<p>Ak ste si toho vedom\u00ed, v\u010faka tomu priemerovaniu (a trv\u00e1 to aspo\u0148 min\u00fatu), ur\u010di\u0165 nie\u010do na z\u00e1klade ukazovate\u013ea LA \u2014 nie je v\u010fa\u010dn\u00e1 \u00faloha, s ve\u013emi nejasn\u00fdmi v\u00fdsledkami v konkr\u00e9tnych pr\u00edpadoch. Ak sa pok\u00fasite pr\u00eds\u0165 na to, zist\u00edte, \u017ee v \u010dl\u00e1nkoch na Wikip\u00e9dii a in\u00fdch dostupn\u00fdch zdrojoch s\u00fa op\u00edsan\u00e9 iba najjednoduch\u0161ie pr\u00edpady, bez hlbok\u00e9ho vysvetlenia procesu. V\u0161etk\u00fdch z\u00e1ujemcov op\u00e4\u0165 posielam <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/blog\/2017-08-08\/linux-load-averages.html\">sem, k Brendannovi Greggovi<\/a><\/noindex> \u00a0\u2014 \u010falej cez odkazy. Kto sa nechce tr\u00e1pi\u0165 s angli\u010dtinou \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/335326\/\">preklad jeho popul\u00e1rneho \u010dl\u00e1nku o LA<\/a><\/noindex>.<\/p>\n<h2>3. \u0160peci\u00e1lne efekty<\/h2>\n<p>\nTeraz sa zastav\u00edme pri hlavn\u00fdch pr\u00edpadoch vzniku steal, ktor\u00fdm sme sa stretli. Povieme si, ako vypl\u00fdvaj\u00fa z vy\u0161\u0161ie uveden\u00e9ho a ako s\u00favisia s ukazovate\u013emi na hyperv\u00edzore.<\/p>\n<p><b>Preutiliz\u00e1cia<\/b>. Najjednoduch\u0161\u00ed a najbe\u017enej\u0161\u00ed: hyperv\u00edzor je preutilizovan\u00fd. Skuto\u010dne, ve\u013ea spusten\u00fdch virtu\u00e1lnych strojov, vysok\u00e1 spotreba procesora v nich, ve\u013ek\u00e1 konkurencia, vyu\u017e\u00edvanie pri LA je vy\u0161\u0161ie ako 1 (v normaliz\u00e1cii pod\u013ea procesorov\u00fdch vl\u00e1kien). Vo v\u0161etk\u00fdch virtu\u00e1lnych strojoch je v\u0161etko spomalen\u00e9. Steal, ktor\u00fd je pren\u00e1\u0161an\u00fd z hyperv\u00edzora, tie\u017e rastie, je potrebn\u00e9 rozlo\u017ei\u0165 z\u00e1\u0165a\u017e alebo niekoho vypn\u00fa\u0165. V\u0161eobecne, v\u0161etko je logick\u00e9 a jasn\u00e9.<\/p>\n<p><b>Paravirtualiz\u00e1cia proti osamel\u00fdm in\u0161tanci\u00e1m<\/b>. Na hyperv\u00edzore je len jedna virtu\u00e1lka, ktor\u00e1 spotrebuje mal\u00fa \u010das\u0165 jeho zdrojov, ale vytv\u00e1ra ve\u013ek\u00fa z\u00e1\u0165a\u017e v oblasti vstupu\/v\u00fdstupu, napr\u00edklad na disku. A niekde sa v nej objav\u00ed mal\u00fd steal, a\u017e do 10 % (ako ukazuje nieko\u013eko vykonan\u00fdch experimentov).<\/p>\n<p>Zauj\u00edmav\u00fd pr\u00edpad. Steal sa v tomto pr\u00edpade objavuje pr\u00e1ve kv\u00f4li blokovaniam na \u00farovni paravirtualizovan\u00fdch ovl\u00e1da\u010dov. Vo virtu\u00e1lke sa vytvor\u00ed preru\u0161enie, ktor\u00e9 spracuje ovl\u00e1da\u010d a po\u0161le ho do hyperv\u00edzora. Kv\u00f4li spracovaniu preru\u0161enia na hyperv\u00edzore to pre virtu\u00e1lku vyzer\u00e1 ako odoslan\u00fd po\u017eiadavok, je pripraven\u00e1 na vykonanie a \u010dak\u00e1 na procesor, ale procesorov\u00fd \u010das jej nie je poskytnut\u00fd. Virtu\u00e1lka si mysl\u00ed, \u017ee tento \u010das bol ukradnut\u00fd. <\/p>\n<p>To sa deje v okamihu odoslania bufferu, ktor\u00fd prejde do kernel space hyperv\u00edzora, a za\u010d\u00edname ho \u010daka\u0165. Hoci, z poh\u013eadu virtu\u00e1lky, by sa mal vr\u00e1ti\u0165 hne\u010f. Pod\u013ea algoritmu v\u00fdpo\u010dtu steal sa tento \u010das pova\u017euje za ukradnut\u00fd. Pravdepodobne m\u00f4\u017eu v tejto situ\u00e1cii existova\u0165 aj in\u00e9 mechanizmy (napr\u00edklad spracovanie e\u0161te nejak\u00fdch sys calls), ale nemali by sa v\u00fdrazne l\u00ed\u0161i\u0165.<\/p>\n<p><b>Scheduler proti vysoko za\u0165a\u017een\u00fdm virtu\u00e1lkam<\/b>. Ke\u010f jedna virtu\u00e1lka trp\u00ed stealom viac ako ostatn\u00e9, je to pr\u00e1ve kv\u00f4li scheduleru. \u010c\u00edm viac proces za\u0165a\u017euje procesor, t\u00fdm sk\u00f4r ho scheduler vyhod\u00ed, aby aj ostatn\u00ed mohli pracova\u0165. Ak virtu\u00e1lka spotrebuje m\u00e1lo, takmer si nev\u0161imne steal: jej proces poctivo sedel a \u010dakal, je potrebn\u00e9 mu da\u0165 viac \u010dasu. Ak virtu\u00e1lka za\u017e\u00edva maxim\u00e1lnu z\u00e1\u0165a\u017e na v\u0161etk\u00fdch svojich jadr\u00e1ch, \u010dastej\u0161ie ju vyh\u00e1\u0148aj\u00fa z procesora a sna\u017eia sa jej nezveri\u0165 ve\u013ea \u010dasu. <\/p>\n<p>E\u0161te hor\u0161ie je, ke\u010f procesy vo virtu\u00e1lke sa sna\u017eia z\u00edska\u0165 viac procesora, preto\u017ee nezvl\u00e1daj\u00fa spracovanie d\u00e1t. V tom pr\u00edpade opera\u010dn\u00fd syst\u00e9m na hyperv\u00edzore, v\u010faka poctivej optimaliz\u00e1cii, d\u00e1va \u010doraz menej procesorov\u00e9ho \u010dasu. Tento proces prebieha lav\u00ednovo a steal vysko\u010d\u00ed do nebies, hoci ostatn\u00e9 virtu\u00e1lky to takmer ani nezaznamenaj\u00fa. A \u010d\u00edm viac jadier, t\u00fdm hor\u0161ie pre stroj, ktor\u00fd sa dostane pod tla\u010d. Skr\u00e1tka, najviac trpia vysoko za\u0165a\u017een\u00e9 virtu\u00e1lky s mno\u017estvom jadier.<\/p>\n<p><b>N\u00edzky LA, ale je tu steal<\/b>. Ak je LA pribli\u017ene 0,7 (to znamen\u00e1, \u017ee hyperv\u00edzor sa zd\u00e1 by\u0165 nedostato\u010dne za\u0165a\u017een\u00fd), ale vo vn\u00fatri jednotliv\u00fdch virtu\u00e1lok sa pozoruje steal:<\/p>\n<ul>\n<li>U\u017e pop\u00edsan\u00e1 vy\u0161\u0161ia varianta s paravirtualiz\u00e1ciou. Virtu\u00e1lka m\u00f4\u017ee z\u00edska\u0165 metriky, ktor\u00e9 ukazuj\u00fa na steal, aj ke\u010f hyperv\u00edzor je v poriadku. Pod\u013ea v\u00fdsledkov na\u0161ich experimentov tak\u00fdto steal nepresahuje 10 % a nemal by ma\u0165 v\u00fdznamn\u00fd vplyv na v\u00fdkon aplik\u00e1ci\u00ed vo virtu\u00e1lke.\n<\/li>\n<li>Nespr\u00e1vne sa posudzuje parameter LA. Presnej\u0161ie, v ka\u017ed\u00fd konkr\u00e9tny okamih sa posudzuje spr\u00e1vne, ale pri priemere za jednu min\u00fatu je v\u00fdsledok podhodnoten\u00fd. Napr\u00edklad, ak jedna virtu\u00e1lka na tretine hyperv\u00edzora vyu\u017e\u00edva v\u0161etky svoje procesory presne pol min\u00faty, LA za min\u00fatu na hyperv\u00edzore bude 0,15; \u0161tyri tak\u00e9to virtu\u00e1lky, ktor\u00e9 pracuj\u00fa s\u00fa\u010dasne, daj\u00fa 0,6. A to, \u017ee pol min\u00faty na ka\u017edej z nich bol obrovsk\u00fd steal takmer 25 % pod\u013ea ukazovate\u013ea LA, u\u017e nevytiahne.\n<\/li>\n<li>Op\u00e4\u0165, kv\u00f4li pl\u00e1nova\u010du, ktor\u00fd us\u00fadil, \u017ee niekto je pr\u00edli\u0161 n\u00e1ro\u010dn\u00fd a mal by chv\u00ed\u013eu \u010daka\u0165. A ja zatia\u013e prep\u00ednam kontext, spracov\u00e1vam preru\u0161enia a venujem sa in\u00fdm d\u00f4le\u017eit\u00fdm syst\u00e9mov\u00fdm z\u00e1le\u017eitostiam. V\u00fdsledkom je, \u017ee niektor\u00e9 virtu\u00e1lky nevidia \u017eiadne probl\u00e9my, zatia\u013e \u010do in\u00e9 za\u017e\u00edvaj\u00fa v\u00e1\u017ene zhor\u0161enie v\u00fdkonu.\n<\/li>\n<\/ul>\n<p><\/p>\n<h2>4. In\u00e9 skreslenia<\/h2>\n<p>\nExistuje e\u0161te mili\u00f3n d\u00f4vodov na skreslenia spravodlivej odovzd\u00e1vky procesorov\u00e9ho \u010dasu na virtu\u00e1lke. Napr\u00edklad, komplik\u00e1cie vo v\u00fdpo\u010dtoch zav\u00e1dzaj\u00fa hyperthreading a NUMA. Tie \u00faplne zamot\u00e1vaj\u00fa v\u00fdber jadra pre vykon\u00e1vanie procesu, preto\u017ee pl\u00e1nova\u010d pou\u017e\u00edva koeficienty \u2014 v\u00e1hy, ktor\u00e9 pri prep\u00ednan\u00ed kontextu robia v\u00fdpo\u010det e\u0161te zlo\u017eitej\u0161\u00edm.<\/p>\n<p>M\u00f4\u017eu by\u0165 skreslenia sp\u00f4soben\u00e9 technol\u00f3giami ako turbo boost alebo, naopak, re\u017eimy \u00faspory energie, ktor\u00e9 pri v\u00fdpo\u010dte vy\u0165a\u017eenia m\u00f4\u017eu umelo zvy\u0161ova\u0165 alebo zni\u017eova\u0165 frekvenciu, alebo dokonca kvant \u010dasu na serveri. Aktiv\u00e1cia turbo boostu zni\u017euje v\u00fdkon jedn\u00e9ho procesorov\u00e9ho vl\u00e1kna kv\u00f4li zv\u00fd\u0161eniu v\u00fdkonu in\u00e9ho. V tom okamihu inform\u00e1cia o aktu\u00e1lnej frekvencii procesora nie je virtu\u00e1lnej ma\u0161ine pren\u00e1\u0161an\u00e1, a ona si mysl\u00ed, \u017ee jej \u010das niekto kradne (napr\u00edklad \u017eiadala 2 GHz, ale dostala dvakr\u00e1t menej). <\/p>\n<p>Vo v\u0161eobecnosti m\u00f4\u017ee by\u0165 pr\u00ed\u010din skreslenia ve\u013ea. V konkr\u00e9tnom syst\u00e9me m\u00f4\u017eete objavi\u0165 nie\u010do \u010fal\u0161ie. Najlep\u0161ie je za\u010da\u0165 s knihami, na ktor\u00e9 som odkazoval vy\u0161\u0161ie, a zberom \u0161tatist\u00edk z hyperv\u00edzora pomocou util\u00edt ako perf, sysdig, systemtap, ktor\u00fdch je <noindex><a rel=\"nofollow\" href=\"https:\/\/jvns.ca\/blog\/2017\/07\/05\/linux-tracing-systems\/\">desiatky<\/a><\/noindex>.<\/p>\n<h2>5. Z\u00e1ver<\/h2>\n<p><\/p>\n<ol>\n<li>Ur\u010dit\u00e9 mno\u017estvo steal m\u00f4\u017ee vznikn\u00fa\u0165 v d\u00f4sledku paravirtualiz\u00e1cie a m\u00f4\u017ee sa pova\u017eova\u0165 za norm\u00e1lne. Na internete sa p\u00ed\u0161e, \u017ee t\u00e1to hodnota m\u00f4\u017ee dosiahnu\u0165 5-10 %. Z\u00e1vis\u00ed to od aplik\u00e1ci\u00ed vo virtu\u00e1lke a od toho, ak\u00fa z\u00e1\u0165a\u017e vytv\u00e1ra na svoje fyzick\u00e9 zariadenia. D\u00f4le\u017eit\u00e9 je sledova\u0165, ako sa aplik\u00e1cie vo virtu\u00e1lkach c\u00edtia.\n<\/li>\n<li>Vz\u0165ah z\u00e1\u0165a\u017ee na hyperv\u00edzore a steal vo virtu\u00e1lke nie je v\u017edy jednozna\u010dne prepojen\u00fd, obe hodnotenia steal m\u00f4\u017eu by\u0165 v konkr\u00e9tnych situ\u00e1ci\u00e1ch pri r\u00f4znych z\u00e1\u0165a\u017eiach chybn\u00e9.\n<\/li>\n<li>\u0160eduler nepriaznivo reaguje na procesy, ktor\u00e9 ve\u013ea \u017eiadaj\u00fa. Sna\u017e\u00ed sa d\u00e1va\u0165 menej t\u00fdm, ktor\u00ed \u017eiadaj\u00fa viac. Ve\u013ek\u00e9 virtu\u00e1lky s\u00fa zlo.\n<\/li>\n<li>Mal\u00fd steal m\u00f4\u017ee by\u0165 normou aj bez paravirtualiz\u00e1cie (s oh\u013eadom na z\u00e1\u0165a\u017e vo virtu\u00e1lke, \u0161pecifik\u00e1 z\u00e1\u0165a\u017e\u00ed susedov, rozlo\u017eenie z\u00e1\u0165a\u017ee pod\u013ea vl\u00e1kien a \u010fal\u0161ie faktory).\n<\/li>\n<li>Ak chcete zisti\u0165 steal v konkr\u00e9tnom syst\u00e9me, mus\u00edte presk\u00fama\u0165 r\u00f4zne mo\u017enosti, zbiera\u0165 metriky, d\u00f4kladne ich analyzova\u0165 a prem\u00fd\u0161\u013ea\u0165, ako rovnomerne rozlo\u017ei\u0165 z\u00e1\u0165a\u017e. Od ak\u00fdchko\u013evek pr\u00edpadov m\u00f4\u017eu vznikn\u00fa\u0165 odch\u00fdlky, ktor\u00e9 treba potvrdi\u0165 experiment\u00e1lne alebo sledova\u0165 v debag\u00e9ri jadra.\n<\/li>\n<\/ol>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/mailru\/blog\/449316\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442! \u0425\u043e\u0447\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e\u0441\u0442\u044b\u043c \u044f\u0437\u044b\u043a\u043e\u043c \u043e \u043c\u0435\u0445\u0430\u043d\u0438\u043a\u0435 \u0432\u043e\u0437\u043d\u0438\u043a\u043d\u043e\u0432\u0435\u043d\u0438\u044f steal \u0432\u043d\u0443\u0442\u0440\u0438 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u043c\u0430\u0448\u0438\u043d \u0438 \u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043d\u0435\u043e\u0447\u0435\u0432\u0438\u0434\u043d\u044b\u0445 \u0430\u0440\u0442\u0435\u0444\u0430\u043a\u0442\u0430\u0445, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0430\u043c \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c \u043f\u0440\u0438 \u0435\u0433\u043e \u0438\u0441\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u0438, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0435 \u043c\u043d\u0435 \u043f\u0440\u0438\u0448\u043b\u043e\u0441\u044c \u043f\u043e\u0433\u0440\u0443\u0437\u0438\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0442\u0435\u0445\u0434\u0438\u0440\u0443 \u043e\u0431\u043b\u0430\u0447\u043d\u043e\u0439 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u044b Mail.ru Cloud Solutions. \u041f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043d\u0430 KVM. CPU steal time \u2014 \u044d\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0432 \u0442\u0435\u0447\u0435\u043d\u0438\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u0430\u044f \u043c\u0430\u0448\u0438\u043d\u0430 \u043d\u0435 \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442 \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24147,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32331","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/steal-kto-kradyot-u-virtualok-protsessornoe-vremya\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sk_SK\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Steal: \u043a\u0442\u043e \u043a\u0440\u0430\u0434\u0451\u0442 \u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442!\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/steal-kto-kradyot-u-virtualok-protsessornoe-vremya\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:46:24+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:46:24+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Steal: kto kradne virtu\u00e1lkam procesorov\u00fd \u010das | ProHoster","description":"Ahoj!","canonical_url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/steal-kto-kradyot-u-virtualok-protsessornoe-vremya","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sk_SK","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Steal: \u043a\u0442\u043e \u043a\u0440\u0430\u0434\u0451\u0442 \u0443 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u043e\u043a \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442!","og:url":"https:\/\/prohoster.info\/sk\/blog\/administrirovanie\/steal-kto-kradyot-u-virtualok-protsessornoe-vremya","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:46:24+00:00","article:modified_time":"2019-10-31T18:46:24+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32331","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 10:21:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:00:23","updated":"2026-01-21 10:21:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/32331","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/comments?post=32331"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/posts\/32331\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media\/24147"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/media?parent=32331"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/categories?post=32331"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sk\/wp-json\/wp\/v2\/tags?post=32331"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}