回答:
ディスクI / Oにはエレベーターと呼ばれるものがあります。ディスクサブシステムは、プラッター全体でディスクヘッドがスラッシングされるのを回避しようとします。I / O要求を並べ替えて(バリアなどで禁止されていない場合)、ヘッドがディスクの内側から外側に移動し、要求されたI / Oを途中で実行します。
2つ目は、I / O要求のマージです。ファイルのさまざまな部分にアクセスする短い時間枠内に多くの要求がある場合、I / Oサブシステムはいくつかのばらばらな要求を発行する代わりに、すべてのデータを一度に取得しようとします。
チューニングに関しては。あなたがアプリケーションの作成者であれば、できることはたくさんあります。fsync()などを使用できる場合はいつでも、大規模な順次I / Oを発行できます。データがプラッター上にあることを確認する必要がある場合。
あなたがシステム管理者であり、2つのアプリのデータリクエストが飛び跳ねて、ファイルを順番に読み取ろうとしていることを完全に知っている場合(たとえば、2つのDVDを並行してトランスコードしている場合)、はい、先読みの増加が役立つはずです。それ以外の場合は、チューニングを行う前に、I / Oパターンとサイズを確認し、RAIDレベル(ある場合)およびその他の要因を検討する必要があります。実際のボトルネックを確認してください。チューニングを開始する前に、システムを実際に制限しているものを推測するのは難しいかもしれません。
Linuxでは、独自のスケジューリングアルゴリズムを定義できます。さまざまな可能性があります。学校でそれについて説明する必要がありました。RedHatのこの記事は、私を大いに助けてくれました。Red Hat専用ですが、これらのスケジューラは事実上すべてのLinuxディストリビューションにあります。