{"id":77693,"date":"2020-04-13T01:42:39","date_gmt":"2020-04-12T23:42:39","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes"},"modified":"2020-04-13T01:42:39","modified_gmt":"2020-04-12T23:42:39","slug":"cpu-limity-i-agressivnyj-trottling-v-kubernetes","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes","title":{"rendered":"CPU piirangud ja agressiivne trottling Kuberneteses","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>M\u00e4rk. t\u00f5lge.<\/b>: see looja lugu Omio \u2014 Euroopa reisikoguja \u2014 viib lugejad alates p\u00f5hiteooriast kuni k\u00f6itvate praktiliste n\u00fcanssideni Kubernetes'i konfiguratsioonis. Selliste juhtumite tundmine aitab mitte ainult silmaringi laiendada, vaid ka v\u00e4ltida keerulisi probleeme.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/1175c9df746e43b5a7d81476164929db.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nKas olete kunagi kogenud, et rakendus \"hangub\", l\u00f5petab tervisekontrolli (health check) p\u00e4ringutele vastuse andmise, ja te ei saanud aru, mis p\u00f5hjus seda k\u00e4itumist p\u00f5hjustab? \u00dcks v\u00f5imalik selgitus on seotud CPU ressursside kvoodi piiranguga. Sellega tegeleme k\u00e4esolevas artiklis.<\/p>\n<p><b>L\u00fchikokkuv\u00f5te:<br \/>\nSoovitame tungivalt loobuda CPU piirangutest Kuberneteses (v\u00f5i v\u00e4ljal\u00fclitada CFS kvoodid Kubeletis), kui kasutatakse Linuxi tuuma versiooni, milles on CFS kvoodi viga. <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.kernel.org\/show_bug.cgi?id=198197\">on olemas<\/a><\/noindex> t\u00f5sine ja <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/67577\">h\u00e4sti tuntud<\/a><\/noindex> bugi, mis p\u00f5hjustab liialdatud trottlite ja viivitusi.<\/b>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Omios <b>on kogu infrastruktuur hallatud Kubernetes\u2019i kaudu.<\/b>. K\u00f5ik meie stateful- ja stateless-koormused t\u00f6\u00f6tavad ainult Kuberneteses (kasutame Google Kubernetes Engine'i). Viimase poole aasta jooksul oleme m\u00e4rganud juhuslikke viivitusi. Rakendused hanguvad v\u00f5i l\u00f5petavad tervisekontrolli p\u00e4ringutele vastamise, kaotavad v\u00f5rgu\u00fchenduse jne. Selline k\u00e4itumine pani meid pikka aega t\u00f5sise m\u00f5tlema ja l\u00f5puks otsustasime probleemiga p\u00f5hjalikult tegeleda.<\/p>\n<p>Artikli kokkuv\u00f5te:<\/p>\n<ul>\n<li> M\u00f5ned s\u00f5nad konteineritest ja Kubernetesest;<\/li>\n<li> Kuidas on rakendatud CPU p\u00e4ringud ja piirangud;<\/li>\n<li> Kuidas CPU limit t\u00f6\u00f6tab mitme tuuma keskkondades;<\/li>\n<li> Kuidas j\u00e4lgida CPU trottling\u2019ut;<\/li>\n<li> Probleemi lahendamine ja n\u00fcansid.<\/li>\n<\/ul>\n<p><\/p>\n<h2>M\u00f5ned s\u00f5nad konteineritest ja Kubernetesest<\/h2>\n<p>\nKubernetes on sisuliselt kaasaegne standard infrastruktuuri maailmas. Selle peamine \u00fclesanne on konteinerite orkestreerimine.<\/p>\n<h3>Konteinerid<\/h3>\n<p>\nVarem tuli meil luua artefakte nagu Java JAR\/WAR, Python Egg v\u00f5i k\u00e4ivitatavad failid, et hiljem neid serverites k\u00e4ivitada. Kuid nende toimima saamiseks tuli teha t\u00e4iendavat t\u00f6\u00f6d: paigaldada jooksukeskkond (Java\/Python), asetada vajalikud failid \u00f5igesse kohta, tagada \u00fchilduvus konkreetse operatsioonis\u00fcsteemi versiooniga jne. Teisis\u00f5nu, tuli p\u00f6\u00f6rata t\u00e4helepanu konfiguratsioonihaldusele (mis sageli p\u00f5hjustas kaklusi arendajate ja s\u00fcsteemiadministratooride vahel).<\/p>\n<p><b>Konteinerid on k\u00f5ik muutnud.<\/b> N\u00fc\u00fcd on artefakt konteiners\u00fcsteem. Seda v\u00f5ib n\u00e4ha kui pikendatud k\u00e4ivitatavat faili, mis sisaldab mitte ainult programmi, vaid ka t\u00e4ielikku jooksva keskkonda (Java\/Python\/\u2026) ning vajalikke faile\/pakette, mis on eelinstalleeritud ja valmis k\u00e4ivitamiseks. Konteinerid saab juurutada ja k\u00e4ivitada erinevates serverites ilma t\u00e4iendavate toiminguteta.<\/p>\n<p>Lisaks toimivad konteinerid omaenese liivakasti keskkonnas. Neil on oma virtuaalne v\u00f5rgukaart, oma failis\u00fcsteem piiratud juurdep\u00e4\u00e4suga, oma protsesside hierarhia, oma CPU ja m\u00e4lu piirangud jne. K\u00f5ik see on realiseeritud Linuxi tuuma erilise alams\u00fcsteemi \u2014 namespaces (nimetuste ruumide) abil.<\/p>\n<h3>Kubernetes<\/h3>\n<p>\nNagu eelnevalt mainitud, on Kubernetes konteinerite orkestreerija. See t\u00f6\u00f6tab j\u00e4rgmiselt: te annate sellele masinate hulga ja seej\u00e4rel \u00fctlete: \"Hei, Kubernetes, k\u00e4ivita k\u00fcmme eksemplari minu konteinerist, iga\u00fchel 2 protsessorit ja 3 GB m\u00e4lu ning hoolda neid!\" Kubernetes hoolitseb \u00fclej\u00e4\u00e4nud eest. See leiab vabad ressursid, k\u00e4ivitab konteinerid ja k\u00e4ivitab need vajadusel uuesti, toob v\u00e4lja v\u00e4rskenduse versioonide vahetumisel jne. \u00dcldiselt v\u00f5imaldab Kubernetes abstraheerida riistvarast ja muudab k\u00f5ik s\u00fcsteemide mitmekesisuse rakenduste juurutamiseks ja t\u00f6\u00f6tamiseks sobivaks.<\/p>\n<p><img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/6509bb1b66a4a0f5e9a479d0bd6ececb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kubernetes igap\u00e4evase kasutaja vaatenurgast<\/i><\/p>\n<h2>Mis on Kuberneteses p\u00e4ringud ja piirangud<\/h2>\n<p>\nN\u00fc\u00fcd oleme containerite ja Kubernetes'ega sina peal. Teame, et mitu konteinerit v\u00f5ivad olla \u00fchel masinal.<\/p>\n<p>V\u00f5ib tuua paralleeli \u00fchisest korterist. Suur ruum (masinad\/s\u00f5lmed) antakse mitmele \u00fc\u00fcrnikule (konteineritele). Kubernetes m\u00e4ngib maakleri rolli. Tekib k\u00fcsimus, kuidas hoida \u00fc\u00fcrnikud konfliktideta? Mis juhtub, kui \u00fcks neist otsustab n\u00e4iteks kasutada vannituba poole p\u00e4evaks?<\/p>\n<p>Just siin tulevad m\u00e4ngu p\u00e4ringud ja piirangud. CPU <b>Request<\/b> on vajalik ainult planeerimiseks. See on nagu konteineri \u201esoovide nimekiri\u201d ja seda kasutatakse sobivaima s\u00f5lme leidmiseks. Samal ajal on CPU <b>Limit<\/b> v\u00f5imalik v\u00f5rrelda \u00fc\u00fcrilepinguga \u2014 kui oleme leidnud s\u00f5lme konteineri jaoks, siis <b>ei saa<\/b> \u00fcletada kehtestatud piire. Ja siin tekib probleem...<\/p>\n<h3>Kuidas on rakendatud p\u00e4ringud ja piirangud Kuberneteses<\/h3>\n<p>\nKubernetes kasutab tuuma sisseehitatud mehhanismi trottling (kiirete vahele j\u00e4tmine) rakendamiseks CPU piirangute jaoks. Kui rakendus \u00fcletab limiidi, aktiveeritakse trottling (st see saab v\u00e4hem CPU ts\u00fckleid). P\u00e4ringud ja piirangud m\u00e4lu jaoks on korraldatud teisiti, seega on neid lihtsam tuvastada. Selleks piisab, kui kontrollida pod'i viimast taask\u00e4ivitamise staatust: kas see ei ole \"OOMKilled\". CPU trottlinguga pole k\u00f5ik nii lihtne, kuna K8s teeb k\u00e4ttesaadavaks ainult kasutusstatistika, mitte cgroups.<\/p>\n<h4>CPU P\u00e4ring<\/h4>\n<p>\n<img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/fbc8bf3f775ffd9513374ce94b20535d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kuidas on rakendatud CPU p\u00e4ring<\/i><\/p>\n<p>Lihtsuse huvides vaatame protsessi 4-erialise CPU masina n\u00e4itel.<\/p>\n<p>K8s kasutab ressursside (m\u00e4lu ja protsessori) jaotamise haldamiseks kontrollr\u00fchmi (cgroups). Selle jaoks on saadaval hierarhiline mudel: alampod p\u00e4rib vanemgrupi piirangud. Jaotusdetailid salvestatakse virtuaalsesse failis\u00fcsteemi (<code>\/sys\/fs\/cgroup<\/code>). Protsessoriga seotud osas on see <code>\/sys\/fs\/cgroup\/cpu,cpuacct\/*<\/code>.<\/p>\n<p>K8s kasutab faili <code>cpu.share<\/code> sisaldab CPU ressursside jaotamist. Meie juhul saab peamine kontrollgrupp 4096 CPU ressurssi aktsiat \u2014 100% saadaval olevast protsessoriv\u00f5imsusest (1 tuum = 1024; see on fikseeritud v\u00e4\u00e4rtus). Peamine grupp jaotab ressursse proportsionaalselt alluvate aktsiate alusel, mis on m\u00e4\u00e4ratud <code>cpu.share<\/code>, ja need omakorda k\u00e4ituvad sarnaselt oma j\u00e4reltulijatega jne. T\u00fc\u00fcpilises Kubernetes'e s\u00f5lmes on peamisel kontrollgrupil kolm j\u00e4reltulijat: <code>system.slice<\/code>, <code>user.slice<\/code> ja <code>kubepods<\/code>. Esimesi kahte alagruppi kasutatakse ressursside jaotamiseks kriitiliste s\u00fcsteemikoormuste ja kasutajaprogrammide vahel v\u00e4ljaspool K8s. Viimane \u2014 <code>kubepods<\/code> \u2014 luuakse Kubernetes'i poolt pod'ide vahel ressursside jaotamiseks.<\/p>\n<p>\u00dclaltoodud skeemilt on n\u00e4ha, et esimesed kaks alagruppi said kumbki <b>1024<\/b> aktsiat, samal ajal kui alagrupile kubepod on eraldatud <b>4096<\/b> aktsiat. Kuidas see on v\u00f5imalik: peamise grupi jaoks on saadaval ainult <b>4096<\/b> aktsiat, kuid tema alluvate aktsiate summa \u00fcletab seda numbrit m\u00e4rkimisv\u00e4\u00e4rselt (<b>6144<\/b>)? Asi on, et v\u00e4\u00e4rtus omab loogilist t\u00e4hendust, seet\u00f5ttu kasutab Linuxi planeerija (CFS) seda CPU ressursside proportsionaalseks jaotamiseks. Meie puhul saavad esimesed kaks gruppi <b>680<\/b> reaalseid osasid (16,6% 4096-st), samas kui kubepood saab \u00fclej\u00e4\u00e4nud <b>2736<\/b> osasid. Seisaku korral ei kasuta esimesed kaks gruppi eraldatud ressurssi.<\/p>\n<p>K\u00fcmmnes, et planeerijal on mehhanism, mis aitab v\u00e4ltida kasutamata CPU ressursside kadu. See suunab \u201eseisakusse\u201d j\u00e4\u00e4vad v\u00f5imsused globaalsetesse fondidesse, kust need jaotatakse gruppidesse, mis vajavad t\u00e4iendavaid CPU v\u00f5imsusi (jaotamine toimub partiitide kaupa, et v\u00e4ltida kadu \u00fcmmardamise t\u00f5ttu). Sarnast meetodit rakendatakse ka k\u00f5ikide j\u00e4reltulijate puhul.<\/p>\n<p>See mehhanism tagab CPU v\u00f5imsuste \u00f5iglase jaotamise ja j\u00e4lgib, et \u00fckski protsess ei \u201evarastaks\u201d ressursse teistelt.<\/p>\n<h4>CPU Limit<\/h4>\n<p>\nKuigi K8s-i piirangute ja p\u00e4ringute konfiguratsioonid n\u00e4evad v\u00e4lja sarnased, on nende rakendamine kardinaalselt erinev: see on <b>k\u00f5ige eksitavam<\/b> ja v\u00e4heseima dokumentatsiooni korral.<\/p>\n<p>K8s kasutab <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-design-CFS.txt\">CFS kvootide mehhanismi.<\/a><\/noindex> piiride rakendamiseks. Nende seaded on m\u00e4\u00e4ratletud failides <code>cfs_period_us<\/code> ja <code>cfs_quota_us<\/code> cgroup kaustas (seal asub ka fail <code>cpu.share<\/code>).<\/p>\n<p>Erinevalt <code>cpu.share<\/code>, on kvoot p\u00f5hinev <b>ajaperioodil<\/b>, mitte saadaval oleval protsessoriv\u00f5imsusel. <code>cfs_period_us<\/code> m\u00e4\u00e4rab perioodi (ajastu) kestuse \u2013 see on alati 100000 \u00b5s (100 ms). K8s-is on v\u00f5imalik seda v\u00e4\u00e4rtust muuta, kuid see on hetkel saadaval ainult alfa-versioonis. Planeerija kasutab ajastut kasutatud kvootide taask\u00e4ivitamiseks. Teine fail, <code>cfs_quota_us<\/code>, m\u00e4\u00e4rab saadaval oleva aja (kvoodi) iga ajastu jooksul. Pange t\u00e4hele, et see on samuti antud mikroskeedes. Kvoot v\u00f5ib \u00fcletada ajastu kestuse; teisis\u00f5nu, see v\u00f5ib olla \u00fcle 100 ms.<\/p>\n<p>Vaadakem kahte stsenaariumi 16- tuumasilma masinatel (k\u00f5ige levinum arvutit\u00fc\u00fcp meie Omios):<\/p>\n<p><img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/61c6105320af3a92a91cec1007da0d45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Stsenaarium 1: 2 niiti ja piirang 200 ms. Ilma trottlinguta<\/i><\/p>\n<p><img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/c33993341d5395bb73dda1f4c8482a11.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Stsenaarium 2: 10 niiti ja piirang 200 ms. Trottling algab p\u00e4rast 20 ms, juurde p\u00e4\u00e4s protsessori ressurssidele taastub veel 80 ms p\u00e4rast<\/i><\/p>\n<p>Oletame, et olete seadnud CPU piirangu <b>2<\/b> tuum; Kubernetes t\u00f5lgib selle v\u00e4\u00e4rtuse 200 ms-ks. See t\u00e4hendaks, et konteiner v\u00f5ib kasutada maksimaalselt 200 ms protsessoriaega ilma throttlinguta.<\/p>\n<p>Ja siin hakkab asi huvitavaks minema. Nagu eelnevalt mainitud, on saadaval olev kvoot 200 ms. Kui teil t\u00f6\u00f6tab samal ajal <b>k\u00fcmme<\/b> voogusid 12-jadise masina peal (vt joonist stsenaariumi 2 jaoks), kuni k\u00f5ik \u00fclej\u00e4\u00e4nud pod'id ootavad, kvoot l\u00f5peb vaid 20 ms p\u00e4rast (kuna 10 * 20 ms = 200 ms), ja k\u00f5ik selle pod'i vood \"hanguvad\". <i>(throttle)<\/i> j\u00e4rgmise 80 ms jooksul. Probleemi halvendab juba mainitud <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.kernel.org\/show_bug.cgi?id=198197\">planeerija viga<\/a><\/noindex>, mille t\u00f5ttu toimub \u00fclem\u00e4\u00e4rane throttling ja konteiner ei suuda isegi olemasolevat kvooti \u00e4ra kasutada.<\/p>\n<h2>Kuidas hinnata pod'ide trottlingut?<\/h2>\n<p>\nLihtsalt logige sisse pod'i ja tehke <code>cat \/sys\/fs\/cgroup\/cpu\/cpu.stat<\/code>.<\/p>\n<ul>\n<li> <code>nr_periods<\/code> \u2014 planeerija kogupindade arv;<\/li>\n<li> <code>nr_throttled<\/code> \u2014 throttled-perioodide arv; <code>nr_periods<\/code>;<\/li>\n<li> <code>throttled_time<\/code> \u2014 kogu throttled-aeg nanosekundites.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/a1818614914a8c31f7f7f1331cc02e8b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>Mis tegelikult toimub?<\/h3>\n<p>\nKokkuv\u00f5ttes saame \u00fchtlast k\u00f5rget throttlingut k\u00f5igis rakendustes. M\u00f5nikord on see <b>poolteise korra<\/b> v\u00f5rra tugevam kui arvutatud!<\/p>\n<p>See to erinevad vead \u2013 valmisoleku kontrolle (readiness) p\u00f5hjustavad t\u00f5rked, konteinerite seiskumised, v\u00f5rgu\u00fchenduste katkestused ja teenusek\u00f5nede ajaviivitused. L\u00f5ppkokkuv\u00f5ttes v\u00e4ljendub see suurema viivituse ja veateate arvu suurenemises.<\/p>\n<h2>Lahendus ja tagaj\u00e4rjed<\/h2>\n<p>\nSiin on k\u00f5ik lihtne. Otsustasime loobuda CPU piirangutest ja uuendada operatsioonis\u00fcsteemi tuuma klastrites k\u00f5ige v\u00e4rskemaks, kus viga oli parandatud. HTTP 5xx vigu meie teenustes oli kohe m\u00e4rgatavalt v\u00e4hem:<\/p>\n<h3>HTTP 5xx vead<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/86ab1694b952b5451a4ae075cbda2788.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>\u00dche kriitilise teenuse HTTP 5xx vead<\/i><\/p>\n<h3>Vastusaja p95<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/63922c8eb468366a7d05154a3adf40e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kriitilise teenuse p\u00e4ringute viivitus, 95. percentiil<\/i><\/p>\n<h3>Eksploiteerimise kulud<\/h3>\n<p>\n<img decoding=\"async\" alt=\"CPU piirangud ja agressiivne trottling Kuberneteses\" src=\"\/wp-content\/uploads\/2020\/04\/8405c26fcbd82853e296fa7e3bcba131.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kulunud eksemplari-tunnid<\/i><\/p>\n<h2>Mis on petuouks?<\/h2>\n<p>\nNagu artikli alguses \u00f6eldud:<\/p>\n<blockquote><p>V\u00f5ib teha analoogia kommunaalkorteriga\u2026 Kubernetes on nagu kinnisvaramaakler. Kuidas aga hoida \u00fc\u00fcrnikud konfliktideta? Mis juhtub, kui \u00fcks neist otsustab n\u00e4iteks v\u00f5tta vannitoa pooleks p\u00e4evaks enda kasutusse?<\/p><\/blockquote>\n<p>\nSiin on probleem. \u00dcks kehv konteiner v\u00f5ib \u00e4ra kasutada k\u00f5ik masina p\u00f6\u00f6rdusressursid. Kui teil on korralik rakenduste virn (n\u00e4iteks \u00f5igesti seadistatud JVM, Go, Node VM), siis ei ole see probleem: sellistes tingimustes saab t\u00f6\u00f6tada pikka aega. Aga kui rakendused on halvasti optimeeritud v\u00f5i \u00fcldse mitte optimeeritud (<code>FROM java:latest<\/code>), v\u00f5ib olukord kontrolli alt v\u00e4ljas olla. Meil Omios on automatiseeritud p\u00f5hja Dockerfiles koos adekvaatsete vaikeseadetega peamiste keelte virna jaoks, seega sellist probleemi ei tekkinud.<\/p>\n<p>Soovitame j\u00e4lgida m\u00f5\u00f5dikuid <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/usemethod.html\">USE<\/a><\/noindex> (kasutamine, k\u00fcllastus ja vead), API-late viivitusi ja vigade esinemise sagedust. J\u00e4lgige, et tulemused vastaksid ootustele.<\/p>\n<h2>Lingid<\/h2>\n<p>\nSelline on meie lugu. J\u00e4rgmised materjalid aitasid palju m\u00f5ista, mis toimub:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-design-CFS.txt\">kernel.org \u2192 CFS Scheduler<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-bwc.txt\">kernel.org \u2192 CFS Bandwidth Control<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/engineering.squarespace.com\/blog\/2017\/understanding-linux-container-scheduling\">Understanding Linux Container Scheduling<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.linuxjournal.com\/content\/everything-you-need-know-about-linux-containers-part-i-linux-control-groups-and-process\">Everything You Need to Know about Linux Containers, Part I: Linux Control Groups and Process Isolation<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/k8s.af\/\">Kubernetes Failure Stories<\/a><\/noindex> \u2014 otsige \"cpu throttling\".<\/li>\n<\/ul>\n<p>\nKubernetesi veateated:<\/p>\n<ul>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/51135#issuecomment-373454012\">#51135: Avoid setting CPU limits for Guaranteed pods<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/67577\">#67577: CFS quotas can lead to unnecessary throttling<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/gist.github.com\/bobrik\/2030ff040fad360327a5fab7a09c4ff1\">Liialt agressivne CFS<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nKas olete oma praktikas kokku puutunud sarnaste probleemidega v\u00f5i on teil kogemusi konteinerites k\u00e4ituvate tootmiskeskkondade trottlimisega? Jagage oma lugu kommentaarides!<\/p>\n<h2>P.S. t\u00f5lkija m\u00e4rkused<\/h2>\n<p>\nLugege ka meie blogist:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459326\/\">Automaatskalaarimine ja ressursside haldamine Kuberneteses (\u00fclevaade ja ettekande video)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/418269\/\">Kuidas t\u00f6\u00f6tab CPU Manager Kuberneteses<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/342822\/\">Mis toimub Kuberneteses, kui k\u00e4ivitame kubectl run? Osa 2<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/489668\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u0430 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f Omio \u2014 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0434\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes. \u0417\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e \u0441 \u0442\u0430\u043a\u0438\u043c\u0438 \u0441\u043b\u0443\u0447\u0430\u044f\u043c\u0438 \u043f\u043e\u043c\u043e\u0433\u0430\u0435\u0442 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0441\u0448\u0438\u0440\u044f\u0442\u044c \u043a\u0440\u0443\u0433\u043e\u0437\u043e\u0440, \u043d\u043e \u0438 \u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0442\u044c \u043d\u0435\u0442\u0440\u0438\u0432\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b. \u0414\u043e\u0432\u043e\u0434\u0438\u043b\u043e\u0441\u044c \u043b\u0438 \u0432\u0430\u043c \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0441 \u0442\u0435\u043c, \u0447\u0442\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u00ab\u0437\u0430\u0441\u0442\u0440\u0435\u0432\u0430\u043b\u043e\u00bb \u043d\u0430 \u043c\u0435\u0441\u0442\u0435, \u043f\u0435\u0440\u0435\u0441\u0442\u0430\u0432\u0430\u043b\u043e \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u043d\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u044b \u043e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0435 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":77694,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-77693","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.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u0430 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f Omio \u2014 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0434\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes.\" \/>\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\/et\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\udd47CPU-\u043b\u0438\u043c\u0438\u0442\u044b \u0438 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u0442\u0440\u043e\u0442\u0442\u043b\u0438\u043d\u0433 \u0432 Kubernetes | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u0430 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f Omio \u2014 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0434\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes\" \/>\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=\"2020-04-12T23:42:39+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-04-12T23:42:39+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\udd47CPU piirangud ja agressiivne trottlemine Kuberneteses | ProHoster","description":"M\u00e4rkus: see \u00f5petlik lugu Omio \u2014 Euroopa reiside agenta \u2014 viib lugejad alates p\u00f5hiteooriast kuni huvitavate praktiliste n\u00fcanssideni Kubernetes'i konfiguratsioonis.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\udd47CPU-\u043b\u0438\u043c\u0438\u0442\u044b \u0438 \u0430\u0433\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u044b\u0439 \u0442\u0440\u043e\u0442\u0442\u043b\u0438\u043d\u0433 \u0432 Kubernetes | ProHoster","og:description":"\u041f\u0440\u0438\u043c. \u043f\u0435\u0440\u0435\u0432.: \u044d\u0442\u0430 \u043f\u043e\u0443\u0447\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0438\u0441\u0442\u043e\u0440\u0438\u044f Omio \u2014 \u0435\u0432\u0440\u043e\u043f\u0435\u0439\u0441\u043a\u043e\u0433\u043e \u0430\u0433\u0440\u0435\u0433\u0430\u0442\u043e\u0440\u0430 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u0439 \u2014 \u043f\u0440\u043e\u0432\u043e\u0434\u0438\u0442 \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u0435\u0439 \u043e\u0442 \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u0442\u0435\u043e\u0440\u0438\u0438 \u0434\u043e \u0443\u0432\u043b\u0435\u043a\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0435\u0439 \u0432 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 Kubernetes.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes","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":"2020-04-12T23:42:39+00:00","article:modified_time":"2020-04-12T23:42:39+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"77693","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 17:13:23","updated":"2022-09-29 12:06:45","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/77693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=77693"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/77693\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/77694"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=77693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=77693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=77693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}