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.