GNU/Linux >> Linux Esercitazione >  >> Linux

Come conoscere l'intervallo di tempo dello scheduler di Linux?

CFS (che è lo scheduler predefinito per i processi) non ha intervalli di tempo fissi, viene calcolato in fase di esecuzione in base alla latenza target (sysctl_sched_latency ) e il numero di processi in esecuzione. La porzione di tempo non può mai essere inferiore alla granularità minima (sysctl_sched_min_granularity ).

L'intervallo di tempo sarà sempre compreso tra sysctl_sched_min_granularity e sysctl_sched_latency , i cui valori predefiniti sono rispettivamente 0,75 ms e 6 ms e definiti in kernel/sched/fair.c.

Ma l'intervallo di tempo effettivo non viene esportato nello spazio utente.


Il quantum assegnato per un particolare processo può variare:

Puoi ottimizzare "slice" regolando sched_latency_ns esched_min_granularity_ns , ma si noti che "fetta" non è un quantico fisso. Si noti inoltre che le decisioni di prelazione CFS si basano sullo stato istantaneo. Un'attività può aver ricevuto una "fetta" completa (variabile) di tempo CPU, ma la prelazione verrà attivata solo se è disponibile un'attività più meritevole, quindi una "fetta" non è il "tempo CPU massimo ininterrotto" che ci si potrebbe aspettare che sia .. ma è in qualche modo simile.

Questo perché Completely Fair Scheduler, lo scheduler predefinito di Linux, assegna una parte del processore a un processo piuttosto che un intervallo di tempo fisso. Ciò significa che l'intervallo di tempo per ogni processo è proporzionale al carico corrente e pesato dal valore di priorità del processo.

Per i processi in tempo reale speciali che utilizzano SCHED_RR, il timeslice predefinito è definito nel kernel di Linux come RR_TIMESLICE in include/linux/sched/rt.h.

/*
 * default timeslice is 100 msecs (used only for SCHED_RR tasks).
 * Timeslices get refilled after they expire.
 */
#define RR_TIMESLICE            (100 * HZ / 1000)

Puoi usare sched_rr_get_interval() per ottenere l'intervallo SCHED_RR per uno specifico processo SCHED_RR.


Linux
  1. Come configuro Vim come editor predefinito su Linux

  2. Come testare la velocità di caricamento del sito Web in Linux

  3. Linux – Come trovare la data di creazione del file?

  4. Linux:come sapere per cosa Grep in Dmesg?

  5. Come sapere dove è bloccato un programma in Linux?

Come impostare o modificare il fuso orario in Linux

Come modificare il file di registro di Sudo predefinito in Linux

Come modificare la shell predefinita nel sistema Linux

Come trovare la data e l'ora di installazione del sistema operativo Linux

Come impostare data e ora su Linux

Come conoscere i gruppi di un utente Linux