Comment passer au planificateur noop?

29

J'ai un SSD dans mon ordinateur portable et on m'a dit que le passage à l'ordonnanceur "noop" est préférable.

Comment puis-je passer à l'ordonnanceur noop et où dois-je effectuer la modification pour qu'elle persiste lors des redémarrages?

Jorge Castro
la source

Réponses:

21

Modifiez / etc / default / grub, comme gksudo gedit /etc/default/grubici, vous devez ajouter ascenseur = noop.

Remplacez GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"par GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop".

Ensuite, exécutez sudo update-grub2et redémarrez.

Anonyme
la source
6
La réponse anonyme est bonne pour changer la valeur par défaut sur tous les disques d'un système. En revanche, la réponse d'Eliah Kagan définit la valeur par défaut pour des disques spécifiques. Pour un ordinateur portable avec un seul lecteur, cela fonctionne bien. Pour les systèmes à disques multiples - notamment les disques avec SSD et disques rotatifs), la réponse d'Eliah Kagan offre un contrôle plus fin.
Royce Williams
28

Supposons que votre disque dur le soit /dev/sda. Ensuite, vous pouvez vérifier quel planificateur est actuellement utilisé pour cela:

cat /sys/block/sda/queue/scheduler

(Le planificateur actuellement utilisé sera entouré de [ ]crochets.)

Et vous pouvez le faire utiliser le planificateur noop:

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

Consultez cet article pour un peu plus d'informations.

Pour que le changement persiste, vous pouvez entrer la commande /etc/rc.local.

Eliah Kagan
la source
1
J'obtiens une erreur "permission refusée" en cours d'exécution, même avec sudo
Lucas Bustamante
@LucasBustamante Courez-vous sudo echo noop > /sys/block/sda/queue/scheduler? Cela ne fonctionne pas, car le shell, qui s'exécute en tant qu'utilisateur, configure la redirection avant d'exécuter la commande dont la sortie est redirigée. Vous pouvez utiliser à la echo noop | sudo tee /sys/block/sda/queue/schedulerplace. Voir Impossible d'écho «bonjour»> x.txt même avec sudo? et Comment résoudre la «permission refusée» lors de l'utilisation de sudo avec redirection dans Bash? pour plus d'informations et d'autres approches. (Si ce n'est pas ce que vous voulez dire, faites-le moi savoir.)
Eliah Kagan
merci d'avoir répondu, cela n'a pas aidé non plus. J'utilise un SSD NVMe, je pense qu'il n'utilise pas du tout le planificateur, d'après ce que j'ai compris serverfault.com/questions/693348/…
Lucas Bustamante
14

Cette référence Debian montre comment détecter dynamiquement les SSD et changer le planificateur en conséquence:

Dans les systèmes avec différents types de lecteurs, vous pouvez ajuster les paramètres avec une règle udev (créer /etc/udev/rules.d/60-ssd-scheduler.rules):

# Définir le planificateur de délais pour les disques non tournants

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

Pour vous assurer que votre noyau peut détecter l'état de rotation:

$ 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!

Tout ce qui précède est extrait directement de la référence Debian, qui a de nombreux autres éléments d'intérêt pour les nouveaux utilisateurs de SSD.

Royce Williams
la source
root @ titan: / home / kessaras # pour f dans / sys / block / sd? / queue / rotation; faire printf "$ f is"; cat $ f; done / sys / block / sda / queue / rotation est 0 / sys / block / sdb / queue / rotation est 0 / sys / block / sdc / queue / rotation est 1 / sys / block / sdd / queue / rotation est 1 racine @titan: / home / kessaras # cat / sys / block / sd * / queue / scheduler [date-mq] aucun [date-limite mq] aucun [date-limite mq] aucun [date-limite mq] aucun Quelque chose ne tourne pas rond ici. Il change tous les disques durs en date limite
Pavlos Theodorou
La commande ne change rien - elle indique simplement si un disque est "rotatif" (HDD). Rotation = 0 signifie qu'il s'agit d'un SSD ou d'un autre disque non tournant.
Royce Williams
que voulez-vous dire que cela ne change rien? Et la règle udev qui y est écrite que fait-elle? C'est aussi dans une boîte jaune. Tu veux dire que je suis aveugle ou que je ne sais pas lire?
Pavlos Theodorou
1
Mon erreur. Il semble que dans le dernier noyau, ils aient supprimé les ordonnanceurs ... ??? pour f dans / sys / block / sd? / queue / scheduler; faire printf "$ f is"; cat $ f; done / sys / block / sda / queue / scheduler est [mq-deadline] none / sys / block / sdb / queue / scheduler est [mq-deadline] none / sys / block / sdc / queue / scheduler est [mq-deadline ] aucun / sys / block / sdd / queue / scheduler est [mq-deadline] aucun L'article et tout ce que vous avez écrit vont bien. C'est juste qu'il n'y a qu'un délai et rien d'autre à choisir.
Pavlos Theodorou