ディスク I/O の動作モデル
理解のために小咄形式でまとめました。
システムパフォーマンス関連記事の目次
登場人物
- 太郎(後輩):入社1年目の若手エンジニア。
- 花子(先輩):システムエンジニア歴3年の先輩。
場面:オフィスのホワイトボード前
太郎が ディスク I/O モデル
に関する資料を見ながら、花子に質問する。
太郎:「花子先輩、ディスク I/O
について調べているんですが、 ディスクのモデル
って具体的にどういうものがあるんですか?」
花子:「いい質問ね! ディスク I/O のパフォーマンス
を理解するためには、 ディスクがどのようにデータを処理するか
という モデル
を知っておくことが大事よ。 基本的な 3 つのモデル
を紹介するわね。」
ディスク I/O のどうさモデルの解説
花子:「ディスク I/O のモデル
には、大きく 3 つの要素
があるの。」
- 単純ディスク(Simple Disk)
- オンディスクキャッシュ(On-Disk Cache)
- コントローラ(Controller)
1. 単純ディスク(Simple Disk)
花子:「単純ディスク
とは、 基本的なディスク I/O の動作モデル
を表す概念よ。」
- ディスクは I/O キューを持ち、I/O リクエストが到着すると処理を行う。
- I/O リクエストが増えると、キューにリクエストが溜まり、処理待ちが発生する。
- このモデルは、
スーパーマーケットのレジ待ちの行列
に例えられるわね。
「たとえば、 顧客(I/O リクエスト)がレジ(ディスク)で順番待ちをする
のと似ていて、 レジの処理が遅いと行列が伸びる
のよ。」
太郎:「つまり、 ディスクの処理能力を超えるリクエストが来ると、待ち時間(レイテンシ)が増える
ってことですね!」
2. オンディスクキャッシュ(On-Disk Cache)
花子:「次に オンディスクキャッシュ
ね。これは、 ディスク内部に搭載されたメモリキャッシュ
を指すの。」
- リードキャッシュ(Read Cache): 直前に読み取ったデータをキャッシュし、再利用を高速化。
- ライトキャッシュ(Write Cache): 書き込みデータを一時的にキャッシュし、後でまとめて書き込む。
「このキャッシュを使うことで、 I/O のレイテンシを削減
できるわ。たとえば、 コンビニのレジ横にある小銭トレイ
みたいなものね。」
太郎:「なるほど! 事前にキャッシュしておくことで、実際のディスクアクセス回数を減らせる
んですね!」
3. コントローラ(Controller)
花子:「ディスクコントローラ
は、 ディスク I/O の制御を行う専用チップ
のことよ。」
- I/O スケジューリング: I/O リクエストの順序を最適化。
-
エレベータアルゴリズム: HDD の
シーク時間を最小化
するための手法。 -
フラッシュ最適化: SSD の
書き込み負荷を分散
するウェアレベリング。
「たとえば、 バスの運行管理システム
みたいなもので、 効率的なルート
を考えて、 無駄な移動を減らす
のと同じよ。」
太郎:「ってことは、 ディスクの性能を引き出すために、コントローラのアルゴリズムが重要
になるんですね!」
花子:「これらの ディスクモデル
を ファストフード店のオペレーション
に例えると、こんな感じね。」
-
単純ディスク →
お客さんが注文して、調理待ちの行列ができる
-
オンディスクキャッシュ →
ポテトや飲み物を事前に準備しておいて、注文時にすぐ渡せる
-
コントローラ →
店員が注文の順番を最適化して、効率よく提供する
太郎:「なるほど! キャッシュがあると、処理が早くなるし、オペレーションが最適化されると、全体の流れがスムーズになる
ってことですね!」
まとめ
花子:「ディスク I/O の 基本モデル
を理解することで、 なぜ遅延が発生するのか
や どうすれば最適化できるのか
を考えやすくなるわ。」
太郎:「ありがとうございます! オンディスクキャッシュの影響
を確認するために、 キャッシュ設定を調べてみます!」
参考リンク
システムパフォーマンス関連記事の目次
システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。