¿Qué planificador de procesos está usando mi sistema Linux?

10

No estoy muy seguro de si stackoverflow o serverfault es el foro a utilizar para esta pregunta, pero lo intentaré aquí.

¿Hay algún comando que pueda usar o un archivo que pueda verificar para averiguar qué programador de procesos estoy usando en mi sistema Linux? No estoy buscando el planificador de E / S, sino el planificador de procesos y, por favor, no consulte las guías o los procedimientos para saber qué es un planificador, lo que simplemente pregunto es si hay un comando o archivo que pueda ejecutar / mira para ver esto. Podría verificar el documento de mi kernel, pero nuevamente me pregunto si hay un comando o archivo que pueda verificar.

Podría haber sido un poco redundante arriba, pero eso se debe a que las publicaciones que he visto parecen confundir el programador de procesos con el programador de E / S, y no parecen responder la pregunta real, solo proporcionan enlaces a lo que es un programador que no es lo que busco aquí, así que disculpas si los comentarios anteriores sonaban groseros.

exceder
fuente
2
Su implica que Linux de alguna manera debe tener diferentes algoritmos de planificación entre los que uno puede elegir. ¿Qué te hace pensar que es el caso?
Stéphane Chazelas
No, y no creo que pueda cambiar el planificador de procesos en tiempo real. Lo que pregunto es si hay un comando para verificar o un archivo para leer el contenido y poder ver cuál está activo. Pero si quisieras, creo que podrías elegir O (1) u O (n) si realmente quisieras.
exceder el
1
AFAIK en el kernel de Linux 2.6.23 cambiamos el planificador de procesos de O (1) a CFS, y no tenemos ningún otro planificador para procesos que puedan cambiarse dinámicamente como para el planificador de bloque de E / S.
Artur Szymczak
2
@ZanLynx Sugiera cerrar la pregunta anterior como un duplicado de esta, porque la pregunta ya está recibiendo un mejor tratamiento aquí.
Ricitos

Respuestas:

7

¿Hay algún comando que pueda usar o un archivo que pueda verificar para averiguar qué programador de procesos estoy usando en mi sistema Linux?

No, porque a diferencia de WRT para el programador de E / S, solo hay una posibilidad : el CFS ("Programador completamente justo"), que incluye capacidades en tiempo real. El CFS se nombra en parte para distinguirlo del programador "O (1)" , que como se señaló en ese artículo fue reemplazado en la versión 2.6.23.

Entonces, si tiene un núcleo donde no está seguro, simplemente verifique el número de versión.

encerrada dorada
fuente
Gracias por su respuesta, entonces supongo que no hay ningún archivo que pueda verificar para averiguarlo sin consultar la documentación, sería útil poder encontrar rápidamente el planificador utilizado para tener una mejor visión general de los detalles de los parámetros. siendo usado en el kernel que el sistema está usando.
exceder el
1
No creo que exista tal cosa porque no refleja ningún tipo de opción de configuración o "parámetro utilizado", etc. Solo hay un posible planificador, el planificador; actualmente, se llama el "planificador completamente justo", y este es un problema de diseño abstracto, uno de los muchos que contribuyen al núcleo. Generalmente están documentados en la fuente, etc. Por lo tanto, la pregunta es redundante uname -r.
Ricitos
0

Tratar:

cat /proc/config.gz | gunzip > ~/running.config
nano -w ~/running.config
CTRL + W SCHEDULE

Ver aquí: Capítulo 14: Afinación

eyoung100
fuente
No tengo el archivo de configuración del núcleo, entonces podría verificarlo así. Estoy usando un sistema redhat con un rpm binario que instala el núcleo.
exceder el
1
Al buscar a través de él, las únicas variables relacionadas con los planificadores de procesos parecen ser CONFIG_SCHED_SMT = y, CONFIG_SCHED_MC = y y CONFIG_NET_SCHED = y, lo que realmente no me dice mucho
exceda el
1
CONFIG_SCHED_SMT = y Hyperthreading Scheduler está activado, CONFIG_SCHED_MC = y MultiCore Support está activado, CONFIG_NET_SCHED = y QoS / FairQueing está activado para la conexión en red. Como Ricitos de Oro aludido a su respuesta es correcta.
eyoung100
44
¿Por qué no solo zgrep SCHEDULE /proc/config.gz?
terdon
1
Me doy cuenta, mi punto era que estabas usando un enfoque innecesariamente complicado.
terdon
0

cat /proc/config.gz | gunzip | nano -(o cat /proc/config.gz | gunzip | gedit -, para el caso) es una mejor alternativa a la respuesta de eyoung100 que no requiere "disparar" a un archivo temporal.
Editar: aún más simple, zcat /proc/config.gz | nano -ozcat /proc/config.gz | gedit -

O, como @terdon sugirió en los comentarios bajo esa respuesta, use zgrep. Solo recomiendo una cadena de búsqueda diferente:

zgrep "CONFIG_SCHED_" /proc/config.gz

Si ve, por ejemplo:, CONFIG_SCHED_yel núcleo está configurado para usar el planificador MuQSS. Sin embargo , eso no garantiza que lo sea . The Arch Wiki sugiere :

$ dmesg | grep -i muqss
...
MuQSS CPU scheduler v0.120 by Con Kolivas.
Marc.2377
fuente