¿Cómo puedo cambiar entre los programadores CFS y BFS?

Respuestas:

7

Tendrá que descargar, parchear y compilar su propio núcleo porque BFS actualmente no forma parte del núcleo principal. El núcleo de la línea principal contiene solo un planificador y no está destinado a tener múltiples planificadores en la misma base de código, o incluso planificadores conmutables sobre la marcha (es incluso algo que podría hacerse). Simplemente sería demasiado complicado y no valdría la pena el esfuerzo.

Entonces, para obtener BFS en su sistema:

Sin embargo, el beneficio de ejecutar BFS sobre CFS es muy pequeño, especialmente con las versiones más recientes del kernel. Tenga en cuenta que el CFS se mejora constantemente.

Cedric
fuente
Compilé el kernel 4.0.5 con el parche BFS pero el programador no está en la lista. BFS se habilitó en make menuconfig. No entiendo por qué.
shantanu
9

Después de investigar esto un poco, parece que solo hay dos planificadores para Linux: CFS y BFS .

La forma más sencilla de instalar BFS en Ubuntu 10.10 es un parche PPA :

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

También puede instalar el parche utilizando el Centro de software de Ubuntu como se describe en "Qué son los PPA y cómo los uso" .

El parche instala un nuevo kernel (parcheado), que aparecerá en el menú de GRUB en el arranque con el sufijo "-ck". Cambie entre programadores reiniciando y seleccionando el kernel apropiado en el menú de inicio.


En el rendimiento

En mi caso, ejecutar Folding @ Home en segundo plano en una PC de escritorio (ocho subprocesos F @ H en ocho núcleos en un Intel i7 2600K), BFS es significativamente mejor: la respuesta de escritorio es más ágil (no es una gran diferencia, pero definitivamente notable) mientras que la aplicación de fondo F @ H es 20-25% más rápida.

En este escenario, al tratar con el uso interactivo del escritorio y las tareas en segundo plano de gran duración de la CPU simultáneamente, CFS tendió a dejar un núcleo inactivo durante largos períodos a la vez. BFS parece mucho mejor en el uso de todos los núcleos al 100% para tareas en segundo plano, al tiempo que proporciona una respuesta rápida para tareas de escritorio interactivas.

Probablemente no exista un planificador único que funcione de manera óptima en todas las combinaciones posibles de cargas, pero hay casos en que BFS es mejor.

jg-faustus
fuente
3

Sin embargo, lo siguiente funcionó para mí en Precise Pangolin (Ubuntu 12.04) YMMV.

BFS es parte de pf-kernel

La mejor manera de instalar BFS en un sistema Ubuntu hoy (diciembre de 2013) parece ser instalar pf-kernel , que es básicamente un kernel estándar con un par de parches de rendimiento aplicados. Estos parches incluyen:

  • BFS (el programador de CPU ofrece baja latencia en máquinas con menos de 16 núcleos de CPU)
  • BFQ (planificador de disco de E / S optimizado para baja latencia bajo cargas pesadas)
  • TuxOnIce (hibernación más rápida)

Instrucciones en la web

Encontré algunas instrucciones sobre cómo instalar los pf-kernelpaquetes para Ubuntu en el artículo " Obtenga un mejor rendimiento de escritorio de Linux y más con pf-kernel ". Sin embargo, estas instrucciones están algo desactualizadas, ya que apunta a una fuente no existente para el Debian relevante paquetes Pero encontré el hilo " pf-kernel for Ubuntu " (en los pk-kernelforos) que menciona que los paquetes de Debian se pueden descargar desde la cuenta de Dropbox del usuario del foro big_bum .

Instalando pf-kernel

La máquina en la que instalé es una vieja computadora portátil de 32 bits, así que comencé descargando lo requerido linux-headersy los linux-imagepaquetes en un directorio de mi máquina llamado ~/kernel.

(Vaya a la cuenta de Dropbox mencionada anteriormente para encontrar versiones de 64 bits o más nuevas de estos paquetes).

Posteriormente seguí las instrucciones sobre " Obtenga un mejor rendimiento de escritorio Linux y más con pf-kernel ", y ejecuté los siguientes comandos:

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

Todo parece funcionar sin problemas, así que reinicié.

Comprobando si funciona

Una inspección rápida parece indicar que funciona, por ejemplo, el comando uname -ainforma que estoy usando el pf-kernel:

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

Y cat /sys/block/sda/queue/schedulermuestra que BFQ ahora es el programador de disco actual (para el sdadisco):

noop deadline cfq [bfq] 
zrajm
fuente
14 de noviembre: instalé este kernel pf en mi Precise Pangolin (Ubuntu 12.04.4 LTS) ejecutando Mythbuntu principalmente para obtener una mejor E / S de mi sistema de archivos xfs para grabaciones de video. Hice coincidir las versiones del kernel (3.13) para asegurar la compatibilidad del controlador predeterminado de nvidia. Funcionó sin problemas. Felicitaciones a zrjm ... ..!
keepitsimpleengineer
1

Parche e instale un nuevo núcleo con BFS. Tiene que usar núcleos separados, no hay forma de usar ambos en la misma imagen del núcleo (especialmente para intercambiarlos sobre la marcha)


fuente