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.