1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】ディスク I/O の基本概念(コンセプト)【5分で読める】

Last updated at Posted at 2025-02-17

ディスク I/O の概念

理解のために小咄形式でまとめました。

登場人物

  • 太郎(後輩):入社1年目の若手エンジニア。
  • 花子(先輩):システムエンジニア歴3年の先輩。

場面:オフィスの休憩室
太郎がコーヒーを片手に花子のデスクへ向かう

太郎:「花子先輩、ディスク I/O のパフォーマンスについて勉強してるんですが、いまいち理解できなくて…。ディスク I/O について教えてもらえませんか?」

花子:「いい質問ね。ディスク I/O のパフォーマンスを評価するときは、いくつかの重要な概念を押さえておく必要があるのよ。」


ディスク I/Oの時間について

花子:「まずは、I/O にかかる時間について考えましょう。I/O の時間は、主に次の3つに分けられるの。」

  1. I/O待ち時間(I/O Wait Time)

    • 「ディスクが他のリクエストを処理している間、キューで待機している時間。」
  2. I/Oサービス時間(I/O Service Time)

    • 「実際にディスクがデータを読み書きしている時間。」
  3. I/O要求時間(I/O Request Time)

    • 「I/O のリクエストを出してから完了するまでの時間。つまり 待ち時間 + サービス時間 の合計。」

太郎:「なるほど。I/O って単純にデータの読み書きだけじゃなくて、待ち時間も影響するんですね。」


タイムスケールの違い

花子:「次に タイムスケール の話ね。ディスク I/O のパフォーマンスは ミリ秒マイクロ秒 の単位で考えるの。例えば…」

  • HDD(ハードディスク) はミリ秒(ms)単位
  • SSD(ソリッドステートドライブ) はマイクロ秒(µs)単位

「だから、SSD は HDD に比べて I/O の速度が格段に速いのよ。」

太郎:「そういえば、データベースのサーバーでは SSD を使うことが多いですよね。」


キャッシング(Caching)

花子:「次は キャッシング の話ね。キャッシュを活用することで、ディスク I/O のレイテンシ(遅延)を減らせるの。」

  • キャッシュヒット:「すでにキャッシュにデータがある場合、ディスクを読みに行かずに高速に処理できる。」
  • キャッシュミス:「キャッシュにデータがない場合、ディスクアクセスが発生するので遅くなる。」

「例えば、OS には ページキャッシュ という仕組みがあって、最近使ったデータを RAM に保存しておくの。これで頻繁にアクセスされるデータの I/O を減らせるのよ。」

太郎:「じゃあ、RAM のサイズが大きいほうが、キャッシュヒットしやすくなってパフォーマンスが上がるってことですね!」


ランダム I/O と シーケンシャル I/O

花子:「ディスクのアクセスには ランダム I/Oシーケンシャル I/O という2種類があるの。」

  1. シーケンシャル I/O(Sequential I/O)

    • 「データが連続して配置されていて、一度に大量のデータを読み書きするパターン。HDD でも SSD でも高速。」
  2. ランダム I/O(Random I/O)

    • 「データがディスク上のバラバラな場所にあって、ランダムにアクセスするパターン。特に HDD では遅くなる。」

「HDD の場合、ディスクの 回転磁気ヘッドの移動 に時間がかかるから、ランダムアクセスが遅くなるのよ。逆に SSD はヘッドの移動がないから、ランダムアクセスも高速。」

太郎:「データベースのインデックス検索みたいな処理は、ランダム I/O が多そうですね。」

花子:「その通り!だから、データベースを高速化するには インデックスをメモリに載せる とか SSD を使う といった対策が有効なの。」


I/O サイズと IOPS(Input/Output Operations Per Second)

花子:「I/O のパフォーマンスを測る指標に IOPS というのがあるの。」

  • IOPS(アイオーピーエス):「1秒間に処理できる I/O の回数」
  • I/O サイズ:「1回の I/O で扱うデータ量」

「HDD は IOPS が低いけど、1回の I/O で 大きなデータサイズ を扱えば効率的に使えるの。一方、SSD は 小さいデータ を大量に扱うランダム I/O に強い。」

太郎:「ってことは、大きいファイルを連続で書き込む処理なら HDD でも問題ないってことですね。」


花子:「ここまでの話を現実世界で考えてみると、こういうイメージね。」

  • I/O待ち時間 → レジの行列待ち
    「スーパーで買い物するとき、レジが混んでたら並ぶよね?これが I/O待ち時間。」

  • I/Oサービス時間 → レジでの会計時間
    「自分の番がきたら会計する。この時間が I/Oサービス時間。」

  • キャッシュヒット → ポケットの小銭
    「会計時に ちょうどの金額 をポケットから出せればすぐ終わる(キャッシュヒット)。でも、財布から探すと時間がかかる(キャッシュミス)。」

  • シーケンシャル I/O → ベルトコンベア方式のレジ
    「流れ作業で商品を順番に処理すれば速い。これがシーケンシャル I/O。」

  • ランダム I/O → 商品を探し回る買い物
    「店内で欲しいものをあちこち探してると時間がかかる。これがランダム I/O。」


まとめ

花子:「ディスク I/O のパフォーマンスを理解するには、待ち時間やキャッシュ、I/O の種類を意識するのが大事よ。」

太郎:「ありがとうございます!待ち時間やキャッシュを意識して勉強してみます!」


参考リンク

システムパフォーマンス関連記事の目次

システムパフォーマンス関連記事は、以下の書籍を参考に記述しています。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?