Az AWS használatában kezdők gyorsan felfedezik, hogy van néhány ingyenes dolog, például egy t2.micro (vagy bizonyos régiókban t3.micro) virtuális gép (EC2) futtatása. A t2.micro csomagja 1GiB RAM-ot és 1 vCPU-t biztosít, és az új felhasználók 12 hónapig ingyenesen futtathatnak egy ilyen VPS-t. Még az ingyenesség lejárta után is olcsó a t2.micro példány, jellemzően havi 10 dollárba kerül a folyamatos futtatása (habár, az ingyenes időszak lejárta után megfontolandó az áttérés a t3a.micro csomagra, vagy az AWS saját Graviton CPU-jára, a t4g családra, amely arm alapó). Ne felejtsük el, hogy az EBS kötetért (virtuális lemez) és a sávszélességért is fizetni kell! Ennek egy része azonban szintén ingyenes.
A T csomag családdal az a probléma, hogy nem tartalmaz egy teljes CPU-magot. A T2, T3 és T3a valamint T4g csomagok a méretüktől függő arányban “CPU krediteket” gyűjtenek amíg futnak. A CPU krediteket akkor égetik el, ha a CPU bármilyen munkát végez. És ha elfogynak a kreditek, nem kapod meg az egész CPU-t.
Egy “CPU-kredit” pl. az alábbi CPU teljesítményre ad jogot:
- egy mag 100%-át 1 percig;
- egy mag 25%-át 4 percig;
- két mag 25%-át, 2 percig;
- 10 percig egy mag 10%-át;
Pár példa
A t2.micro 1 vCPU-val rendelkezik. A dokumentáció szerint óránként 6 CPU-kreditet kap ez a csomag (mindegyik T csomag fajta, más mértékben gyűjti a krediteket, minél nagyobb, annál többet). Ez 10 percenként egy CPU kreditet jelent, ami kényelmesen megkönnyíti a matematikát.
Ezért a t2.micro “baseline” értéke 6 kredit / 60 perc = 10%.
A baseline azt jelenti, hogyha ezen a szinten használjuk a CPU-t (t2.micro esetén tehát 10% CPU használatnál, mely a CPU Utilization grafikonon követhető nyomon), akkor se nem használunk, se nem gyűjtünk krediteket. Amikor a 10% alatt van a CPU használat, akkor gyüjtjük a krediteket, mikor viszont fölé megy, akkor égetjük.
Egy másik példa:
A t2.small szintén 1 vCPU-val rendelkezik. Óránként 12 CPU-egységet keres. Ezért a t2.small baseline értéke 12 / 60 = 20%.
Tehát egy t2.small ugyanolyan ütemben égeti el a CPU krediteket, mint amilyen ütemben a CPU 20%-os teljesítménye esetén. Ez az “baseline” értéke.
Egy t3.large (amely 2x vCPU-val rendelkezik) 36 CPU-egységet keres óránként.
Ezért a t3.large baseline értéke 36 / 60 / 2 = 30% vCPU-nként.
Nézzük meg ezt részletesebben
Egy t2.micro EC2 instanceon az alkalmazások a CPU 10%-át folyamatosan és örökké használhatják, mivel a “kereseti” ráta megegyezik az “égési” rátával. Ha az alkalmazásod kevesebb, mint 10%-os CPU-terhelést használ, akkor a t2.micro példány gyorsabban “keres” krediteket, mint amennyit eléget, így később 10%-nál nagyobb CPU-terheléssel futhatsz, amíg el nem égeted az összes kreditedet.
A CPU-kreditek feldolgozása ezredmásodpercenként történik.
Az egy példány által felhalmozható kreditek száma megegyezik a 24 óra alatt megszerezhető kreditek számával. Például egy t2.micro példány maximális CPU kredit egyenlege 144 kredit, míg egy t3.large 864 CPU kreditet gyűjthet össze.
Mi van, ha a CPU-terhelés alapszintjénél többre van szükségem?
Ez a “burstable” CPU-kapacitás számos felhasználási esetben megfelelő, különösen az olyan EC2 szerverek esetén, amelyek az idő nagy részében tétlenek, és rövid aktivitási csúcsokkal rendelkeznek. Ha a kreditek rendelkezésre állnak, a virtuális gép egy időre azonnal akár 100%-os CPU-kapacitást is használhat.
De mi történik, ha elfogytak a CPU-kreditek? A nagyobb példánytípusra való váltás több perces leállást igényel. De lehetőség van további kreditek vásárlására!
- STANDARD MODE-ban (ha a T2/T3 Unlimited le van tiltva - ami az alapértelmezett a T2-nél), ahogy a CPU-kreditek fogynak, a CPU teljesítmény közelít a baseline-hoz, majd ha elfogynak, nem is tudja azt túllépni
- UNLIMITED MODE-ban (T2/T3 Unlimited engedélyezve - ami a T3, T3a és T4g alapértelmezett beállítása), amikor a CPU kreditek elfogynak, pénzért további egy órányi kreditet ad hozzá az AWS a futó szerverhez, természetesen pénzért.
- A T2, T3, T3a és T4g példányok a Standard és a Unlimited üzemmódot is támogatják. A T2/T3/T4g Unlimited Mode bármikor engedélyezhető és letiltható, anélkül, hogy az alkalmazás vagy az operációs rendszer megszakadna.
Nézzük meg a költségek összehasonlítását. Feltételezzük, hogy egy Linux-példány az eu-west-2 régióban fut, és állandóan 100%-os mértékben használja a CPU-t:
- m6i.large (2 vCPU, 8GiB RAM) - 0,1110 USD / óra; Mindezért dedikált CPU-t kapunk, azaz folyamatosan járathatjuk 100%-on
- t3.large (2 vCPU, 8GiB RAM) - 0,0944 USD / óra, 30% CPU baseline-nal. Ehhez hozzá jön: 70% * 2 vCPU * $0.05 per vCPU hour (= $0.07). Összesen tehát 0,1644 USD / óra
Mint látható, ilyen felhasználás esetén a t3 majdnem másfélszer annyiba kerül mint az m6i típus.
A CPU-terhelés általában magasabb az indításkor
Egy EC2 instance első indításakor a CPU-terhelés általában magasabb az átlagosnál (el kell indulnia mindenféle rendszer folyamatoknak, alkalmazásoknak). E célból a Standard módban indított T2 példányok indítási krediteket kapnak (30 extra kreditet vCPU-nként, külön költség nélkül), amelyek indításkor valamivel több mint 30 percig 100%-os CPU-terhelést tesznek lehetővé, mielőtt a CPU-t az alapszintre fojtják le.
Azonban:
- A korlátlan módban indított T2 példányok nem kapnak indítási kreditet.
- A T3 és T3a példányok egyáltalán nem kapnak indítási kreditet standard módban. Ha szükséges a teljesítmény rögtön az indításkor, unlimited módba kell állítani őket, és pénzért venni plusz CPU kreditet.
Előfördulhat, hogy a többlet kreditek (korlátlan módban) nem kerülnek semmibe, ha a 24 órás ablakban szerzett CPU kreditek száma nagyobb, mint az alapszint felett elégetett többlet kreditek. Például:
- Egy t2.micro példány az első órában 100%-os CPU terheléssel fut, majd a nap hátralévő részében átlagosan 5%-os terheléssel.
- Egy 24 órás időszak alatt 144 CPU-kreditet szerez.
- Az első órában 60 CPU-kreditet éget el, majd a fennmaradó 23 órában 3 CPU-kreditet. Összesen 129 kreditet égetett el.
- A 24 órás ablak végén pozitív kreditegyenleg marad, így a kezdeti kiugró cpu használat nem kerül felszámításra.
Ha azonban ugyanebben a példában a CPU-terhelés 2 órán keresztül 100%-os lenne:
- Az első 2 órában 120 CPU kreditet éget el.
- 5%-os terhelés esetén 8 óra szükséges a maradék 24 CPU-kredit elhasználásához.
- A 11. óra végén 3 CPU kreditet kell elhasználnunk.
- A 12. óra végén további 3 CPU kreditet számolnak fel, stb. óránként.