Relativo a una domanda su quale sia meglio, lo scheduler CFS o BFS :
Dove trovo un elenco di quali programmatori sono disponibili?
E come posso passare da una all'altra?
Relativo a una domanda su quale sia meglio, lo scheduler CFS o BFS :
Dove trovo un elenco di quali programmatori sono disponibili?
E come posso passare da una all'altra?
Risposte:
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.
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.
Il seguito ha funzionato per me su Precise Pangolin (Ubuntu 12.04) YMMV, però.
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:
Ho trovato alcune istruzioni su come installare i pf-kernel
pacchetti 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-kernel
forum) che menziona che i pacchetti Debian possono essere scaricati dall'account Dropbox dell'utente del forum big_bum .
pf-kernel
La macchina su cui ho installato è un vecchio laptop a 32 bit, quindi ho iniziato scaricando i pacchetti richiesti linux-headers
e linux-image
in 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.
Un'ispezione rapida sembra indicare che funziona, ad es. Il comando uname -a
segnala 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/scheduler
mostra che BFQ ora è lo scheduler del disco corrente (per il sda
disco):
noop deadline cfq [bfq]
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)