Qual agendador de processos meu sistema linux está usando?


10

Não tenho certeza se stackoverflow ou serverfault é o fórum a ser usado para esta pergunta, mas tentarei aqui.

Existe algum comando que eu possa usar ou um arquivo que eu possa verificar para descobrir qual agendador de processos estou usando no meu sistema Linux? Não estou procurando o agendador de E / S, mas o agendador de processos e, por favor, não se refira a guias ou howtos sobre o que é um agendador, o que estou simplesmente perguntando é se existe um comando ou arquivo que eu possa executar / verifique para ver isso. Eu poderia verificar o documento para o meu kernel, mas novamente estou me perguntando se existe um comando ou arquivo que eu possa verificar.

Talvez eu tenha sido um pouco redundante acima, mas isso ocorre porque as postagens que vi pessoas parecem confundir o agendador de processos com o agendador de E / S e parecem não responder à pergunta real, apenas fornecem links para o que é um agendador que não é o que eu estou procurando aqui, então peço desculpas se os comentários acima parecerem rudes.


2
Você está implicando que o Linux de alguma forma deve ter algoritmos de agendador diferentes que você pode escolher. O que faz você pensar que é esse o caso?
Stéphane Chazelas


Eu não acho que você possa alterar o agendador de processos em tempo real. O que estou perguntando é se existe um comando para verificar ou um arquivo para ler o conteúdo para poder ver qual deles está ativo. Mas se você quisesse, acho que poderia escolher O (1) ou O (n) se realmente quisesse.
exceda

1
Como o AFAIK no Linux kernel 2.6.23, alteramos o agendador de processos de O (1) para CFS, e não temos outro agendador para processos que sejam dinamicamente alterados como no agendador de E / S de blocos.
Artur Szymczak

2
@ZanLynx Sugira fechar a pergunta mais antiga como uma duplicata, porque a questão já está melhorando aqui.
Goldilocks

Respostas:


7

Existe algum comando que eu possa usar ou um arquivo que eu possa verificar para descobrir qual agendador de processos estou usando no meu sistema linux?

Não, porque, diferentemente do WRT no agendador de E / S, existe apenas uma possibilidade : o CFS ("Completely Fair Scheduler"), que inclui recursos em tempo real. O CFS é parcialmente nomeado para distingui-lo do planejador "O (1)" , que conforme observado nesse artigo foi substituído na versão 2.6.23.

Portanto, se você tem um kernel em que não tem certeza, verifique o número da versão.


Obrigado pela sua resposta, acho que não há nenhum arquivo que eu pudesse verificar para descobrir isso sem consultar a documentação, seria útil poder descobrir rapidamente o agendador usado para ter uma melhor visão geral dos detalhes dos parâmetros sendo usado no kernel que o sistema está usando.
exceda

1
Eu acho que não existe, porque não reflete nenhum tipo de opção de configuração ou "parâmetro sendo usado" etc. Há apenas um agendador possível, o agendador; atualmente, é chamado de "planejador completamente justo", e esse é um problema de design abstrato, um dos muitos que contribuem para o kernel. Geralmente eles estão documentados na fonte, etc. Portanto, a questão é redundante uname -r.
Goldilocks

0

Tentar:

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

Veja aqui: Capítulo 14: Ajustando


Eu não tenho o arquivo de configuração do kernel, então eu poderia verificar assim. Estou usando um sistema redhat com um rpm binário que instala o kernel.
exceda

1
Ao pesquisar por ele, as únicas variáveis ​​relacionadas aos agendadores de processos parecem ser CONFIG_SCHED_SMT = y, CONFIG_SCHED_MC = ye CONFIG_NET_SCHED = y, o que realmente não me diz muito
exceda

1
CONFIG_SCHED_SMT = y O Agendador de Hyperthreading está LIGADO, CONFIG_SCHED_MC = y Suporte MultiCore está LIGADO, CONFIG_NET_SCHED = y QoS / FairQueing está LIGADO para Rede. Como Goldilocks aludido a sua resposta está correto.
precisa saber é o seguinte

4
Por que não apenas zgrep SCHEDULE /proc/config.gz?
terdon

1
Sei que meu argumento era que você estava usando uma abordagem desnecessariamente complicada.
terdon

0

cat /proc/config.gz | gunzip | nano -(ou cat /proc/config.gz | gunzip | gedit -, nesse caso) é uma alternativa melhor à resposta do eyoung100 que não requer "disparos de armas" em um arquivo temporário.
Editar: Ainda mais simples - zcat /proc/config.gz | nano -ouzcat /proc/config.gz | gedit -

Ou, como @terdon sugeriu nos comentários sob essa resposta, use zgrep. Eu apenas recomendo uma sequência de pesquisa diferente:

zgrep "CONFIG_SCHED_" /proc/config.gz

Se você CONFIG_SCHED_yvir , por exemplo :, o kernel está configurado para usar o planejador MuQSS. No entanto , isso não é garantia de que ele é . O Arch Wiki sugere :

$ dmesg | grep -i muqss
...
MuQSS CPU scheduler v0.120 by Con Kolivas.
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.