Come posso passare tra gli scheduler CFS e BFS?


Risposte:


7

Dovrai scaricare, patchare e compilare il tuo kernel perché BFS non fa attualmente parte del kernel mainline. Il kernel mainline contiene solo un programmatore e non è pensato per avere più programmatori nella stessa base di codice, e nemmeno programmatori commutabili al volo (è persino qualcosa che potrebbe essere fatto). Sarebbe semplicemente troppo complicato e non vale la pena.

Quindi, per ottenere BFS sul tuo sistema:

Il vantaggio di eseguire BFS su CFS è molto piccolo, specialmente con le versioni più recenti del kernel. Tieni presente che il CFS viene costantemente migliorato.


Ho compilato il kernel 4.0.5 con patch BFS ma lo scheduler non è elencato. BFS è stato abilitato in make menuconfig. Non capisco perché.
shantanu,

9

Dopo aver studiato un po 'questo, sembra che ci siano solo due programmatori per Linux: CFS e BFS .

Il modo più semplice per installare BFS in Ubuntu 10.10 è una patch PPA :

sudo add-apt-repository ppa:chogydan/ppa 
sudo apt-get update
sudo apt-get install linux-image-generic-ck linux-headers-generic-ck

Puoi anche installare la patch usando Ubuntu Software Center come descritto in "Cosa sono i PPA e come li uso" .

La patch installa un nuovo kernel (patchato), che verrà visualizzato nel menu di GRUB all'avvio con il suffisso "-ck". Passa da uno schedulatore all'altro riavviando e selezionando il kernel appropriato nel menu di avvio.


Sulla prestazione

Nel mio caso, correndo Folding @ Home in background su un PC desktop (otto thread F @ H su otto core su un Intel i7 2600K), BFS è significativamente migliore: la risposta del desktop è più scattante (non una grande differenza, ma sicuramente evidente) mentre l'applicazione F @ H in background è più veloce del 20-25%.

In questo scenario, gestendo simultaneamente l'uso interattivo del desktop e le attività in background pesanti di lunga durata della CPU, CFS tendeva a lasciare un core inattivo per lunghi periodi alla volta. BFS sembra molto meglio nell'usare tutti i core al 100% per le attività in background, fornendo comunque una risposta rapida per le attività desktop interattive.

Probabilmente non esiste un singolo scheduler che funzioni in modo ottimale con ogni possibile combinazione di carichi, ma ci sono casi in cui BFS è migliore.


3

Il seguito ha funzionato per me su Precise Pangolin (Ubuntu 12.04) YMMV, però.

BFS fa parte di pf-kernel

Il modo migliore per installare BFS su un sistema Ubuntu oggi (dicembre 2013) sembra essere quello di installare pf-kernel , che è fondamentalmente un kernel standard con un sacco di patch prestazionali applicate. Queste patch includono:

  • BFS (lo scheduler della CPU offre bassa latenza su macchine con meno di 16 core della CPU)
  • BFQ (scheduler del disco I / O ottimizzato per bassa latenza in presenza di carichi pesanti)
  • TuxOnIce (ibernazione più veloce)

Istruzioni sul Web

Ho trovato alcune istruzioni su come installare i pf-kernelpacchetti per Ubuntu nell'articolo “ Ottimizza le prestazioni del desktop Linux e altro con pf-kernel .” - Tuttavia queste istruzioni sono in qualche modo obsolete, in quanto indicano una fonte inesistente per il Debian pertinente Pacchetti. Ma ho trovato il thread " pf-kernel per Ubuntu " (nei pk-kernelforum) che menziona che i pacchetti Debian possono essere scaricati dall'account Dropbox dell'utente del forum big_bum .

Installazione pf-kernel

La macchina su cui ho installato è un vecchio laptop a 32 bit, quindi ho iniziato scaricando i pacchetti richiesti linux-headerse linux-imagein una directory sulla mia macchina chiamata ~/kernel.

(Vai all'account Dropbox sopra menzionato per trovare 64 bit e / o versioni più recenti di questi pacchetti.)

Successivamente ho seguito le istruzioni su " Ottimizza le prestazioni del desktop Linux e altro con pf-kernel " ed ho eseguito i seguenti comandi:

$ cd ~/kernel
$ sudo dpkg -i *.deb

Tutto sembra funzionare senza problemi, quindi ho riavviato.

Verifica se funziona

Un'ispezione rapida sembra indicare che funziona, ad es. Il comando uname -asegnala che sto usando pf-kernel:

Linux siobhan 3.12.2-pf + # 6 SMP PREEMPT lun 2 dic 19:09:52 EET 2013 i686 i686 i386 GNU / Linux

E cat /sys/block/sda/queue/schedulermostra che BFQ ora è lo scheduler del disco corrente (per il sdadisco):

noop deadline cfq [bfq] 

Nov'14 - Ho installato questo kernel pf sul mio Precise Pangolin (Ubuntu 12.04.4 LTS) con Mythbuntu principalmente per ottenere un migliore I / O dal mio filesystem xfs per le registrazioni video. Ho abbinato le versioni del kernel (3.13) per assicurare la compatibilità dei driver predefiniti di nvidia. Ha funzionato senza intoppi. Complimenti a zrjm ... ..!
keepitsimpleengineer,

1

Patch e installa un nuovo kernel con BFS. Devi usare i kernel sepatare, non c'è modo di usarli entrambi nella stessa immagine del kernel (specialmente per farli volare al volo)

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.