8

カーネルを再コンパイルしていますが、I/O スケジューラを選択したいと考えています。これらの違いは何ですか?

4

2 に答える 2

13

それらをすべてコンパイルすると、起動時またはデバイスごとに使用するスケジューラを選択できます。すべてのバイトがカウントされる組み込みデバイスをターゲットにしている場合を除き、コンパイル時に選択する必要はありません。Documentation/block/switching-sched.txt起動時のデバイスごとまたはシステム全体の切り替えの詳細については、を参照してください。

ionice(1)CFQ スケジューラを使用すると、ツールまたはioprio_set(2)システム コールを介して優先度を設定できます。これにより、システムのブロックデバイスが比較的アイドル状態のときにのみ、一部のプロセスを優先したり、他のプロセスに強制的に IO を実行させたりすることができます。キューは、プロセスからの IO 要求をキューに分離し、 CPU スケジューリングと同様に各キューからの要求を処理することによって実装されます。設定の詳細については、 を参照してDocumentation/block/cfq-iosched.txtください。

対照的に、デッドライン スケジューラは、すべてのプロセスからのすべての書き込みを一度に調べます。書き込みをセクター番号でソートし、すべてを線形に書き込みます。期限とは、期限が切れる前に各ブロックを書き込もうとすることを意味しますが、期限内であれば、適切と思われるブロックを自由に再配置できます。設定の詳細については、 を参照してDocumentation/block/deadline-iosched.txtください。

于 2012-02-18T04:11:59.563 に答える
3

Probably very little in practice.

In my testing, I found that in general NOOP is a bit better if you have a clever RAID controller. Others have reported similar results, but your workload may be different.

However, you can select them at runtime (without reboot) so don't worry about it at compile-time.

My understanding was that the "clever" schedulers (CFQ and deadline) are only really helpful on traditional "spinning disc" devices which don't have a RAID controller.

于 2012-02-18T07:22:52.570 に答える