2012年08月26日

CPUのクロック設定とCPU Governor

CPUガバナーって言葉、初めて見たときは「何のこっちゃ?」と思いました。
CPUのクロックを動的に変更する調速機構みたいなものなんですね。ISTweakの表記
「スケーリング」だと多少分かりやすい気もします。CPU Governorの種類は多いので、
覚え書きとしてxdaで見た説明記事を要約してみました。
以下 の項はIS05のOCカーネルで設定可能、 の項は設定できないものです。
Ondemand
ストックカーネルのデフォルトとしても多く採用されているガバナー。システムの反応に
応じて一気に最大クロックに切り替えられるように作られた。上がるときはスパッと
上がるが、下がるときはやや段階的に下がる。
信頼性は高いが、バッテリー持ちはやや劣る。
負荷サンプリングに素早く対応し、クロックの変更が頻繁に変わる。
CPU作業初期の需要に応じるのは早いが、CPU作業全体の要求には呼応しない。

OndemandX
ondemandよりややバッテリーに優しく作られ、画面オフではクロックを500MHz以下
とする。ondemand/ondemandXは sio I/Oスケジューラと相性が良い。

Conservative
ゆっくりとしたondemand、CPUの活動性に対する反応は遅く、徐々にスケールアップ
するのでバッテリーに優しい。動きは ondemandがベースだが、上下動はより段階的
で CPU速度の極端なジャンプが無い。

Interactive
より速いondemandを、ということで考案された。CPUがアイドル状態から
抜けるとサンプリングを増やして追従を上げる。反応はondemandより良いが、
最大クロックに上げるまでには間を取る。マルチタスクで忙しい仕事とゆっくり
した仕事が交互にあっても、最大最小に切り替え時に一気に上下せず少し間を取って、
中間のクロックを取る。パフォーマンス的にはondemandより良い。
画面オンで早くトップスピードに上げるので、画面オンの時間が短く、それを
繰り返すような使用法ではバッテリー消費が多くなる。

InteractiveX
interactiveとほぼ同じだが、タイマーパラメーターをバランス良くチューンし、
画面オフのとき最小クロック固定とした。よりバッテリー持ちがアップ。

Performance
最大最小共、最大クロックに固定。最もパフォーマンスが良いがバッテリー消費も最大。
ベンチマークテスト用。

Powersave
最大最小共、最小クロックに固定。実用的ではない。

MinMax
最大と最小クロックだけの切り替え。中間のクロックを使わない。

Smartass
パフォーマンスを下げずにバッテリー消費を減らすコンセプトで、interactiveを
全面書き換えした人気のガバナー。画面オンでの最小クロックは画面オフ時のクロック
より多く、smartassV2よりバッテリー持ちは悪い。

SmartassV2
smartassの作者Erasmuxの第二弾。画面オフとオンで別の「理想クロック」が
設定されており、オフの際はクロックダウンは速く、オンの際の理想クロック
までの上昇は早い。smartassと違って画面オフでもクロック上限は無いので、
画面オンオフに関わらず使うクロックの範囲は同じ。
パフォーマンスとバッテリー持ちのバランスが持ち味。xdaでは一番人気。

Scary
conservativeをベースにsmartassの特徴を加えたもの。
スケーリングは必ず1段ずつで、画面オフでは最大クロックを245MHzに固定。
最小クロックが245MHz以上の設定でも、画面オフ時は最小を120MHzに落とし、
画面オンで最小クロックを元に戻す。
conservativeと同性能で最長バッテリー時間を目指した戦略。

Smoothass
smartassとほぼ同じだが、よりアグレッシブ。バッテリー持ちはやや改善。

Intellidemand
ondemandがベース。ゲーム、マップ等GPUが忙しいときはondemandと同じ、
GPUがアイドリングになるブラウジングモードでは段階的にクロックを下げる。
スクリーンオフでは最大クロックにならない。

Lazy
ondemandをベースにクロック使用最低時間(min_time_state)というパラメーターを
加えたもの。一つのクロックを使う時間短くし過ぎないことで、クロックの切り替え
回数を減らし、不安定さを無くした。ondemandよりpolling(サンプリングチェック)
は多いがクロック切替は減る。画面オフでのクロック上限パラメーターがある。
クロック上げのジャンプアップはある。

Lagfree
ondemandに似ているがバッテリー消費の最適化がされている。
クロック増減は段階的で、途中のクロックを飛ばさずに一段ずつ上下させる。
ondemandのように頻繁に100%になることは少なくなる。
それでもビデオ再生のカクツキはあまり無いというレポート有り。

Lionheart
サムスンのupdate3によるconservativeベースのガバナ。バッテリー持ちの良さが
基本だが、スケーリングをよりアグレッシブにしてパフォーマンスを上げた。

LionheartX
Lionheartを基にsmartasssのスリープ時の動作を追加し、バッテリー持ち改善。
deadline I/O schedullerと相性が良い。

Brazilianwax
smartassV2の変形版でクロック変化を、よりアグレッシブにしたもの。
バッテリー持ちはやや悪くなる。

SavagedZen
同じくsmartassV2ベースだが、brazilianwaxよりもパフォーマンスと
バッテリー持ちのバランスを改善。

まとめると、

オンデマンド系‥ 高負荷でクロック上げが急激。CPU busy-timeによるスケーリング決定
Ondemand, OndemandX, Intellidemand, Lazy, Lagfree
コンサバ系‥ クロックの上げ下げがゆるやか
Conservative, Scary, Lionheart, LionheartX
インタラクティブ系‥ 負荷に敏感。CPUのidle-loopによるスケーリング決定
Interactive, InteractiveX, Smartass, SmartassV2, SavagedZen, Smoothass, Brazilianwax
その他もろもろ
Performance, Powersave, MinMax
といったところでしょうか。他に ondemand系として hotplugというのがあります。
これは残念ながらマルチコア専用でIS05は無関係。CPU使用率が低いと片方のCPUを
止めてくれたりもするらしいです。
せっかくだから TaskerでCPUのクロックとCPUガバナーを調整する設定をしてみた
のですが、長くなったので次の記事で。



ラベル:ROOT OCカーネル
posted by ヤスタネ at 19:04| Comment(3) | TrackBack(0) | root生活 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
こんにちは。

設定を色々変えてベンチマークテストを試していたのですが、ISTweakで最高MHz&Performanceにした所ハングアップ→再起動→起動して1〜2秒でハングアップ→とロゴループ状態となりました。
今、スマホはCWMの画面にしてPCからadbで接続してsuで#になれるところまで確認しております。

ISTweakが書き換えた数値を戻したいのですが、格納先が分かりません。
また、ISTweakの「起動時に設定」にチェックを入れてあるので、書き換えても起動時に戻ってしまう気もします。
autoexec.shにecho 1410600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freqのような行を追加すれば良いのでしょうか?

ホレ見たことかと思われるかもしれませんが、アドバイスいただけたらと思います。
よろしくお願いいたします。
Posted by あずみ at 2012年11月11日 19:37
所用で使いたかったのでCWMでレストアしちゃいました。

結果きちんと使用できているのですがadvanceレストアでやらずそのままレストアしたら標準カーネルに戻ってしまったのでまたイチからroot化を楽しみたいと思います!
Posted by あずみ at 2012年11月11日 22:46
あずみさんへ

同じIS05でもCPUの個体差があるので、ギリギリのクロックアップは
怖いですね。私も2048MHzを一度だけ ISTweakで 試してハングアップさせ、
以来1804以上には上げず、今は1401MHzを常用してます。
Governorに performanceを使うのもちと怖いです。
CPU Spyというアプリを入れて一日使って、どのクロックが良く使われているかを
チェックするとクロックの設定の指標になりますよ。

もう済んだことですが、もしもう一度同じことをやって、
ISTweakの「起動時に設定」にチェックを入れてあったなら、
CWMで /systemと /dataをマウントして、
# /system/bin/pm disable jp.marijuana.ISTweak (または pm uninstall)
# echo 102400 >/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
して再起動するか、/data のみリストアすることでイケたかもしれませんね。
Posted by yasutane at 2012年11月12日 13:23
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。