Portál AbcLinuxu, 1. května 2025 02:14
taskset
em jedno z CPU a ten je pak věnován onomu vybranému procesu (tj. na jádře nemůže na něm běžet nic jiného, ale ani proces nemůže běžet na jiném jádře), tak by to mělo stačit. Možná by byklo lepší nastavit prioritu spíš na SCHED_FIFO
, ale protože na danném CPU nebude nic jiného běžet, tak se to nejspíš nijak neprojeví.
k taskset se zda byt altrnativou cpuset. Pokud jsem to spravne pochopil (man stranku jsem jen rychle procetl) tak je treba z CPU vytvorit cpuset a tomu se daji prirazovat procesy, popripade se daji procesy prirazovat k jaulum.
altrnativu pro ionice jsem nenasel a zda se ze FreeBSD nema IO scheduler, nebo aspon ne takovy ktery by se dal usmernovat.
pro chrt jsem alternativu take nenasel.
"se může hodit například při provozu databázového serveru Oracle, pokud máte licenci na méně procesorů, než máte v systému."
Bohužel nemůže, Oracle na Intelu uznává prakticky jen dvě licenční bariéry - OracleVM a Solaris kontejnery. Pokud tedy nepoužíváte jedno z toho, taskset, cgroups, vmware, KVM, XEN (od nekoho jineho nez Oraclu) atd. je vám k ničemu a zalicencovat musíte stejně všechna CPU/jádra na boxu. A ještě lepší peklo je to s farmou a migrujícími virtuály. Oracle není dobrý příklad pro podobné techniky.
Obecně ale nemá smysl snažit se docílit méně migrací procesu na jiné CPU pomocí taskset – plánovač Linuxu tak jako tak dělá vše pro to, aby se tak nedělo.Teoreticky. V praxi musím používat taskset na firefox (flashová videa) a mplayer, když se přehrává něco náročnějšího na dekódování. Jinak se to video prostě trhá, protože plánovač čas od času ten dekódovací proces přehodí na jiné jádro CPU, kde je snížený takt (protože do té doby nedělalo nic.)
"Takto změníme třídu vybraného existujícího procesu na minimální možnou: chrt -i -p $pid"Uvedený príkaz mi v Ubuntu 10.04 iba vypíše aktuálnu policy a priority a nič nenastaví. Použité chrt (util-linux-ng 2.17.2) Zmena policy na SCHED_IDLE mi funguje nasledovne:
# chrt -p -i 0 $pid
Zmena policy na SCHED_FIFO s prioritou 50 mi funguje nasledovne:
# chrt -p -r 50 $pid
Zmena policy zo SCHED_OTHER na SCHED_RR ide aj takto:
# chrt -p 50 $pid
Inak SCHED_BATCH policy je podporovaná od Linux 2.6.16 a SCHED_IDLE od Linux 2.6.23.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.