Zákazníci se často ptají na CPU steal time. Obzvláště ti, kteří procesory intenzivně využívají a pro které je to klíčové výkonnostní kritérium. Mezi nastavením a chováním procesorů a jader ve fyzickém a virtuálním prostředí existuje poměrně dost rozdílů. Dokonce i mezi poskytovateli cloudových služeb existují rozdíly v nastavení, které na první pohled ztěžují přímé srovnání. Z tohoto důvodu jsme považovali za užitečné poskytnout zákazníkům stručný přehled našeho nastavení a logiky přidělování CPU a také vysvětlit nejčastější zdroje CPU steal time.
Nejprve tedy pro ty, kteří tento koncept neznají: CPU steal time je doba, po kterou musí vaše virtuální CPU v rámci cloudového serveru čekat na skutečné fyzické CPU, zatímco hypervizor je zaneprázdněn jeho využíváním pro jiné věci (jako jsou jiné virtuální stroje / cloudové servery). Toto je skvělý článek o CPU steal time, který rozhodně stojí za přečtení.
Pár informací o našem nastavení CPU
První věc, kterou je třeba pochopit, se týká způsobu, jakým přidělujeme jádra mezi virtuální stroje na každém fyzickém výpočetním uzlu, který hostuje vaše výpočty. Procesory a jejich jádra v CloudSigma jsou sdílené. Jinými slovy, nepřipínáme cloudový server zákazníka ke konkrétním jádrům. Čas CPU je přidělován plánovačem fyzického výpočetního uzlu dynamicky a vše je sdílené. Věříme, že to přináší řadu výhod v podobě poskytování spolehlivějšího výkonu jako celku, protože to výpočetnímu uzlu umožňuje provádět rozumné úpravy přidělení za chodu za účelem vyvážení zátěže.
V kombinaci s tím používáme Control Groups (zkráceně cgroups), abychom zaručili dostatek času CPU pro každý z cloudových serverů v souladu s prostředky, které jste nastavili prostřednictvím velikosti serveru. Plánovač nakonec rozhodne, co udělá s případnými zbývajícími prostředky a cgroups. Za zmínku také stojí, že si vyhrazujeme sadu specifických jader, která jsou mimo rozsah přidělování pro výpočetní zátěž zákazníků. Tato jádra používáme ke spuštění operačního systému fyzického hostitele. Konkrétně si vyhrazujeme další jádra pro zpracování síťových a úložných operací. To vše má za cíl zvýšit stabilitu celého stroje. Navíc vám jako zákazníkovi pomáhá dlouhodobě poskytovat spolehlivou úroveň výkonu nezávisle na zátěži ostatních zákazníků.
Zdroje CPU steal time ve virtualizovaném prostředí
Na rozdíl od fyzického prostředí existuje více zdrojů a situací, kdy se můžete setkat s CPU steal time. Je to proto, že ve sdíleném (multi-tenant) virtualizovaném prostředí jsou věci složitější. Ne ve všech případech jde o situaci, kdy nedostáváte čas CPU, který byste měli mít – ve skutečnosti můžete v mnoha případech často využít volné cykly CPU nad rámec vaší přidělené velikosti, ale to není situace, kdy byste viděli CPU steal time. Tři nejčastější situace jsou podrobněji popsány níže.
Váš cloudový server je přetížený
To se stává! Každý chce využívat kapacitu co nejblíže maximu toho, za co platí, nicméně pokud přidělené CPU vašemu virtuálnímu cloudovému serveru nestačí ke zpracování zátěže, můžete zaznamenat CPU steal time, protože se požadavky hromadí a řadí do fronty v rámci virtuálního CPU. Pokud je toto hlavní příčinou CPU steal time, pak je řešením změna velikosti cloudového serveru. Pokud se jedná o dočasné přetížení, můžete věci bezpečně nechat beze změny. Jakmile vaše zátěž klesne, uvidíte, že CPU steal time zmizí.
Fyzický server hostující váš cloudový server je přetížený
Pokud dojde k přetížení hostitele, v tomto případě se jedná o chybu na naší straně. Je to vzácné, ale může se to stát. V takovém případě používáme živou migraci k migraci virtuálních strojů na jiné fyzické výpočetní uzly bez přerušení provozu, abychom snížili úroveň zátěže zpět na normální hodnoty. Obecně udržujeme hostitele hluboko pod plným zatížením. Pokud tedy tento jev pozorujete delší dobu, kontaktujte nás. Naše bezplatná podpora 24/7 může zkontrolovat fyzického hostitele, na kterém se nacházíte. Pokud k přetížení nedochází, pak je nepravděpodobné, že by to bylo hlavní příčinou vašeho CPU steal time.
Používáte menší velikost virtuálního jádra
V CloudSigma vám dáváme možnost definovat velikost virtuálního jádra, abyste mohli využít například více CPU vláken z více menších virtuálních jader pro jakoukoli velikost cloudového serveru. Cloudový server v rámci operačního systému uvidí velikost jádra vždy jako plnou fyzickou velikost.
Pokud je fyzické jádro 2.6GHz, ale vaše VM má 4GHz a dvě jádra, každé virtuální jádro bude mít 2GHz. Budete tedy vždy vidět steal time. Ve skutečnosti je to proto, že dostáváte poměrnou část celkového jádra, nikoli plnou velikost, protože velikost virtuálního jádra je menší. Jako takoví byste měli vždy upravit jakékoli výpočty CPU steal time tak, aby zohledňovaly menší velikost virtuálního jádra, pokud ji skutečně používáte. Chcete-li se tomu vyhnout, můžete použít plnou velikost jádra na jedno jádro. To provedete tak, že rozšíříte velikost virtuálního jádra na plnou velikost jádra CPU (např. Intel v4 2.6GHz).
Závěr
CPU steal time v cloudu je o něco složitější než v tradičních fyzických prostředích s jedním nájemcem. Rozhodně však stále existuje. Hlášení CPU steal time operačními systémy se však nepřizpůsobilo odlišným podmínkám. To znamená, že můžete získat falešně pozitivní výsledky. Když narazíte na CPU steal time, obvykle to znamená, že dochází k omezení prostředků. Doufáme, že vám tento příspěvek pomůže rychle identifikovat hlavní příčinu a zajistit nepřetržitý hladký provoz.
Příjemnou práci!
Robert
Komentáře
Zatím žádné komentáře. Buďte první.