Miért száz az ütemező frekvenciája?
Linux alatt nem valami 250 a default?
Egyébként nem feltétlen vált le egy taskról az ütemező.
Ha nagyon alacsony kenne, akkor egy idő után lehet, hogy az egész felület "laggolna", mert nem kapna időben processzor időt. Az alacsny egy esetben lenne talán jobb, akkor ha néhány hosszan futó taszk van, és nem interaktív. De az ütemező futása elég minimális overhead
2
Na de nagyon sok taszk fut a háttérben. Van egy taszkod, ami mondjuk annyit csinál, hogy időnként ellenőriz egy fájlt, vagy valamit. Ha nagyon lassan váltasz taszkot, akkor teljesen feleslegesen ez fog kapni processzor időt, amikor már rég nincs rá szüksége, és egy másik taszknak meg nem lesz, amikor pont kéne, mert megugrana a processzálási igénye (pl. ki kéne számolni valamit).
A processzor ideje másképpen van felosztva. Létezik prioritás. Amelyik magasabb prioritású, az több időt kap.
Amit te írsz, az csak a round robin tipusú ütemezőknél igaz.
4
De ettől még az igaz amit mondtam, hogy az interaktív taszkoknak az a jobb, ha magasabb a freki.
Mitől lenne jobb nekik?
Másodpercenként 100 taszkváltás történik.
Az 10 ms egy taszk futásra. Nem tudom ezzel mi a baj, teljesen valid érték.
De gondolj bele: legyen mondjuk 4 mag a processzorban.
Powershell/terminál meg tudja mondani, hány szál lett nyitva a futó processzek által: (Get-Process|Select-Object -ExpandProperty Threads).Count
Ez nálam 3300 darab. Na azt a 4 magot oszd el 3300-zal, meglátod, mennyi idő jut 1 szálra. Igaz, soknak nem kell mindig futnia, és rögtön elengedi a procit, de nagyságrendnek jó, hogy érzékeltesse.
Amúgy meg átlagosan egy procinak 2,5 milliárd órajelciklusa van másodpercenként; Ha 100szor történik váltás, akkor ~ 25 millió órajel jutna (ha nem lenne context switch idő). Az internyet alapján egy context switch 5 mikroszekundum időt vesz igénybe, vagyis a 100 darab együtt is csak a fele egy milliszekundumnak. Vagyis ha jól számolok, az idő 99,995%-ában nem a context switch viszi az időt. Így már jobban tetszik?
Ez csak papíron van így. A valóságban a tartalom váltása függ a memória sebességétől, és attól is, hogy a memória mennyire van fragmentálódva. Van úgy, hogy egy processz mintegy száz fragmentumban tárolja a saját adattartalmát. Tipikusan ilyenek a böngészők. Ezeknél egy context switch biztos, hogy nem fut le 5, de még 50 uSec alatt sem alatt.
Ezért van az, hogy még korszerű rendszer esetén is előfordul lag.
Itt van erről néhány mondat:
"Egy jól konfigurált és optimalizált rendszeren a taszkváltások általában 1-5% közötti processzoridőt vesznek igénybe. Ha a rendszer nagyon terhelt (pl. sok folyamat fut egyszerre, vagy sok I/O művelet történik), ez az arány akár 10-20% is lehet. Extrém esetekben (pl. rosszul tervezett alkalmazások vagy túlterhelt rendszerek) ez az érték még magasabb."
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!