Che tipo di algoritmi di pianificazione sono utilizzati in 15.04? È possibile cambiarlo?


12

Vorresti sapere quali meccanismi di pianificazione sono impiegati in 15.04, time-sharing o in tempo reale, sono abbastanza sicuro che sia FIFO, Round Robin, SJF?

PS: nuovo su Linux

Risposte:


14

Pianificatore di processo

Uno scheduler di processi gestisce l'allocazione delle risorse della CPU per l'esecuzione dei processi e mira a massimizzare l'utilizzo complessivo della CPU massimizzando al contempo le prestazioni interattive.

Dal kernel 2.6.23 (che sarebbe come da Hardy 8.04 LTS) Completamente Fair Scheduler (CFS) basato su "Scadenza delle scale rotanti". Panoramica da kernel.org :

CFS sta per "Completely Fair Scheduler" ed è il nuovo pianificatore di processi "desktop" implementato da Ingo Molnar e unito in Linux 2.6.23. È il sostituto del precedente codice di interattività SCHED_OTHER del programmatore vanilla.

L'80% del design di CFS può essere riassunto in una sola frase: CFS fondamentalmente modella una "CPU multi-tasking ideale e precisa" su hardware reale.

La "CPU multi-tasking ideale" è una CPU (inesistente :-)) che ha una potenza fisica del 100% e che può eseguire ciascuna attività a uguale velocità precisa, in parallelo, ciascuna a 1 / nr_running velocità. Ad esempio: se sono in esecuzione 2 attività, viene eseguita ciascuna al 50% della potenza fisica, ovvero in parallelo.

Su hardware reale, possiamo eseguire una sola attività alla volta, quindi dobbiamo introdurre il concetto di "runtime virtuale". Il runtime virtuale di un'attività specifica quando il prossimo intervallo di tempo inizierà l'esecuzione sulla CPU multi-tasking ideale sopra descritta. In pratica, il runtime virtuale di un'attività è il suo runtime effettivo normalizzato al numero totale di attività in esecuzione.


  • Kernel 2.4: O (n) scheduler ; non esiste una versione di Ubuntu con quel kernel.
  • Kernel da 2.6.0 a 2.6.22: O (1) scheduler . Warty 4.10 (prima versione) usato 2.6.8. Gutsy 7.10 è stato l'ultimo che ha usato 2.6.22 o inferiore.

Pianificatore I / O

La pianificazione di input / output è il metodo utilizzato dal sistema operativo per decidere in quale ordine le operazioni di I / O del blocco verranno inviate ai volumi di archiviazione.

Articolo di Phoronix sulla pianificazione : Linux 3.16: Scadenza I / O Scheduler generalmente conduce con un SSD.


È possibile modificare lo scheduler I / O aggiungendo l'opzione "elevator =" a "GRUB_CMDLINE_LINUX_DEFAULT =" in grub.

Probabilmente è più facile (supponendo sda e scadenza) farlo in questo modo però:

  • Per mostrare l'elenco degli scheduler disponibili:

    cat /sys/block/sda/queue/scheduler
    
  • E per modificare uno scheduler (può essere fatto al volo):

    echo deadline > /sys/block/sda/queue/scheduler
    

Da kernel / git / torvalds / linux.git


Puoi controllare cosa viene usato (supponendo sda come primairy):

cat /sys/block/sda/queue/scheduler

Questo significa che il meccanismo di pianificazione utilizzato in Ubuntu 15.04 per impostazione predefinita è l'algoritmo di condivisione del tempo, CFS? O viene fornito con OTHER, RR e FIFO? Ho ottenuto il mio informazioni qui: manpages.ubuntu.com/manpages/hardy/man2/...
leslie_lyj

Stai guardando le manpage di Hardy. È un po 'vecchio;)' cfq 'è l'impostazione predefinita. Vedi il collegamento aggiunto a kernel / git / torvalds / linux.git.
Rinzwind,

1
... non è questo confuso tra disco e scheduler cpu ? Sono bestie abbastanza diverse. Lo scheduler della CPU decide quale processo verrà eseguito successivamente e lo scheduler del disco decide come accedere ai blocchi di dati nei dischi. Vedi ad esempio wiki.archlinux.org/index.php/Maximizing_performance
Rmano

Bene, non proprio, il punto principale di questa domanda era chiarire su quale meccanismo di pianificazione dei processi è in esecuzione Ubuntu 15.04. (Scusate se non sono stato chiaro)
leslie_lyj

2
@Rmano Supponevo che questo fosse per informazioni non specificamente per usarlo effettivamente. Ma il nevrotico in me è andato fuori di
testa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.