{"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\/sq\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes","title":{"rendered":"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i><b>Sh\u00ebn. p\u00ebrkth.<\/b>: kjo storie e m\u00ebsimdh\u00ebnies nga Omio \u2014 nj\u00eb grumbullues europian i udh\u00ebtimeve \u2014 e kalon lexuesin nga teoria baz\u00eb n\u00eb nuancat emocionuese praktike t\u00eb konfigurimit t\u00eb Kubernetes. Njohja me raste t\u00eb tilla ndihmon jo vet\u00ebm n\u00eb zgjerimin e horizontit, por gjithashtu n\u00eb parandaluar problemet jo triviale.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/1175c9df746e43b5a7d81476164929db.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nA keni hasur ndonj\u00ebher\u00eb q\u00eb aplikacioni t\u00eb \"ngjitej\" n\u00eb vend, t\u00eb ndalonte s\u00eb p\u00ebrgjigjuri ndaj k\u00ebrkesave p\u00ebr kontrollin e gjendjes dhe t\u00eb mos e kuptonit arsyen e k\u00ebtij sjelljeje? Nj\u00eb nga shpjegimet e mundshme lidhet me kufirin e kuotave p\u00ebr burimet CPU. Kjo \u00ebsht\u00eb ajo p\u00ebr t\u00eb cil\u00ebn do t\u00eb flasim n\u00eb k\u00ebt\u00eb artikull.<\/p>\n<p><b>TL;DR:<br \/>\nNe rekomandojm\u00eb fuqish\u00ebm t\u00eb hiqni dor\u00eb nga kufizimet e CPU-s\u00eb n\u00eb Kubernetes (ose t\u00eb \u00e7aktivizoni kuotat CFS n\u00eb Kubelet), n\u00ebse po p\u00ebrdorni nj\u00eb version t\u00eb b\u00ebrtham\u00ebs Linux me gabim n\u00eb kuotat CFS. <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.kernel.org\/show_bug.cgi?id=198197\">ka<\/a><\/noindex> \u00ebsht\u00eb nj\u00eb gabim serioz dhe <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kubernetes\/kubernetes\/issues\/67577\">i njohur mir\u00eb<\/a><\/noindex> q\u00eb \u00e7on n\u00eb shtr\u00ebngime t\u00eb tepruara dhe vonesa<\/b>.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>N\u00eb Omio <b>e gjith\u00eb infrastruktura menaxhohet nga Kubernetes<\/b>. T\u00eb gjitha ngarkesat tona stateful dhe stateless funksionojn\u00eb ekskluzivisht n\u00eb Kubernetes (ne p\u00ebrdorim Google Kubernetes Engine). Gjat\u00eb gjasht\u00eb muajve t\u00eb fundit, kemi filluar t\u00eb v\u00ebrejm\u00eb ngadal\u00ebsime t\u00eb rastit. Aplikacionet ngecin ose ndalojn\u00eb s\u00eb p\u00ebrgjigjuri ndaj kontrolleve t\u00eb gjendjes, humbasin lidhjen me rrjetin etj. Ky sjellje na ka l\u00ebn\u00eb n\u00eb ng\u00ebr\u00e7 p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb, dhe p\u00ebrfundimisht vendos\u00ebm t\u00eb merreshim me problemin m\u00eb af\u00ebr.<\/p>\n<p>P\u00ebrmbledhje e artikullit:<\/p>\n<ul>\n<li> Disa fjal\u00eb rreth kontejner\u00ebve dhe Kubernetes;<\/li>\n<li> Si jan\u00eb implementuar k\u00ebrkesat dhe kufizimet e CPU-s\u00eb;<\/li>\n<li> Si funksionon kufiri i CPU n\u00eb ambientet me disa b\u00ebrthama;<\/li>\n<li> Si t\u00eb monitoroni shtr\u00ebngimin e CPU;<\/li>\n<li> Zgjidhja e problemit dhe nuancat.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Disa fjal\u00eb rreth kontejner\u00ebve dhe Kubernetes<\/h2>\n<p>\nKubernetes, n\u00eb thelb, \u00ebsht\u00eb standardi modern n\u00eb bot\u00ebn e infrastruktur\u00ebs. Detyra e tij kryesore \u00ebsht\u00eb orkestrimi i kontejner\u00ebve.<\/p>\n<h3>Kontenier\u00ebt<\/h3>\n<p>\nN\u00eb t\u00eb kaluar\u00ebn, na duhej t\u00eb krijonim artefakte si Java JAR\/WAR, Python Egg ose skedar\u00eb ekzekutiv\u00eb p\u00ebr t'i ekzekutuar m\u00eb pas n\u00eb server\u00eb. Megjithat\u00eb, p\u00ebr t'i b\u00ebr\u00eb ato t\u00eb funksiononin, duhej t\u00eb b\u00ebnim pun\u00eb shtes\u00eb: t\u00eb instalonim mjedisin e ekzekutimit (Java\/Python), t\u00eb vendosnim skedar\u00ebt e nevojsh\u00ebm n\u00eb vendet e duhura, t\u00eb siguronim p\u00ebrputhshm\u00ebrin\u00eb me versionin specifik t\u00eb sistemit operativ etj. N\u00eb andere fjal\u00eb, duhej t\u00eb tregonim kujdes t\u00eb ve\u00e7ant\u00eb n\u00eb menaxhimin e konfigurimeve (\u00e7ka shpesh shkaktonte mosmarr\u00ebveshje midis zhvilluesve dhe administrator\u00ebve t\u00eb sistemeve).<\/p>\n<p><b>Kontejner\u00ebt e kan\u00eb ndryshuar gjith\u00e7ka.<\/b> Tani tani b\u00ebhet nj\u00eb imazh kontejneri. Ai mund t\u00eb paraqitet si nj\u00eb lloj skedari ekzekutiv t\u00eb zgjeruar, i cili p\u00ebrmban jo vet\u00ebm programin, por edhe nj\u00eb mjedis t\u00eb plot\u00eb ekzekutimi (Java\/Python\/\u2026), si dhe skedar\u00ebt\/paketat e nevojshme, t\u00eb instaluar paraprakisht dhe gati p\u00ebr tu nisur. Konteiner\u00ebt mund t\u00eb vendosen dhe fillohen n\u00eb servera t\u00eb ndrysh\u00ebm pa veprime t\u00eb tjera shtes\u00eb.<\/p>\n<p>P\u00ebr m\u00eb tep\u00ebr, konteiner\u00ebt funksionojn\u00eb n\u00eb nj\u00eb ambient-kuti t\u00eb vetin. Ata kan\u00eb nj\u00eb adapter t\u00eb vet virtual t\u00eb rrjetit, nj\u00eb sistem skedari me qasje t\u00eb kufizuar, hierarkin\u00eb e tyre t\u00eb proceseve, kufizime p\u00ebr CPU dhe memorie etj. T\u00eb gjitha k\u00ebto realizohen fal\u00eb nj\u00eb n\u00ebn-sistemi t\u00eb ve\u00e7ant\u00eb t\u00eb b\u00ebrtham\u00ebs Linux \u2014 namespaces (hap\u00ebsirat e emrave).<\/p>\n<h3>Kubernetes<\/h3>\n<p>\nSi\u00e7 u tha m\u00eb par\u00eb, Kubernetes \u00ebsht\u00eb orkestruesi i konteiner\u00ebve. Ai funksionon k\u00ebshtu: ju i ofroni atij nj\u00eb grup makinash dhe m\u00eb pas thoni: \u201cHej, Kubernetes, nis dhjet\u00eb kopje t\u00eb konteinerit tim me 2 procesor\u00eb dhe 3 GB memorie p\u00ebr secilin, dhe mbaji ato n\u00eb gjendje pune!\u201d. Kubernetes merr p\u00ebrsip\u00ebr gjith\u00e7ka tjet\u00ebr. Ai do t\u00eb gjej\u00eb kapacitete t\u00eb lira, do t\u00eb nis\u00eb konteiner\u00ebt dhe do t\u2019i ristartoj\u00eb sipas nevoj\u00ebs, do t\u00eb nxjerr\u00eb p\u00ebrdit\u00ebsime kur t\u00eb ndryshojn\u00eb versionet etj. N\u00eb thelb, Kubernetes lejon t\u00eb disassociosh prej p\u00ebrb\u00ebr\u00ebsit harduerik dhe b\u00ebn q\u00eb t\u00eb gjith\u00eb diversitetin e sistemeve t\u00eb jet\u00eb t\u00eb p\u00ebrdorsh\u00ebm p\u00ebr vendosjen dhe funksionimin e aplikacioneve.<\/p>\n<p><img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/6509bb1b66a4a0f5e9a479d0bd6ececb.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Kubernetes nga pik\u00ebpamja e nj\u00eb personi t\u00eb zakonsh\u00ebm<\/i><\/p>\n<h2>\u00c7far\u00eb jan\u00eb k\u00ebrkesat dhe kufizimet n\u00eb Kubernetes<\/h2>\n<p>\nMir\u00eb, ne u mor\u00ebm vesh me konteiner\u00ebt dhe Kubernetes. Po ashtu, ne dim\u00eb se disa konteiner\u00eb mund t\u00eb jen\u00eb n\u00eb t\u00eb nj\u00ebjt\u00ebn makin\u00eb.<\/p>\n<p>Mund t\u00eb b\u00ebhet nj\u00eb analogji me nj\u00eb apartament me shum\u00eb dhoma. Merret nj\u00eb ambient i gjer\u00eb (makinat\/nodet) dhe jepet me qira disa t\u00eb dh\u00ebn\u00ebsve (konteiner\u00ebve). Kubernetes vepron si agjenti imobiliar. Lind pyetja, si t'i mbash qiramarr\u00ebsit t\u00eb mos konflitkojn\u00eb me nj\u00ebri-tjetrin? \u00c7far\u00eb ndodh n\u00ebse nj\u00ebri prej tyre, le t\u00eb themi, vendos t\u00eb z\u00ebr\u00eb banj\u00ebn p\u00ebr gjysm\u00eb dite?<\/p>\n<p>Saktesisht k\u00ebtu hyjn\u00eb n\u00eb loj\u00eb k\u00ebrkesat dhe kufizimet. CPU <b>Request<\/b> \u00ebsht\u00eb e nevojshme ekskluzivisht p\u00ebr planifikim. \u00cbsht\u00eb di\u00e7ka si nj\u00eb \"list\u00eb d\u00ebshirash\" e konteinerit, dhe p\u00ebrdoret p\u00ebr t\u00eb zgjedhur nodin m\u00eb t\u00eb p\u00ebrshtatsh\u00ebm. N\u00eb t\u00eb nj\u00ebjt\u00ebn koh\u00eb, CPU <b>Limit<\/b> mund t\u00eb krahasohet me nj\u00eb kontrat\u00eb qiraje \u2014 sa her\u00eb q\u00eb ne zgjedhim nj\u00eb nod p\u00ebr konteinerin, ai <b>nuk mund<\/b> t\u00eb kaloj\u00eb kufijt\u00eb e vendosur.<\/p>\n<h3>Si jan\u00eb implementuar k\u00ebrkesat dhe kufizimet n\u00eb Kubernetes<\/h3>\n<p>\nKubernetes p\u00ebrdor nj\u00eb mekaniz\u00ebm t\u00eb integruar t\u00eb b\u00ebrtham\u00ebs p\u00ebr ngadal\u00ebsimin e (cil\u00ebsimin) p\u00ebr t\u00eb zbatuar kufizimet e CPU-s\u00eb. N\u00ebse aplikacioni tejkalon kufirin, aktivizohet ngadal\u00ebsimi (dmth. ai merr m\u00eb pak cikle CPU). K\u00ebrkesat dhe kufizimet p\u00ebr memorien jan\u00eb organizuar ndryshe, prandaj jan\u00eb m\u00eb t\u00eb lehta p\u00ebr t'u zbuluar. Mjafton t\u00eb kontrolloni statusin e fundit t\u00eb rinisjes s\u00eb pod-it: a \u00ebsht\u00eb ai \"OOMKilled\". Me ngadal\u00ebsimin e CPU-s\u00eb, gj\u00ebrat nuk jan\u00eb aq t\u00eb thjeshta, sepse K8s ofron vet\u00ebm metrika p\u00ebr p\u00ebrdorimin, jo p\u00ebr cgroups.<\/p>\n<h4>CPU Request<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/fbc8bf3f775ffd9513374ce94b20535d.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Si \u00ebsht\u00eb implementuar CPU request<\/i><\/p>\n<p>P\u00ebr thjesht\u00ebsi, le t\u00eb marrim nj\u00eb proces si shembull me nj\u00eb makin\u00eb me CPU 4-n\u00eb.<\/p>\n<p>K8s p\u00ebrdor mekanizmin e grupeve t\u00eb kontrollit (cgroups) p\u00ebr t\u00eb menaxhuar shp\u00ebrndarjen e burimeve (memori dhe procesor). Ai ka nj\u00eb model hierarkik: nj\u00eb trash\u00ebgimtar merr limitet e grupit prind. Detajet e shp\u00ebrndarjes ruhen n\u00eb sistemin virtual t\u00eb skedave (<code>\/sys\/fs\/cgroup<\/code>). N\u00eb rastin e procesorit, kjo \u00ebsht\u00eb <code>\/sys\/fs\/cgroup\/cpu,cpuacct\/*<\/code>.<\/p>\n<p>K8s p\u00ebrdor skedarin <code>cpu.share<\/code> p\u00ebr shp\u00ebrndarjen e burimeve t\u00eb procesorit. N\u00eb rastin ton\u00eb, grupi kryesor i kontrollit merr 4096 pjes\u00eb t\u00eb burimeve t\u00eb CPU \u2014 100% e kapacitetit t\u00eb disponuesh\u00ebm t\u00eb procesorit (1 b\u00ebrtham\u00eb = 1024; kjo \u00ebsht\u00eb nj\u00eb vler\u00eb fixe). Grupi kryesor shp\u00ebrndan burimet n\u00eb m\u00ebnyr\u00eb proporcionale n\u00eb var\u00ebsi t\u00eb pjes\u00ebve t\u00eb f\u00ebmij\u00ebve t\u00eb tij, t\u00eb shkruara n\u00eb <code>cpu.share<\/code>, dhe ata, nga ana e tyre, veprojn\u00eb nj\u00ebsoj me f\u00ebmij\u00ebt e tyre, etj. N\u00eb nj\u00eb nyje tipike Kubernetes, grupi kryesor i kontrollit ka tre f\u00ebmij\u00eb: <code>system.slice<\/code>, <code>user.slice<\/code> dhe <code>kubepods<\/code>. Dy grupet e para p\u00ebrdoren p\u00ebr shp\u00ebrndarjen e burimeve midis ngarkesave sistemike kritike dhe programeve t\u00eb p\u00ebrdoruesit jasht\u00eb K8s. E fundit \u2014 <code>kubepods<\/code> \u2014 krijohet nga Kubernetes p\u00ebr t\u00eb shp\u00ebrndar\u00eb burimet midis pod-ve.<\/p>\n<p>N\u00eb skem\u00ebn e m\u00ebsip\u00ebrme, shihet se grupet e para dhe t\u00eb dyta mor\u00ebn nga <b>1024<\/b> pjes\u00eb, nd\u00ebrsa grupit kubepod i jan\u00eb ndar\u00eb <b>4096<\/b> pjes\u00eb. Si \u00ebsht\u00eb e mundur kjo: p\u00ebr shkak se grupit kryesor i jan\u00eb t\u00eb disponueshme vet\u00ebm <b>4096<\/b> pjes\u00eb, nd\u00ebrsa shuma e pjes\u00ebve t\u00eb f\u00ebmij\u00ebve t\u00eb tij tejkalon ndjesh\u00ebm k\u00ebt\u00eb num\u00ebr (<b>6144<\/b>)? Arsyeja \u00ebsht\u00eb se vlera ka kuptim logjik, prandaj planifikuesi Linux (CFS) e p\u00ebrdor at\u00eb p\u00ebr shp\u00ebrndarjen proporcionale t\u00eb burimeve t\u00eb CPU. N\u00eb rastin ton\u00eb, dy grupet e para marrin nga <b>680<\/b> pjes\u00eb t\u00eb v\u00ebrteta (16.6% e 4096), nd\u00ebrsa kubepod merr pjes\u00ebt e mbetura <b>2736<\/b> pjes\u00eb. N\u00eb rastin e papun\u00ebsis\u00eb, grupet e para nuk do t\u00eb p\u00ebrdorin burimet e ndara.<\/p>\n<p>Fatke, planifikuesi ka nj\u00eb mekaniz\u00ebm q\u00eb parandalon humbjen e burimeve t\u00eb padisponueshme CPU. Ai transferon kapacitetet \"n\u00eb pritje\" n\u00eb nj\u00eb pool global, nga i cili ato shp\u00ebrndahen n\u00eb grupe q\u00eb kan\u00eb nevoj\u00eb p\u00ebr kapacitet shtes\u00eb t\u00eb procesorit (transferimi ndodh n\u00eb grupe p\u00ebr t\u00eb shmangur humbjet nga rroundimi). Nj\u00eb metod\u00eb e ngjashme aplikohet gjithashtu p\u00ebr t\u00eb gjitha pasardh\u00ebsit e pasardh\u00ebsve.<\/p>\n<p>Ky mekaniz\u00ebm siguron nj\u00eb shp\u00ebrndarje t\u00eb drejt\u00eb t\u00eb kapaciteteve t\u00eb procesorit dhe siguron q\u00eb asnj\u00eb proces t\u00eb mos \"vjedh\u00eb\" burime nga t\u00eb tjer\u00ebt.<\/p>\n<h4>Kufiri i CPU<\/h4>\n<p>\nMegjith\u00ebse konfigurimet e limiteve dhe k\u00ebrkesave n\u00eb K8s duken t\u00eb ngjashme, zbatimi i tyre \u00ebsht\u00eb radikalisht i ndrysh\u00ebm: kjo <b>\u00ebsht\u00eb pjesa m\u00eb mashtruese<\/b> dhe m\u00eb pak e dokumentuar.<\/p>\n<p>K8s angazhon <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-design-CFS.txt\">mekanizmin e kuotave CFS<\/a><\/noindex> p\u00ebr t\u00eb realizuar limitet. Konfigurimet e tyre p\u00ebrcaktohen n\u00eb skedar\u00ebt <code>cfs_period_us<\/code> dhe <code>cfs_quota_us<\/code> n\u00eb direktorin\u00eb cgroup (aty ndodhet gjithashtu skedari <code>cpu.share<\/code>).<\/p>\n<p>N\u00eb dallim nga <code>cpu.share<\/code>, kuota bazohet n\u00eb <b>periudh\u00ebn e koh\u00ebs<\/b>, dhe jo n\u00eb kapacitetin e disponuesh\u00ebm t\u00eb procesorit. <code>cfs_period_us<\/code> p\u00ebrcakton vazhdim\u00ebsin\u00eb e periudh\u00ebs (epok\u00ebs) - kjo gjithmon\u00eb \u00ebsht\u00eb 100000 \u00b5s (100 ms). N\u00eb K8s ka mund\u00ebsi p\u00ebr t\u00eb ndryshuar k\u00ebt\u00eb vler\u00eb, megjithat\u00eb ajo \u00ebsht\u00eb deri tani e disponueshme vet\u00ebm n\u00eb versionin alfa. Planifikuesi p\u00ebrdor epok\u00ebn p\u00ebr t\u00eb rinisur kuotat e p\u00ebrdorura. Skedari tjet\u00ebr, <code>cfs_quota_us<\/code>, p\u00ebrcakton koh\u00ebn e disponueshme (kuot\u00ebn) n\u00eb \u00e7do epok\u00eb. Kini mend p\u00ebr at\u00eb q\u00eb gjithashtu jepet n\u00eb mikrosekonda. Kuota mund t\u00eb tejkaloj\u00eb vazhdim\u00ebsin\u00eb e epok\u00ebs; n\u00eb fjal\u00eb t\u00eb tjera, ajo mund t\u00eb jet\u00eb m\u00eb shum\u00eb se 100 ms.<\/p>\n<p>Le t\u00eb shqyrtojm\u00eb dy skenar\u00eb n\u00eb makinat me 16 b\u00ebrthama (tipi m\u00eb i zakonsh\u00ebm i kompjuter\u00ebve te ne n\u00eb Omio):<\/p>\n<p><img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/61c6105320af3a92a91cec1007da0d45.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Skenari 1: 2 flukse dhe limit prej 200 ms. Pa trottling.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/c33993341d5395bb73dda1f4c8482a11.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Skenari 2: 10 flukse dhe limit prej 200 ms. Trottling fillon pas 20 ms, aksesin n\u00eb burimet e CPU rikthehet pas 80 ms.<\/i><\/p>\n<p>Supozoni se keni vendosur kufirin e CPU n\u00eb <b>2<\/b> b\u00ebrthama; Kubernetes do ta konvertoj\u00eb k\u00ebt\u00eb vler\u00eb n\u00eb 200 ms. Kjo do t\u00eb thot\u00eb q\u00eb kontejneri mund t\u00eb p\u00ebrdor\u00eb maksimumi 200 ms koh\u00eb procesori pa trottling.<\/p>\n<p>Dhe k\u00ebtu fillon arg\u00ebtimi. Si\u00e7 u tha m\u00eb sip\u00ebr, kuota e disponueshme \u00ebsht\u00eb 200 ms. N\u00ebse keni 10 flukse q\u00eb punojn\u00eb paralelisht n\u00eb nj\u00eb makin\u00eb me 12 b\u00ebrthama (shih ilustrimin e skenarit 2), nd\u00ebrsa t\u00eb gjith\u00eb pod\u2019\u00ebt e tjer\u00eb jan\u00eb n\u00eb pritje, kuota do t\u00eb shteroj\u00eb pas vet\u00ebm 20 ms (pasi 10 * 20 ms = 200 ms), dhe t\u00eb gjith\u00eb flukset e k\u00ebtij pod\u2019i do t\u00eb \"ngelin\" <b>(trottling)<\/b> e rrjedhave n\u00eb nj\u00eb makin\u00eb me 12 b\u00ebrthama (shih ilustrimin p\u00ebr skenarin 2), nd\u00ebrsa t\u00eb gjith\u00eb pod-t e tjer\u00eb jan\u00eb n\u00eb pritje, kuota do t\u00eb p\u00ebrfundoj\u00eb pas vet\u00ebm 20 ms (pasi 10 * 20 ms = 200 ms), dhe t\u00eb gjitha rrjedhat e k\u00ebtij pod-i do t\u00eb \"ngelin\" <i>(throttle)<\/i> p\u00ebr 80 ms t\u00eb ardhsh\u00ebm. Situat\u00ebn e r\u00ebndon edhe m\u00eb shum\u00eb, ndryshe nga p\u00ebrmendur <noindex><a rel=\"nofollow\" href=\"https:\/\/bugzilla.kernel.org\/show_bug.cgi?id=198197\">bugu i planifikuesit<\/a><\/noindex>, p\u00ebr shkak t\u00eb cilit ndodh trottlizim i tepruar dhe kontejneri nuk mund t\u00eb prodhoj\u00eb as edhe kuot\u00ebn e vet.<\/p>\n<h2>Si t\u00eb vler\u00ebsojm\u00eb trotlitjen n\u00eb pod-e?<\/h2>\n<p>\nMjafton t\u00eb hyni n\u00eb pod dhe t\u00eb ekzekutoni <code>cat \/sys\/fs\/cgroup\/cpu\/cpu.stat<\/code>.<\/p>\n<ul>\n<li> <code>nr_periods<\/code> \u2014 numri total i periudhave t\u00eb planifikuesit;<\/li>\n<li> <code>nr_throttled<\/code> \u2014 numri i periudhave t\u00eb trottlizuara n\u00eb p\u00ebrb\u00ebrje <code>nr_periods<\/code>;<\/li>\n<li> <code>throttled_time<\/code> \u2014 koha e totalizuar e trottlizuar n\u00eb nanosekonda.<\/li>\n<\/ul>\n<p>\n<img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/a1818614914a8c31f7f7f1331cc02e8b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h3>\u00c7far\u00eb po ndodh n\u00eb t\u00eb v\u00ebrtet\u00eb?<\/h3>\n<p>\nSi rezultat, ne kemi nj\u00eb trottlizim t\u00eb lart\u00eb n\u00eb t\u00eb gjith\u00eb aplikacionet. Ndonj\u00ebher\u00eb \u00ebsht\u00eb n\u00eb <b>nj\u00eb e gjysm\u00eb her\u00eb<\/b> m\u00eb e fort\u00eb se sa e pritur!<\/p>\n<p>Kjo \u00e7on n\u00eb gabime t\u00eb ndryshme - d\u00ebshtime t\u00eb kontrolleve t\u00eb gatishm\u00ebris\u00eb (readiness), ngritje t\u00eb kontejner\u00ebve, nd\u00ebrprerje t\u00eb lidhjeve rrjet, koh\u00ebzgjatje brenda thirrjeve sh\u00ebrbimore. N\u00eb fund, kjo shfaqet si nj\u00eb rritje e vonesave dhe nj\u00eb rritje e numrit t\u00eb gabimeve.<\/p>\n<h2>Zgjidhja dhe pasojat<\/h2>\n<p>\nK\u00ebtu \u00ebsht\u00eb e thjesht\u00eb. Ne hoq\u00ebm limitet e CPU-s\u00eb dhe u angazhumi t\u00eb p\u00ebrdit\u00ebsonim kernelin e OS n\u00eb klastere n\u00eb versionin m\u00eb t\u00eb fundit, n\u00eb t\u00eb cilin gabimi ishte rregulluar. Numri i gabimeve (HTTP 5xx) n\u00eb sh\u00ebrbimet tona ra menj\u00ebher\u00eb ndjesh\u00ebm:<\/p>\n<h3>Gabimet HTTP 5xx<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/86ab1694b952b5451a4ae075cbda2788.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Gabimet HTTP 5xx t\u00eb nj\u00eb sh\u00ebrbimi kritik<\/i><\/p>\n<h3>Koha e p\u00ebrgjigjes p95<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/63922c8eb468366a7d05154a3adf40e6.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Vonesa e k\u00ebrkesave t\u00eb nj\u00eb sh\u00ebrbimi kritik, percentili 95<\/i><\/p>\n<h3>Shpenzimet operative<\/h3>\n<p>\n<img decoding=\"async\" alt=\"Limitet e CPU dhe throttling agresiv n\u00eb Kubernetes\" src=\"\/wp-content\/uploads\/2020\/04\/8405c26fcbd82853e296fa7e3bcba131.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Numri i or\u00ebve t\u00eb shpenzuara p\u00ebr instance<\/i><\/p>\n<h2>N\u00eb \u00e7far\u00eb gracke?<\/h2>\n<p>\nSi\u00e7 u tha n\u00eb fillim t\u00eb artikullit:<\/p>\n<blockquote><p>Mund t\u00eb b\u00ebhet nj\u00eb analogji me nj\u00eb apartament komunal... Kubernetes vepron si agjenti imobiliar. Por si t\u00eb mbash qiraxhinjt\u00eb t\u00eb mos m\u00ebndojn\u00eb me nj\u00ebri-tjetrin? \u00c7far\u00eb n\u00ebse nj\u00ebri prej tyre, le t\u00eb themi, vendos t\u00eb z\u00ebr\u00eb banj\u00ebn p\u00ebr gjysm\u00eb dite?<\/p><\/blockquote>\n<p>\nK\u00ebtu \u00ebsht\u00eb gracka. Nj\u00eb kontejner i pakujdessh\u00ebm mund t\u00eb p\u00ebrthith\u00eb t\u00eb gjith\u00eb burimet e disponueshme t\u00eb procesorit n\u00eb makin\u00eb. N\u00ebse keni nj\u00eb grumbull t\u00eb kujdessh\u00ebm aplikacionesh (p\u00ebr shembull, JVM t\u00eb konfiguruara si\u00e7 duhet, Go, Node VM), at\u00ebher\u00eb kjo nuk \u00ebsht\u00eb nj\u00eb problem: mund t\u00eb punoni n\u00eb k\u00ebto kushte p\u00ebr nj\u00eb koh\u00eb t\u00eb gjat\u00eb. Por n\u00ebse aplikacionet jan\u00eb optimizuar keq ose fare nuk jan\u00eb optimizuar (<code>FROM java:latest<\/code>), situata mund t\u00eb dal\u00eb jasht\u00eb kontrollit. Ne n\u00eb Omio kemi Dockerfile bazik\u00eb t\u00eb automatizuar me konfigurime t\u00eb arsyeshme n\u00eb default p\u00ebr grumbullin e gjuh\u00ebve kryesore, prandaj nj\u00eb problem i till\u00eb nuk ka ekzistuar.<\/p>\n<p>Ne rekomandojm\u00eb t\u00eb v\u00ebzhgoni metrikat <noindex><a rel=\"nofollow\" href=\"http:\/\/www.brendangregg.com\/usemethod.html\">USE<\/a><\/noindex> (p\u00ebrdorimi, ngopja dhe gabimet), vonesat e API dhe frekuenca e shfaqjes s\u00eb gabimeve. Sigurohuni q\u00eb rezultatet t\u00eb p\u00ebrputhen me pritshm\u00ebrit\u00eb.<\/p>\n<h2>Linket<\/h2>\n<p>\nKjo \u00ebsht\u00eb historia jon\u00eb. Materialet n\u00eb vijim ndihmuan shum\u00eb p\u00ebr t\u00eb kuptuar at\u00eb q\u00eb po ndodh:<\/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 Planifikuesi<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/www.kernel.org\/doc\/Documentation\/scheduler\/sched-bwc.txt\">kernel.org \u2192 Kontrolli i Bandwidth-it CFS<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/engineering.squarespace.com\/blog\/2017\/understanding-linux-container-scheduling\">Kuadri p\u00ebrkujtimor i planifikimit t\u00eb kontejner\u00ebve Linux<\/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\">Gjith\u00e7ka q\u00eb Ju Duhet t\u00eb Dini p\u00ebr Kontejner\u00ebt Linux, Pjesa I: Grupet e Kontrollit Linux dhe Izolimi i Proceseve<\/a><\/noindex>;<\/li>\n<li> <noindex><a rel=\"nofollow\" href=\"https:\/\/k8s.af\/\">Historit\u00eb e D\u00ebshtimit t\u00eb Kubernetes<\/a><\/noindex> \u2014 k\u00ebrkoni \"cpu throttling\".<\/li>\n<\/ul>\n<p>\nRaportet p\u00ebr gabime t\u00eb Kubernetes:<\/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\">CFS tep\u00ebr agresiv<\/a><\/noindex>.<\/li>\n<\/ul>\n<p>\nA keni p\u00ebrjetuar probleme t\u00eb ngjashme n\u00eb praktik\u00ebn tuaj ose keni p\u00ebrvoj\u00eb q\u00eb lidhet me trottlimin n\u00eb mjedise prodhimi t\u00eb kontejnerizuara? Ndani historin\u00eb tuaj n\u00eb komentet!<\/p>\n<h2>P.S. nga p\u00ebrkthyesi<\/h2>\n<p>\nLexoni gjithashtu n\u00eb blogun ton\u00eb:<\/p>\n<ul>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/459326\/\">Autoskalimi dhe menaxhimi i burimeve n\u00eb Kubernetes (p\u00ebrmbledhje dhe video e prezantimit)<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/418269\/\">Si funksionon Menaxheri i CPU n\u00eb Kubernetes<\/a><\/noindex>\u00bb;<\/li>\n<li> \u00ab<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/flant\/blog\/342822\/\">\u00c7far\u00eb ndodh n\u00eb Kubernetes gjat\u00eb ekzekutimit t\u00eb kubectl run? Pjesa 2<\/a><\/noindex>\u00bb.<\/li>\n<\/ul>\n<p>Burimi: <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.2 - 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\/sq\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\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\/sq\/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\udd47Limitet e CPU-s\u00eb dhe trottlimi agresiv n\u00eb Kubernetes | ProHoster","description":"Sh\u00ebnim i p\u00ebrkthyesit: kjo histori edukative e Omio \u2014 agregatori evropian i udh\u00ebtimeve \u2014 \u00e7on lexuesit nga teoria baz\u00eb n\u00eb nuanca interesante praktike n\u00eb konfigurimin e Kubernetes.","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/cpu-limity-i-agressivnyj-trottling-v-kubernetes","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","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\/sq\/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\/sq\/wp-json\/wp\/v2\/posts\/77693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=77693"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/77693\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/77694"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=77693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=77693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=77693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}