The Linux Home Page at Linux Online

Linuxカーネルメーリングリストに、Flashベースのストレージ向けの新しいI/Oスケジューラのアイデアと、このアイデアを実現するためのパッチが公開された。ディスパッチの決定にスライスではなくIOPS特性を利用した仕組みを採用しており、「FIOPS (Fair IOPS) I/Oスケジューラ」と呼ばれている。

ハードディスクの内部ではディスクが回転しており、I/Oスケジューラはこの物理特性を加味した設計となっている。一方で、ディスクの回転がないSSDなどのFlashベースのストレージは、ハードディスクとは特性が異なってくる。

公開されたアイデアでは、まずハードディスクとは異なるFlashベースストレージの特徴として次の4点を説明し、従来のI/Oスケジューラの想定と異なることを指摘している。

  1. I/Oシークが発生しない
  2. 読み込みと書き込みのコストが大きく異なる
  3. リクエストにかかる時間はリクエストのサイズに依存している
  4. 高スループット、高IOPS、低レイテンシー

CFQ I/Oスケジューラは、ハードディスクの物理特性を加味したもので、Flashベースストレージ向けに設計されたものではない。このため、1に関してはFlashストレージ向けの最適化が行われているものの、2と3に関しては対応していないことなどが説明されている。今回、提案されているFIOPSでは、こうしたFlashベースストレージの特性に合わせ、ディスパッチの決定にスライスではなく、高IOPSであるといった特性を利用するという。

FIOPSの基本アイデアは、高IOPSである特性を利用し、最小のリクエストサイズ合計(viosの合計)を持つタスクを優先的に選択してディスパッチを実施することにあるようだ。提案段階では、アイデアの提示とその確認、意見募集などが目的となっており、いくつかの機能はサポートされていないほか、詳細なベンチマークなども実施されていない。

今回の内容は、すぐにメインストリームに取り込まれるといった種類の提案 / パッチではないが、Flashベースストレージを前提としたI/Oスケジューリングアイデアのひとつとして参考になるだろう。特に、アイデアそのものがシンプルでわかりやすいところが興味深く、最終的にどの程度の性能が発揮できるのかが注目される。

Flashベースストレージは組み込みからハイエンドまで幅広い分野における普及が見込まれ、Linuxのみならず他のOSにおけるI/Oスケジューラの実装アイデアとしても興味深い。