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?

Jorge Castro
fonte

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.

Anônimo
fonte
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.

Eliah Kagan
fonte
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.

Royce Williams
fonte
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