noopスケジューラーに変更するにはどうすればよいですか?


29

ラップトップにSSDがありますが、「noop」スケジューラーに切り替えることをお勧めします。

noopスケジューラに変更するにはどうすればよいですか。また、再起動後も持続するように変更を行うにはどうすればよいですか?

回答:


21

/ etc / default / grubを編集します。たとえばgksudo gedit /etc/default/grub、ここでは、elevator = noopを追加する必要があります。

に変更GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"ます。

次に、実行sudo update-grub2して再起動します。


6
匿名の答えは、システム上のすべてのディスクでデフォルトを変更するのに適しています。対照的に、Eliah Kaganの答えは特定のディスクのデフォルトを設定します。単一のドライブを搭載したラップトップの場合、どちらも正常に機能します。複数のディスクを備えたシステム(特に、SSDと回転ドライブの両方を備えたディスク)の場合、Eliah Kaganの答えはよりきめ細かな制御を提供します。
ロイスウィリアムズ

28

ハードディスクがであるとします/dev/sda。次に、現在使用されているスケジューラを確認できます。

cat /sys/block/sda/queue/scheduler

(現在使用中のスケジューラーは[ ]括弧で囲まれます。)

また、noopスケジューラを使用することもできます。

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

詳細については、この記事を参照してください。

変更を持続させるために、コマンドをに入れることができます/etc/rc.local


1
sudoでもこれを実行すると「許可が拒否されました」というエラーが表示されます
Lucas Bustamante

@LucasBustamanteあなたは走っていsudo echo noop > /sys/block/sda/queue/schedulerますか?ユーザーとして実行されるシェルは、出力がリダイレクトされるコマンドを実行する前にリダイレクトを設定するため、これは機能しません。echo noop | sudo tee /sys/block/sda/queue/scheduler代わりに使用できます。sudoでも「hello」をエコーできない> x.txtを参照してくださいBashでリダイレクトでsudoを使用するときに「許可が拒否されました」を解決する方法は?詳細およびその他のアプローチについて。(もしそれがあなたの言いたいことでないなら、私に知らせてください。)
エリアカガン

答えてくれてありがとう、それも助けにはなりませんでした。私が理解したものから、私はそれがすべてで、スケジューラを使用していないと思う、のNVMe SSDを使用していserverfault.com/questions/693348/...
ルーカスブスタマンテ

14

このDebianリファレンスは、SSDを動的に検出し、それに応じてスケジューラを変更する方法を示しています。

ドライブタイプが異なるシステムでは、udevルールを使用して設定を調整できます(/etc/udev/rules.d/60-ssd-scheduler.rulesを作成します)。

#非回転ディスクの期限スケジューラを設定する

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

カーネルが回転状態を検出できることを確認するには:

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

上記のすべてはDebianのリファレンスから直接引用されています。Debianのリファレンスには、初めてのSSDユーザーにとって興味深い他の多くの要素が含まれています。


root @ titan:/ home / kessaras#/ sys / block / sd?/ queue / rotationalのf do printf "$ f is"; 猫$ f; done / sys / block / sda / queue / rotational is 0 / sys / block / sdb / queue / rotational is 0 / sys / block / sdc / queue / rotational is 1 / sys / block / sdd / queue / rotational is 1 root @titan:/ home / kessaras#cat / sys / block / sd * / queue / scheduler [mq-deadline]なし[mq-deadline]なし[mq-deadline]なし[mq-deadline]なしここで何かがおかしい。すべてのハードディスクを期限に変更します
Pavlos Theodorou

このコマンドは何も変更しません-ディスクが「回転」(HDD)かどうかを単に報告します。Rotational = 0は、SSDまたはその他の非回転ドライブであることを意味します。
ロイスウィリアムズ

何も変わらないという意味ですか?そしてそこに書かれたudevルールは何をしますか?黄色い箱の中にもあります。盲目か読めないという意味ですか?
パブロス・セオドアー

1
私の間違い。最新のカーネルでは、スケジューラを削除したようです... ??? / sys / block / sd?/ queue / schedulerのf do printf "$ f is"; 猫$ f; 完了/ sys / block / sda / queue / schedulerは[mq-deadline]なし/ sys / block / sdb / queue / schedulerは[mq-deadline]なし/ sys / block / sdc / queue / schedulerは[mq-deadline] ]なし/ sys / block / sdd / queue / schedulerは[mq-deadline]なし記事とあなたが書いたものはすべて問題ありません。締め切りがあるだけで、他に何も選択できないというだけです。
パブロス・セオドロウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.