2011年7月6日水曜日

[INFO] sysfsから読み取るMALI-400MP & CPU0 Galaxy S2でのパラメータ

Galaxy S2のGPUであるMALI400MPのモジュールパラメータです。267MhzのFixedを試すとか、100Mhz/750mvのステップを試すとか。パラメータいじりの最中はtry&errorになりがちです。sysfsがサポートされているモジュールであればある程度の状態はそこから読み取れますので、確認しつついじりたおしますw。MALIの場合は下記のような感じ。
adb shell
cd /sys/module/mali/parameters
# ls -l
ls -l
-r--r--r-- root     root         4096 2011-07-05 23:54 gpu_power_state
-r--r--r-- root     root         4096 2011-07-05 23:54 mali_gpu_vol
-r--r--r-- root     root         4096 2011-07-05 23:54 mali_gpu_clk
-rw-rw-r-- root     root         4096 2011-07-05 23:54 mali_dvfs_control
-rw-rw-r-- root     root         4096 2011-07-05 23:54 mali_max_job_runtime
-rw-rw-r-- root     root         4096 2011-07-05 23:54 mali_hang_check_interval
-rw-rw-r-- root     root         4096 2011-07-05 23:54 mali_benchmark
-r--r--r-- root     root         4096 2011-07-05 23:54 mali_major
-rw-rw-r-- root     root         4096 2011-07-05 23:54 mali_debug_level
# cat mali_gpu_clk
cat mali_gpu_clk
160
# cat mali_gpu_vol
cat mali_gpu_vol
950000
前回のエントリでも書いたけど、reguratorの設定範囲をちゃんとしてあげないと、実際のクロックはkernelのコードに従ってくれませんので、設定値を変更したkernelを適用したら、上記の手段などで、現在値を確認するのがいいと思います。ちなみに上記はデフォルトのIDLE状態。Quadrantなどを実行しながらこの値をチェックすると、kernelによりこの値がstepするのがわかります。

ちなみにreguratorの範囲の設定をミスるとvoltageは1000000に固定されちゃいます。

次にCPU関連。
adb shell
cd /sys/devices/system/cpu/cpu0/cpufreq
# ls -l
ls -l
-rw-rw-rw- root     root         4096 2011-07-05 20:22 cpuinfo_min_freq
-rw-rw-rw- root     root         4096 2011-07-05 20:22 cpuinfo_max_freq
-rw-rw-rw- root     root         4096 2011-07-05 20:22 cpuinfo_transition_latency
-rw-rw-rw- root     root         4096 2011-07-05 20:22 scaling_min_freq
-rw-rw-rw- root     root         4096 2011-07-05 20:22 scaling_max_freq
-rw-rw-rw- root     root         4096 2011-07-05 20:22 affected_cpus
-rw-rw-rw- root     root         4096 2011-07-05 20:22 related_cpus
-rw-rw-rw- root     root         4096 2011-07-05 20:22 scaling_governor
-rw-rw-rw- root     root         4096 2011-07-05 20:22 scaling_driver
-rw-rw-rw- root     root         4096 2011-07-05 20:22 scaling_available_governors
-rw-rw-rw- root     root         4096 2011-07-05 20:22 scaling_setspeed
-rw-rw-rw- root     root         4096 2011-07-05 20:22 cpuinfo_cur_freq
-rw-rw-rw- root     root         4096 2011-07-05 20:22 scaling_cur_freq
drwxr-xr-x root     root              2011-07-05 20:22 stats
drw-rw-rw- root     root              2011-07-05 20:22 ondemand

# cat cpuinfo_cur_freq
cat cpuinfo_cur_freq
100000
上記は100Mhzのステップを追加したときの状態ですが、注目すべきはcpuinfo_cur_freq。APLLの設定がちゃんと入ってないと、実際のクロックは変化しないようで200Mhzあたりになります。というわけで、みなさんSetCPUの表示にだまされるわけですね。コードと注意深くみていくと100MhzのAPLLの設定値が存在してるのがわかります。昔は100Mhz - 1.0Ghzだったような感じですね。そのAPLLの設定値をそのままいただけばOKですね。

手元のSGS2はこの設定で動作してますが、CPU時間の50%程度を占める周波数が今回設定した100Mhzなので、多少の効果は認められます、絶大とまではいかないのですがね。


それにしても、だれかExynosのドキュメントとか持ってないですかねぇ。みなさん手探り上等なんでしょうか。。

えー。次回はたぶんBLN。手元では動いたかも!

2 コメント:

ひろ さんのコメント...

creamsさん
S2のBLN期待しています。
どうぞよろしくお願いします。

creams さんのコメント...

blogはじめて初のコメントですw。ぼちぼちやってきますので、また見に来てください。

コメントを投稿