Tikání jádra

Mark55

Tikání jádra
« kdy: 26. 06. 2017, 21:06:01 »
Ahoj, co zajituje na linuxu "tikání" jádra, jakože se přepínají procesy a celého to to žije, to je na x86 přerušením od časovače ?


adsfasf

Re:Tikání jádra
« Odpověď #1 kdy: 26. 06. 2017, 21:21:52 »
ja jsem to drive chapal tak, ze preruseni u tickless kernelu chodi z jinych zdroju a ne z hodin.
zde je to vysvetleno tak, ze tickless kernel je spise dynamic tick kernel.

https://www.quora.com/What-is-a-tickless-kernel

umite anglicky?

Mark55

Re:Tikání jádra
« Odpověď #2 kdy: 27. 06. 2017, 09:44:25 »
Umím, pročetl jsem to.
Pokud to chápu, tak tickless jádro je preferované místo starého konceptu "periodic timer interrupt" jader a to zejména kvůli tomu, že je obtížné stanovit interval jak často se má jádro přerušovat běh obsluhou přerušení od časovače a pevná hodnota nemůže vyhovovat pro všechny druhy zátěže a pokud jsme na mobilních zařízeních tak je vyložené nepraktické cokoliv obsluhovat když to není potřeba a může se "spát".

Na odkazovaný článek navazuje trochu  hutnější , https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/timers/NO_HZ.txt.

Znamená to tedy, že dnes funguje na jádrech s dynamickým tickem a jádro si samo upravuje ja často má přijít přerušení od časovače dle potřeby aktuálně zátěže, pokud to chápu správně.
Je možné někde vyčíst jaká je "aktuální" hodnota, chápu, že se to asi velmi rychle mění.
Např. ve vmstat je ve sloupci system položka interrupt.
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.

Takže závěrem je, že to vlastně "tiká" celé kolem časovače v hardware (+ další zdroje přerušení).
Může být ale Linux i tedy na hardware, který nemá časovač jako zdroj přerušení (a jsou takové platformy ?), asi může, ale pokud by čekal na zdroj přerušení od něčeho co nechodí periodicky (nebo "plánovaně" periodicky) nedojde pak problém se preemptivností, nevím jak to napsat lepe, prostě nejde poté dobře rozdělovat čas plánování běhu úloh, protože úloha se nevzdá běhu pokud nechce a zrovna nepřichází žádný interrupt, který by vrátil řízení zpět jádru ?
Mark

dustin

Re:Tikání jádra
« Odpověď #3 kdy: 27. 06. 2017, 11:27:01 »
V tom textu to popisují - jde jen o případy, kdy CPU by po probuzení stejně nic nedělalo, tj. kdy všechny ostatní tasky na něco čekají a stejně by je jádro nemohlo spustit. Stejně tak když je jenom jeden proces runnable, není důvod, proč jeho běh přerušovat, aby se jádro podívalo, že stejně ve frontě nic nemá a zase ten přerušený proces znovu spustilo. Procesy buď čekají na hardware (interrupt od hardwaru) nebo na vypršení čekací doby (interrupt od časovače), takže jádro ví, co bude a kdy může CPU uspat na déle, než by přišel standardní tick v ticked XXXHZ režimu.

Úsporný tickless režim dnes implementují i tenoučké OS pro jednočipy, jako např. chibios http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:tickless