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