[解決済み] LinuxのI/Oスケジューラの選択
質問
私は、/sys/block/[disk]/queue/scheduler に書き込むことによって、実行中のカーネル上の特定のデバイスの I/O スケジューラを変更することが可能であると仮定していることを読みました。 たとえば、私は私のシステム上で見ることができます。
anon@anon:~$ cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
は、デフォルトでは完全に公平なキューイング スケジューラであることを示しました。 私が疑問に思っているのは、4 つすべてのスケジューラをカスタムカーネルに含めることに意味があるのかどうかということです。 カーネルが適切なハードウェアに対して適切なスケジューラー、特にフラッシュ ベースのドライブには「noop」スケジューラー、従来のハード ドライブには他のスケジューラーを選択するほど賢くない限り、複数のスケジューラーをコンパイルすることにあまり意味はないように思われます。
このようなケースはあるのでしょうか?
どのように解決するのですか?
で説明されているように
/usr/src/linux/Documentation/block/switching-sched.txt
で説明されているように、特定のブロックデバイス上のI/Oスケジューラは実行時に変更することができます。新しいスケジューラーを使用する前に、以前のスケジューラーの要求がすべてフラッシュされるため、多少の待ち時間が発生するかもしれませんが、デバイスが多用されている間でも問題なく変更することが可能です。
# cat /sys/block/hda/queue/scheduler
noop deadline [cfq]
# echo anticipatory > /sys/block/hda/queue/scheduler
# cat /sys/block/hda/queue/scheduler
noop [deadline] cfq
理想を言えば、すべてのニーズを満たす単一のスケジューラが存在することでしょう。 それはまだ存在しないようです。 カーネルは、ワークロードに最適なスケジューラーを選択するための十分な知識を持っていないことが多いのです。
-
noop
は、メモリでバックアップされたブロック デバイス (例: ラムディスク) や、I/O を再スケジュールすることがリソースの無駄となるその他の非回転メディア (フラッシュ) に対して、しばしば最適な選択となります。 -
deadline
は、レイテンシーを厳しく制限しようとする軽量なスケジューラーです。 -
cfq
システム全体の I/O 帯域幅の公平性を維持しようとします。
デフォルトは
anticipatory
であり、多くのチューニングがなされましたが、その後
2.6.33
(2010年初頭) で削除されました。
cfq
はしばらく前にデフォルトになりました。その性能は妥当で、マルチユーザーシステム (そしてシングルユーザーデスクトップでさえ) にとって公平であることが良い目標だからです。 いくつかのシナリオでは、データベースがよく例として挙げられます。データベースはすでに独自のスケジューリングとアクセス パターンを持っている傾向があり、しばしば
最も
重要なサービスであることが多いからです (だから誰が公平性を気にするのでしょうか?)。
anticipatory
はこれらのワークロードで最高のパフォーマンスを発揮するように調整可能であるという長い歴史があり、また
deadline
は非常に迅速にすべての要求を基礎となるデバイスに渡します。
関連
-
virtualboxが仮想マシンを開けない場合は?linuxがvirtualboxにアクセスできない時の解決策
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
Centos7 dns service named installation, encountered ** server can't find xxx.com: NXDOMAIN問題
-
[解決済み] WindowsからLinuxへのscpにputtyを使用する
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] エクスポートあり/なしの変数の定義
-
[解決済み] Linuxのディレクトリ内のファイルを再帰的にカウントする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
virtualboxが仮想マシンを開けない場合は?linuxがvirtualboxにアクセスできない時の解決策
-
Linux Mintで入力メソッドを削除する方法は?Linux Mintで冗長な入力メソッドを削除するためのヒント
-
2020年deepin Deep OS V20のアップデートによる更新情報
-
ubuntu 12.04 eclipse でプログラム g++ がパスに見つからなかったと報告される。
-
floor'への未定義の参照/`&'への未定義の参照
-
[解決済み] Linuxでデータファイルから最初の列(実際には行名)を削除する方法は?
-
[解決済み] 標準エラー出力を /dev/null にリダイレクトする。
-
[解決済み] 複数のPDFファイルを1つのPDFに結合/変換する【終了】。
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
-
[解決済み] POSIX」の意味を教えてください。