Vaio P いまさらチューニングネタ ~CPU電圧・Clock調整
既に販売終了してしまったSony Vaio Pのチューニングネタです。Blogに書けるほどの情報が無かったので今日まで引っ張ってきてしまいました。
後期型であるVPCP11AKJのXP化とCPUコア電圧調整を中心とした省電力チューニング、その2。
CrystalCPUIDでCPU電圧をコントロールする
CPU電圧コントロールソフトはWindowsVista登場を境にして、ほとんどのソフトが更新を停止するかフェードアウトしてしまいました。比較的更新を頑張っていたCrystalCPUIDも2009年05月を最後に更新が途絶えています。
(新バージョン開発の話もすっかり下火になってしまって寂しい限りです。)
VaioPに搭載されるIntel Atomへの対応もされていないのですが、実はCPU電圧・倍率コントロールの部分は表示がおかしいながらも動作します。
CPU電圧・倍率コントロール機能においてはCore2Duo(Penrynデスクトップ)の仲間とみなされて動作します。電圧の表示は0.1125V高い値で表示されます。ですので、1Vの電圧を指定したいという場合は1.1125Vを選択します。また、倍率に関しては端数は機能しない模様です。10.5倍と指定しても10倍で動作します。
このとき、VAIO省電力設定の機能が動作している場合はCPU制御を「自動調節」以外にしないといけません。というのはCrystalCPUIDとの調整のバッティング具合によっては意図せぬClock-電圧の組み合わせになりフリーズするためです。他の選択肢「動作優先」では少なくとも電圧は変化せず、Clockも 負荷が極めて少ない時に最小値に落とされるだけみたいなので、そもそも負荷の高いときだけClockと電圧を上げようと設定したCrystalCPUID の動作とはバッティングしないようです。「省電力優先」では高負荷時にClockと電圧を上げる動作が入りますのでCrystalCPUID の動作とバッティングしそうなのですが、CrystalCPUID側の設定によっては回避できそうな感じです。
現在「省電力優先」で様子見中でして。今のところ不具合はありません。
さて、ほとんどのEIST付きAtom(Nシリーズ、Zシリーズ)はこれで済みそうですが、Z560の場合は問題がもう一つあります。最高倍率である16倍が選択肢に出てこないのです。選べる選択肢は15.5倍まで。上記の通り、15.5倍指定は15倍として動作します。そうするとZ550と同じ能力までしか発揮できません。
CrystalCPUIDを小改造
何とかならんかなぁと思って、分かりもしないのにソースを覗いてみると、あれ?ひょっとしたら何とかなるかも知れん。と思い、改造に挑戦しました。
(現在はソースの配布は行っていないようですし、私からも配布はできませんのでご了承ください。)
まず、開発環境について、恐らく元のソースはVisualC++6.0で開発されたものと思われます。VisualC++2010ExpressならMicrosoftから無償でダウンロードして使うことができます。……うーん、プロジェクトが開けない。調べるとVisualC++2008なら開ける模様。2010のサイトから古いバージョン(といっても2008しか見つからなかったが)へのリンクを発見。VisualC++2008Expressを入手できた。プロジェクトは新規形式に変換されて、無事に開けたみたい。ありがたいことにディレクトリ構成やプロジェクトファイルなども崩さず配布されていたのでこの辺で手を煩わされることはありませんでした。
とりあえず、16倍設定が選択できるようにしたいのでソースを見ていくと、倍率設定ができるダイアログのソースらしきもののPentiumDとかpenrynとかのコメントがあるところで15.5までしか設定していないように見える部分があって、for文で6から0.5きざみに20回ループって行がまんま倍率設定の選択肢っぽかったのでこれを21回ループに修正。これで16倍が選択肢に加わる。
ついでに倍率や電圧のテーブルが記述されているヘッダファイルの中にpentiumDの電圧基準値を発見。これを-0.1125Vした値に修正すれば、電圧選択肢のずれが直る。
さ~て、ビルドっと。うわ~Warningがいっぱい出るぅ。ってそこは置いておいて、幾つかErrorも出ていますな。なにやらMFCのモジュールかなにか必要みたいで(もう詳細忘れちゃった。)、んでExpressには同梱されていないので無理と。
仕方が無いのでVisualStudio2010の試用版をインストール。プロジェクトをさらに2008形式から移行させて、ビルドっと。お、MFCの問題はクリアしたっぽい。
その他、pow()は使えないとか、throw文がおかしいとか、幾つかのErrorが発生したが、目的のCPU電圧・倍率コントロールさえ正常に動けば良いので、関係なさそうと見るやさっくりコメントアウト~。
Versionも怒られたかな。なんか、WindowsNTSP4以降しか対応できないところを元ソースはSPなしも対応させようとしていたのかな?良く分からないけどWindows2000以降で動作すれば良いや~って、変更してクリア。
なんやかやで問題を潰していって、目的のexeファイルができた~、ってデカ!サイズが元の2.5倍くらいに膨れ上がってます。まぁ動けば良いわさ。
電圧-Clockをチューニング
んで、いろいろ調べながら弄っていたのですが、どうもこのAtom Z560はコア電圧0.85V以下には落とせないっぽいです(個体差があります)。PentiumM(Banias)ですら0.7V設定が可能だったので、ちょっとビックリな結果です。この辺はまた別の話題に切り出したいと思いますが、ちょっと制限きつ過ぎないか?Intelさん。
で、その0.85Vのままで12倍1600MHzまで動作可能な模様。13倍でBSOD。最大クロックである16倍2133MHzの状態では1.0125Vまで下げて様子見中。0.9875VでBSODが発生したので2段階上げました。もし、BSODが発生したらもう一段上げようと思います。
ワットチェッカーで計ってみると、電源ONから起動完了までの間は最大で10W~7W、起動完了すると6W~たまに5Wに落ち着きます(普段常用する輝度4/9段階にて)。バックライトOFFで4W。う~ん1W単位の測定じゃ物足りないですな。0.1W単位で計測できるワットモニターが欲しいところですな。
低負荷時の電圧は下げることが出来ていませんので、中負荷~高負荷時の消費電力低減に期待ですね。副産物としてサーマルスロットリングの発生を抑制できる効果も期待できます。特に設定できる下限の電圧0.85Vでも1.6GHzで動作可能であることから、80%以上の負荷が1秒間続かないと最大Clockにはしないようにして、性能と消費電力のバランスを取りました。まぁ、それ以前にサーマルスロットリングの発生を知覚したことは無いんだけども。
(ひょっとして当たり個体かも?)
一方、最低Clockである800MHzから1.6GHzへはわずか40%以上の負荷を300ms続けただけで移行するようにしています(AtomはWindowsを動作させるには比較的非力なCPUなので800MHzで40%は簡単に突破する)。この移行では電圧が変化しないので消費電力への寄与は少ないとみて、パフォーマンス優先の動きをさせています。
さて、上の方でVAIO省電力設定のバッティングについてあいまいな記述をしましたが、恐らくCrystalCPUIDの設定が「省電力優先」よりもパフォーマンス寄りの設定をしているためにVAIO省電力設定が動作する機会が無いのでは?と思われます。つまりVAIO省電力設定の方が電圧とClockを変えなきゃって思う前にCrystalCPUIDがClockを上げちゃっているのでVAIO省電力設定の出る幕無しと。
もう1台欲しかったなぁ
アイドル消費電力が4Wって凄いなぁ。元々、ゆくゆくはサーバー転用しても良いようにって思って購入はしたのですが、このパフォーマンスと消費電力のバランスは結構長期間に渡ってリーダーレベルを保つような気がしているんです。
Atomは今年の秋に32nmプロセスの製品が出る予定ですし、来年は22nm。2014年には14nmなどと言われています。CPUの飛躍は勿論あるのですが、様々な部品が組み合わさって一つの製品となったときの消費電力は必ずしも良い結果になるとは限らないということを最近強く感じましたので(この辺はまた別の話題として切り出します)。そもそも2.13GHzに2GBメモリで省電力を狙おうとする製品がなかなか出てきませんからね。
ゆくゆくじゃなくてすぐにサーバー転用でも良かったんじゃないかと。そのためにはもう1台欲しかったかなぁ、と。でも結構なお値段だったんでそうそう買えたものでも無かったですけどね。