Dinamikus Hertz állítás a 2.6-hoz

Címkék

Andrea Arcangeli egy olyan patchet készített a 2.6-os kernelhez, amellyel lehetőség nyílik arra, hogy a kernel HZ értéket dinamikusan, boot időben változtassuk meg.

A HZ érték nem más, mint a timer interrupt frekvenciája. A standard 2.4-es kernelben a HZ értéke 100 volt az x86-os rendszereken. Ez a 2.5-ös fejlesztői kernel idején 1000-re növekedett. Ha a HZ értéke 1000, akkor a timer 1/1000 másodpercenként (1ms) üt be.

A timer interrupt a rendszer lelke. Minden ennek függvényében jön létre vagy szűnik meg a kernelben. Ez a periódus a rendszer ``finomságának'' mértékegysége. A timerek 1/1000 másodpercenként bukkannak fel, az időszeletek (timeslices) 1/1000 másodpercenként válnak esedékessé, stb.A megnövelt HZ értéknek van pozitív és negatív oldala is. Minél nagyobb a HZ értéke, annál pontosabb időzítést lehet elvárni a kerneltől. A poll() és a select() függvények timer-alapúak, teljesítmény növekedést könyvelhetünk el, ha növeljük a HZ értéket. Szintén javul a processzek válaszadási képessége (latency).

A pozitív oldal mellett vannak negatív hatások is. A legnagyobb ezek közül a megnövekedett timer overhead. Azzal, hogy a HZ értéket 100-ról 1000-re növeljük, tízszer annyi timer interrupt keletkezik, ami tízszeres overhead-et jelent. Ez a korszerű számítógépeknél nem okoz problémát, de a régebbi 386/486-os gépeknél lassuláshoz vezethet. A másik probléma a jiffie átfordulás. A HZ=100 értéknél a rendszer uptime 497 naponként fordult át. Ha a HZ értékét megnöveltük 1000-re, akkor az átfordulás 49.7 naponként következett be. Ez annak volt köszönhető, hogy 32 bites változóban tárolták a jiffie értékét. A jiffies változó helyett bevezetésre került a jiffie_64, hogy a probléma megoldódjon.

Mint az látszik, a magasabb HZ nem minden rendszer esetén hoz pozitív változást. Ezért gondolta azt AA, hogy hasznos lenne egy dinamikus változtatási lehetőség.

Bővebben a KernelTrap-on itt.

Hozzászólások

Akkor ez aztt jelenti, hogy nem csak illúzió, mikor látom, hogy lassabb ugyanazon a gépen a 2.6-os kernel.

Én nem értem, hogyha bootkor állítom be, akkor mitől dinamikus. Ilyen eddig is volt, nem?

Akkor emiatt volt a win2000-el az a repülőgépes balhé, ha még emlékeztek. Nem nagy vagyok otthon a témában, de ott is az volt, hogy 49.7 nap után fordult át, és emiatt megzavarodott vmi irányító program.

>> Mint az látszik, a magasabb HZ nem minden rendszer esetén hoz pozitív változást.

foleg nem egy VmWare ESX-ben ketyego SuSE ES 9-nel (2.6.5)

És próbálta vki már? A Patchet hol lehet letölteni? Van ennek értelme egy korszerü gépen? Az, hogy dinamikus, pontosan mit jelent? Autómatikusan vált 100 és 1000 között, vagy a 100 és 1000 között levő összes variáció között vált autómatikusan?

Ja, ok, csak ha simán kákattintottam a linkre 404-volt! Szal, ezek szerint, ez nem autómatikusan megy, hanem én edhatom meg neki!

Magyarul nincs sok értelme, csak akkor, ha ki kisérletezném, hogy nekem melyik való, ill. így 386-osra lehet tenni 2.6.x-es kernelt!