2014-08-29 10 views
6

Un thread (o un'attività) perderà priorità dinamica utilizzando un sacco di CPU e otterrà priorità utilizzando meno CPU. Come vengono calcolate esattamente queste priorità per n thread (usando la normale politica di schedulazione SCHED_OTHER)?Come vengono calcolate le priorità dinamiche dei thread in Linux 2.6.x?

+4

The Completely Fair Scheduler (CFS), alias SCHED_NORMAL o SCHED_OTHER, è documentato [qui] (https://github.com/torvalds/linux/blob/master/Documentation/ scheduler/sched-design-CFS.txt) e implementato [qui] (https://github.com/torvalds/linux/blob/master/kernel/sched/fair.c). – indiv

risposta

1

Citando this

Le Linux 2.6.8.1 scheduler ricompense I COMPITI/O-bound e punisce attività della CPU-bound aggiungendo o sottraendo da statico la priorità di un compito. La priorità regolata è denominata priorità dinamica dell'attività, ed è accessibile tramite la variabile prio dell'attività (ad es. P-> prio, dove p è un'attività). Se un'attività è interattiva (il termine dello scheduler per I/O associato), la sua priorità viene aumentata. Se è un maiale della CPU, riceverà una penalità . Nello scheduler Linux 2.6.8.1, il bonus di priorità massima è 5 e la penalità con priorità massima è 5. Poiché lo schedulatore utilizza i bonus e le penalità , le rettifiche alla priorità statica di un'attività sono rispettate. Un moderato hog della CPU con un buon valore di -2 potrebbe avere una priorità dinamica pari a pari a 0, lo stesso di un'attività che non è né una CPU né un I/O hog.

Ritengo che questa sia una spiegazione equa. La priorità viene calcolata in base al fatto che si tratti di un thread associato alla CPU o di uno limitato all'I/O. E riguardo a ciò che hai menzionato nella domanda, che lo gain priority by using less of CPU è piuttosto prioritario perché è interattivo (legato I/O). Spero che questo estratto risponda alla tua domanda ...

Problemi correlati