Open Source Web Development Tutorials - Dev Shed
適切なI/Oスケジューラの設定と最適化
(2009/03/31公開)
最後に
これまで3章にわたって、LinuxにおけるファイルI/Oのあらゆる側面を考察してきました。第2章では、read()、write()、open()、close()などのシステム・コールを利用したLinuxにおけるファイルI/Oの基本-実のところ、Unixプログラミングの基本-を解説しました。第3章では、ユーザースペースのバッファおよび標準Cライブラリの実装を学習しました。本章では、より効果的であると同時に複雑なI/Oシステム・コールから、最適化の方法や性能に大きなマイナスを及ぼすシーク動作まで、高度なI/Oにまつわるさまざまな側面を論じました。
次の2章では、プロセスの生成、破棄、管理をテーマとするプロセス管理を学習していきます。頑張りましょう!
________________________________________
・ほかのUnix システムでは、countがゼロの時、errnoがEINVALを示す場合がありますから注意してください。標準として、countの値がゼロの場合、「EINVALを設定することができる」あるいは「そのほか(非エラー)の方法で処理することができる」と認められています。
・Eポーリングは2.5.44開発カーネルで導入され、インターフェースは2.5.66の時点で完成しました。
・書き出し動作と同様に、読み出し動作も技術的には非同期化(nonsynchronized)動作です。しかし、カーネルはページキャッシュに確実に最新データを入れます。つまり、ページキャッシュのデータは、常に、ディスク上のデータと同じかディスク上のデータより新しいのです。このため、実際の動作は常に同期化となります。それ以外の動作には、ほとんど意味がありません。
・ブロック番号の絶対サイズに対する制限は、従来、ドライブ合計サイズにさまざまな制限を課す大きな原因となっています。
・そのとおり、彼にちなんで名付けられたI/Oスケジューラがあります。I/Oスケジューラの目標は、エレベーターの滑らかな運転を維持するという目標と類似していることから、エレベーターアルゴリズムとも呼ばれます。
・以下のテキストは、現在実装されているCFQ I/Oスケジューラを記述しています。以前のCFQ I/Oスケジューラには、タイムスライスや予測による問題解決法(ヒューリスティック)は使用されていませんでしたが、類似の方法で動作していました。
・ここで紹介した方法は、ミッションクリティカルなI/O集約型アプリケーションに限定して利用しましょう。小数のI/O要求しか出さないアプリケーションでは、(仮に並べ替える要求があるにしても)並べ替えの実行は無意味であると同時に不必要です。
Copyright © 2008 Ziff Davis Enterprise, Inc.
Originally appearing in the U.S. Edition of Dev Shed. All Rights Reserved.








