# ランダムIOとシーケンシャルIO ## 定義 一連の論理ファイルシステムI/Oは、個々のI/Oのファイルオフセットに基づきランダム(直接)かシーケンシャル(逐次)かに分けられる。シーケンシャルI/Oでは次のI/Oのオフセットが前のI/Oの末尾になるのに対し、ランダムI/Oではオフセット間に特別な関係がなく不規則に変化する。ランダムファイルシステムワークロードは、ランダムに複数の異なるファイルへアクセスするという意味になる場合もある。フラグメンテーション(断片化)は、ファイルシステムの配置が乱れてファイルがディスク上に散在し、シーケンシャルな論理I/Oがランダムな物理I/Oを発生させる状態を指す。ファイルシステムは伝統的にディスク上へファイルを連続的に配置してランダムI/Oを減らそうとしてきた(回転ディスクで特に有効、フラッシュドライブではそれほど重要でない)。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 8 ファイルシステム]] §8.3.3) ## ブロックとエクステント ブロックベースのファイルシステムは固定サイズのブロックにデータを格納するため、大きなファイルほど多数のブロックポインタとメタデータブロックが必要になり、ブロックの配置がバラバラになってランダムI/Oを引き起こしやすい。エクステント(extent)ベースのファイルシステムはファイルのために連続的なスペースをプレアロケートし、必要に応じて成長させる。可変長で1個以上の連続ブロックを表すため、ストリーミング性能が上がり、ファイルデータが局所化されてランダムI/O性能も上がる。追跡すべきオブジェクト数を減らせるためメタデータ性能も向上する。(Source: [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 8 ファイルシステム]] §8.4.4.1) ## 横断的知見 - 本概念に触れたソースは現時点で1件([[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 8 ファイルシステム]])のため、複数ソース突き合わせによる知見の蓄積は今後の ingest に委ねる。 ## 未解決の問い - 非一様ランダム分布(パレート分布等)を用いたベンチマーク(fio の `random_distribution=pareto:0.9` 等)が「現実に起きるアクセスパターンを正確にシミュレートできる」と本章は述べるが、その根拠となる実運用ワークロードの分布計測データは本章には示されていない。 - NVMe/SSD時代にランダムI/Oとシーケンシャルの性能差がどこまで縮小したか、回転ディスクを前提とした本章の記述(§8.3.3)を裏付ける最新の定量データは別途必要。 ## 関連 - [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 8 ファイルシステム]] — 本概念の原典解説(§8.3.3, §8.4.4.1)。 - [[プリフェッチと先読み]] — シーケンシャルアクセスパターンの検出を前提とする関連機能。 ## 出典 - [[@2023__OReillyJapan__詳解 システム・パフォーマンス 第2版 - Chapter 8 ファイルシステム]] §8.3.3, §8.4.4.1