¿Qué tipo de algoritmos de programación se utilizan en 15.04? Es posible cambiarlo?

12

Me gustaría saber qué mecanismos de programación se emplean en 15.04, tiempo compartido o tiempo real, estoy bastante seguro de que es FIFO, Round Robin, SJF.

PD: nuevo en Linux

leslie_lyj
fuente

Respuestas:

14

Planificador de procesos

Un programador de procesos maneja la asignación de recursos de la CPU para ejecutar procesos y tiene como objetivo maximizar la utilización general de la CPU al tiempo que maximiza el rendimiento interactivo.

Desde el kernel 2.6.23 (que sería a partir de Hardy 8.04 LTS) Programador completamente justo (CFS) basado en la "Fecha límite de la escalera giratoria". Descripción general de kernel.org :

CFS significa "Programador completamente justo" y es el nuevo programador de procesos "de escritorio" implementado por Ingo Molnar y fusionado en Linux 2.6.23. Es el reemplazo del código de interactividad SCHED_OTHER del planificador de vainilla anterior.

El 80% del diseño de CFS se puede resumir en una sola oración: CFS básicamente modela una "CPU ideal y multitarea precisa" en hardware real.

La "CPU multitarea ideal" es una CPU (inexistente :-)) que tiene una potencia física del 100% y que puede ejecutar cada tarea a la misma velocidad precisa, en paralelo, cada una a 1 / nr_running speed. Por ejemplo: si hay 2 tareas ejecutándose, entonces se ejecuta cada una al 50% de potencia física, es decir, en realidad en paralelo.

En hardware real, podemos ejecutar una sola tarea a la vez, por lo que debemos introducir el concepto de "tiempo de ejecución virtual". El tiempo de ejecución virtual de una tarea especifica cuándo comenzará a ejecutarse su siguiente segmento de tiempo en la CPU multitarea ideal descrita anteriormente. En la práctica, el tiempo de ejecución virtual de una tarea es su tiempo de ejecución real normalizado al número total de tareas en ejecución.


  • Kernel 2.4: planificador O (n) ; no hay lanzamiento de Ubuntu con ese kernel.
  • Kernel 2.6.0 a 2.6.22: O (1) planificador . Warty 4.10 (primer lanzamiento) utilizado 2.6.8. Gutsy 7.10 fue el último que utilizó 2.6.22 o menos.

Planificador de E / S

La programación de entrada / salida es el método que utiliza el sistema operativo para decidir en qué orden se enviarán las operaciones de E / S de bloque a los volúmenes de almacenamiento.

Artículo de Phoronix sobre programación : Linux 3.16: El programador de E / S de fecha límite generalmente lleva con un SSD.


Puede cambiar el planificador de E / S agregando la opción "elevator =" a "GRUB_CMDLINE_LINUX_DEFAULT =" en grub.

Sin embargo, probablemente sea más fácil (suponiendo sda y fecha límite) hacerlo así:

  • Para mostrar la lista de planificadores disponibles:

    cat /sys/block/sda/queue/scheduler
    
  • Y para alterar un planificador (se puede hacer sobre la marcha):

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

Desde kernel / git / torvalds / linux.git


Puede verificar con qué se está utilizando (suponiendo sda como primairy):

cat /sys/block/sda/queue/scheduler
Rinzwind
fuente
¿Significa esto que el mecanismo de programación utilizado en Ubuntu 15.04 por defecto es el algoritmo de tiempo compartido, CFS? ¿O viene con OTRO, RR y FIFO? Obtuve
leslie_lyj
Estás viendo las páginas de manual de Hardy. Eso es un poco viejo;) 'cfq' es el valor predeterminado. Vea el enlace agregado a kernel / git / torvalds / linux.git.
Rinzwind
1
... ¿no es esto confuso entre el disco y el programador de la CPU ? Son bestias bastante diferentes. El planificador de la CPU decide qué proceso se ejecutará a continuación, y el planificador de disco decide cómo se accede a los bloques de datos en los discos. Ver por ejemplo wiki.archlinux.org/index.php/Maximizing_performance
Rmano
Bueno, en realidad no, el punto principal de esta pregunta era aclarar qué mecanismo de programación de procesos está ejecutando Ubuntu 15.04. (Lo siento si no estaba siendo claro)
leslie_lyj
2
@Rmano Supuse que esto era para información no específicamente para usarlo realmente. Pero el neurótico en mí se fue por todos
lados