Portál AbcLinuxu, 9. srpna 2025 07:12
Completely Fair Scheduler byl pro velký zájem backportován na Linux 2.6.23-rc8, 2.6.22.8, 2.6.21.7 a 2.6.20.20. Pokud vše půjde dobře, tak se CFS v22 dostane do hlavní větve Linuxu do verze 2.6.24. Více se dozvíte na KernelTrapu.
Tiskni
Sdílej:
Jestli nemas tyhle s backportama, nebo nejakej release candidate 2.6.23 tak mas planovac staircase scheduler, nebo jak se to menuje.Staircase je scheduler od Cona Kolivase. Ten ve vanilla kernelu nikdy nebyl. Release kandidáty 2.6.23 mají CFS.
Viz treba nedavny problem s schet_yield() a workaround pomoci ktereho je to resene.Používání sched_yield() v procesu s politikou SCHED_OTHER je prakticky ve všech případech bug.
a jak ze se ten docany jmenuje? je to SD?SD je právě Staircase Deadline, ten Conův. Dosavadní byl Ingův O(1) scheduler.
se tahle fce nejak chovala a dalo se na to spolehnoutNikdy není dobrý nápad spoléhat na nedefinované chování.
Navic je nejak definovana a ted jeji chovani definici neodpovidaPro SCHED_OTHER sched_yield() jednoznačnou definici nemá. Nedá se tedy říci, že by aktuální chování definici neodpovídalo.
Takze je to bug na obou stranach?Podle mě jednoznačně chyba v programu. Ingo může chování sched_yield() nastavit tak, aby vzniklo ve starých programech co nejméně škody, ale chyba to zůstane vždycky.
Muzete mi rict jeste neco o SCHED_OTHER a ostatnich politikach?Něco o nich je v manuálové stránce k sched_setscheduler(). SCHED_OTHER je výchozí plánovací politika. Procesy v ní mají dynamickou prioritu, dostávají přiděleno více či méně času podle toho, jak se chovaly v minulosti a podle své úrovně nice. SCHED_FIFO a SCHED_RR jsou real-timeové politiky, kde mají procesy statickou prioritu a jejich plánování je tak přesně dáno. Akorát u SCHED_RR je ještě řešen případ, kdy běží více procesů se stejnou prioritou tak, aby se občas mezi sebou střídaly.
Ještě bych chtěl dodat, že ať už se chování sched_yield() udělá jakkoliv, vždycky se najde někdo, komu by vyhovovalo úplně jiné:
Programátor 1: Proč má sched_yield() tak slabý efekt? Já chci, aby dostaly čas všechny ostatní procesy, než se sched_yield() vrátí. Béééé!
Programátor 2: Proč je sched_yield() tak agresivní? To, že jsem ho zavolal, neznamená, že jsem chtěl, aby můj proces musel čekat i na procesy s nice -19. Béééé!
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.