Como mudo para o agendador noop?


29

Eu tenho um SSD no meu laptop e me disseram que é preferível alternar para o agendador "noop".

Como altero para o agendador noop e onde faço a alteração para que seja persistente nas reinicializações?

Respostas:


21

Edite / etc / default / grub, como gksudo gedit /etc/default/grubaqui você precisa adicionar o elevador = noop.

Mude GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"para GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop".

Em seguida, execute sudo update-grub2e reinicie.


6
A resposta anônima é boa para alterar o padrão em todos os discos em um sistema. Por outro lado, a resposta de Eliah Kagan define o padrão para discos específicos. Para um laptop com uma única unidade, isso funciona bem. Para sistemas com vários discos - principalmente discos com SSDs e unidades rotativas), a resposta de Eliah Kagan fornece um controle mais refinado.
Royce Williams

28

Suponha que seu disco rígido seja /dev/sda. Em seguida, você pode verificar para ver qual agendador está atualmente em uso para ele:

cat /sys/block/sda/queue/scheduler

(O agendador atualmente em uso será cercado por [ ]colchetes.)

E você pode fazê-lo usar o agendador noop:

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

Consulte este artigo para obter mais informações.

Para fazer a alteração persistir, você pode colocar o comando no /etc/rc.local.


11
Eu recebo um erro de "permissão negada" ao executar isso, mesmo com o sudo
Lucas Bustamante

@LucasBustamante Você está correndo sudo echo noop > /sys/block/sda/queue/scheduler? Isso não funciona, pois o shell, que é executado como usuário, configura o redirecionamento antes de executar o comando cuja saída é redirecionada. Você pode usar em seu echo noop | sudo tee /sys/block/sda/queue/schedulerlugar. Consulte Não é possível ecoar "olá"> x.txt mesmo com o sudo? e Como resolver a "permissão negada" ao usar o sudo com o redirecionamento no Bash? para mais informações e outras abordagens. (Se isso não é o que quer dizer, por favor me avise.)
Elias Kagan

obrigado por responder, isso também não ajudou. Estou usando um SSD NVMe, acho que ele não usa o agendador, pelo que entendi serverfault.com/questions/693348/…
Lucas Bustamante

14

Esta referência Debian mostra como detectar dinamicamente SSDs e alterar o planejador de acordo:

Em sistemas com diferentes tipos de unidades, você pode ajustar as configurações com uma regra do udev (crie /etc/udev/rules.d/60-ssd-scheduler.rules):

# Definir agendador de prazos para discos não rotativos

 ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0",ATTR{queue/scheduler}="deadline"

Para garantir que seu kernel possa detectar o status rotacional:

$ for f in /sys/block/sd?/queue/rotational; do printf "$f is "; cat $f; done
/sys/block/sda/queue/rotational is 1
/sys/block/sdb/queue/rotational is 1
/sys/block/sdc/queue/rotational is 0   <=== Only this is SSD!

Tudo acima é citado diretamente na referência Debian, que tem muitos outros elementos de interesse para os usuários iniciantes de SSD.


root @ titan: / home / kessaras # para f em / sys / block / sd? / fila / rotacional; faça printf "$ f é"; cat $ f; concluído / sys / block / sda / fila / rotacional é 0 / sys / block / sdb / fila / rotacional é 0 / sys / block / sdc / fila / rotacional é 1 / sys / block / sdd / fila / rotacional é 1 raiz @titan: / home / kessaras # cat / sys / bloco / sd * / fila / agendador [mq-deadline] nenhum [mq-deadline] nenhum [mq-deadline] nenhum [mq-deadline] nenhum [mq-deadline] nenhum Algo está muito errado aqui. Altera todos os discos rígidos para prazo
Pavlos Theodorou

O comando não muda nada - simplesmente informa se um disco é "rotacional" (HDD). Rotacional = 0 significa que é um SSD ou outra unidade que não gira.
Royce Williams

Como assim, isso não muda nada? E a regra do udev escrita lá, o que faz? Também está dentro de uma caixa amarela. Você quer dizer que sou cego ou não sei ler?
Pavlos Theodorou

11
Meu erro. Parece que no último kernel eles removeram os agendadores ... ??? para f em / sys / block / sd? / fila / agendador; faça printf "$ f é"; cat $ f; done / sys / block / sda / queue / scheduler é [mq-deadline] nenhum / sys / block / sdb / queue / scheduler é [mq-deadline] none / sys / block / sdc / queue / scheduler é [mq-deadline ] none / sys / block / sdd / fila / agendador é [mq-deadline] none O artigo e tudo o que você escreveu estão corretos. Só que há apenas prazo e nada mais para escolher.
Pavlos Theodorou
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.