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:

  1. 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.
  2. Egy 24 órás időszak alatt 144 CPU-kreditet szerez.
  3. Az első órában 60 CPU-kreditet éget el, majd a fennmaradó 23 órában 3 CPU-kreditet. Összesen 129 kreditet égetett el.
  4. 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:

  1. Az első 2 órában 120 CPU kreditet éget el.
  2. 5%-os terhelés esetén 8 óra szükséges a maradék 24 CPU-kredit elhasználásához.
  3. A 11. óra végén 3 CPU kreditet kell elhasználnunk.
  4. A 12. óra végén további 3 CPU kreditet számolnak fel, stb. óránként.