Why companies waste money by underusing server memory
From the workshop

Why companies waste money by underusing server memory

Adam Kalisz
CS#proxmox#infrastructure

České firmy v serverové infrastruktuře často využívají počítačovou paměť neefektivně a tím v době, kdy je RAM opravdu drahá přichází o spoustu peněz. Navíc se často přežitými, zbytečně konzervativními postupy paradoxně dostávají pod tlak, horšímu výkonu a vyšší pravděpodobnosti výpadků.

Celý svět funguje na tom, že nikdo nevyužíváme všechny prostředky rovnoměrně, úplně a pořád. Když si koupíme auto, tak jím nejezdíme non-stop na maximální výkon motoru, s plnou kabinou a kufrem.

V IT je to podobné, skoro žádná úloha nevyužívá všechny jí poskytnuté prostředky pořád. Pokud by tomu tak bylo, nefungovaly by žádné cache, spekulativní přednahrávání – prefetching, spekulativně nižší alokace skutečných prostředků – thin-provisioning a overcommitting, které pracují s blízkostí dat v čase a prostoru, tendencí nevyužít veškeré přidělené kapacity a naopak jistou mírou nezávislosti úloh na sobě, zvlášť pokud se jedná o úlohy různých zákazníků.

Hodně firem ale jednou za několik let nakoupí drahé virtualizační servery s drahými licencemi. Každá služba pak dostane po nějakém uvážení své zdroje, které se jakoby odečtou z bazénu veškerých prostředků. Jak služba tyto prostředky využívá už se zkoumá poměrně málo, pokud to není více jak 80–90 % příliš často a na dlouhou dobu, protože pak může dojít k pomalejším odpovědím služby, jak se virtuální systém sytí a přestává stíhat.

V praxi se řada firem podívá na počet procesorových vláken, paměti a úložiště v clusteru, odečte aspoň jeden celý server pro schopnost odolávat nějakým výpadkům a to je zhruba maximální kapacita, kterou rozdá. Přitom server s 24 jádrovým / 48 vláknovým procesorem a 1 TB RAM může klidně obsloužit úlohy pro v součtu 96 virtuálních procesorů a třeba i 1,5 TB RAM.

V nejhorším, ale nepravděpodobném případě zpracování na procesoru bude o něco pomalejší a nějakou paměť RAM bude třeba odložit do tzv. swapu, tedy odkladiště na rychlém úložišti. Takové úložiště je možné realizovat třeba malým, ale rychlým polem z odolnějších NVMe SSD i v dnešní době za zlomek ceny paměti RAM. Ale nestane se, že by zpracování zcela přestalo, nebo hypervizor začal samovolně ukončovat méně prioritní virtuální stroje.

Pomoct může i tzv. memory ballooning, kdy při celkovém nedostatku paměti virtuální stroje kooperují při vracení paměti, kterou nutně nepotřebují. Dále pomáhá komprese paměti pomocí zram a deduplikace paměti např. pomocí Kernel Same-page Merging. Většina virtualizačních řešení tyto techniky využívá zcela standardně, včetně platformy #Proxmox.

Různých triků, kdy jde udělat se stejnými prostředky výrazně více práce je celá řada. Ale je potřeba o nich vědět, kriticky zhodnotit jejich aplikovatelnost v konkrétní situace a umět je správně použít. Jsou taky situace, kdy triky dojdou, resp. jsou dražší než prostě ty prostředky pořídit.