I > O Scheduler


GovernorやI/Oスケジューラの違いが気になったので、以下のスレッドを素人適当訳。

http://forum.xda-developers.com/showthread.php?t=1242323

ここに書かれていることが正しいとは限りません。参考にしつつ、自分にあったものを選択してください


I/Oスケジューラとは?

Input/Output(I/O)スケジューリングは、OSがストレージに投入するblock I/O operationsの順序を決める方法を説明する用語です。
I/Oスケジューリングは、時に"ディスクスケジューリング"とも呼ばれます。

I/Oスケジューラはその目標によって、たくさんの効果をもちます。 いくつかの一般的な目標は:

  • HDDのシークにかかる無駄な時間を最小限に抑える
  • 特定のプロセスの入出力要求に対して優先順位をつける
  • 実行中のプロセスそれぞれにディスク帯域を与える
  • 特定の入出力要求が特定の期限前に発行されることを保証する。

各I/Oスケジューラの特徴

  • Noop Noopは実際には悪くない。シンプルなI/Oスケジューラであり、Androidでは、シンプルなものがより良い。
    I think in G1 one known "tweak" was to set Noop as default I/O Scheduler.
  • Anticipatory これがAndroidデバイスにとってうまく動くのかわかりません。誰かがこれを使ったり、勧めているのを聞いたことがありません。
    サーバーなどでより良く動くと判断していています。
  • CFQ I/OスケジューラのCFQは、GovernorのOndemandにあたるものです(訳注:デフォルトということ)。
    ほとんどの場合によく動くことを目指し、最もバランスがとれています。
    しかしながら、Androidは(PCとは)動作が異なるため、最も適切なI/Oスケジューラではありません。
    このI/Oスケジューラを向上させるための調整版が、XDAの至る所に数多く存在しています。
  • Deadline DeadlineはBFQとともに、非常に人気があります。しかし、AndroidのCFQよりはよいものの、VRと比べて
    まだ不足しています。
  • VR VRはDeadlineの要素を持つとても良いI/Oスケジューラです。 おそらくMTD(訳注:フラッシュメモリを使用する)Androidデバイスにとって一番良いです。
    多分、ベンチマークで一番良いスコアを出すことができますが、同時に一番不安定でもあります。
    性能の変動は、平均以上になることも平均以下になることもありますが、最高点に達したときが...一番良いスコアです。=
  • Simple(SIO) 名前が示すように、Simple I/Oはシンプルです。
    AndroidデバイスにとってI/Oスケジューラは単純なほどよいと言ったのを覚えていますか?
    これは、そのようなケースです。特にeMMCデバイスにとって信頼でき、ピーク性能はVRほどよくありませんが、
    性能面では最も良いものの一つです。
  • BFQ これは、ベストなI/Oスケジューラと誤認され、図らずも一番人気のI/Oスケジューラになっています。 CFQを元としていますが、BFQV2であってもVRやSimpleよりもパフォーマンスで劣ります。
    (でも、USB転送速度は良いように見えます)
  • まとめ: (私の愚見では)
    パフォーマンス: 1位 - VR
    信頼性:     1位 - Simple

各I/Oスケジューラの特徴(2)

別のフォーラムにて、性能測定をした結果。

http://www.team-continuum.net/home/index.php?topic=290.0

スケジューラによってWrite性能はそこそこ変動するが、Read性能は大差ないようだ。


I/Oスケジューラの変更

Sakuramilk氏作成のTweakGS2を使うのが簡単。
[General]→[I/O Scheduler]で変更。

最終更新:2011年12月15日 21:57
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。