差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン | 次のリビジョン 両方とも次のリビジョン | ||
freebsd:tuning_power_consumption [2015-03-27 12:31] Decomo |
freebsd:tuning_power_consumption [2019-11-29 13:09] Decomo |
||
---|---|---|---|
行 5: | 行 5: | ||
Alexandar Motin 記す: | Alexandar Motin 記す: | ||
- | I would like to summarize some of my knowledge on reducing | + | FreeBSDでの消費電力削減に関して私の知るところをまとめ、FreeBSD 8.x/9.xで実装されたいくつかの新しい事柄を説明しようと思います。このストーリーの主人公は、C2D T7700 2.4GHz CPU、965GMチップセット、SATA HDDを搭載した私の12インチAcer TravelMate 6292ラップトップです。 |
- | Modern systems, especially laptops, are implementing big number of power-saving technologies. Some of them are working automatically, | + | 現代のシステム、とりわけラップトップは数多くの省エネ技術を搭載しています。それらのいくつかは自動で機能するものの、その他は効果を発揮するための明示的な設定と特別なシステムチューニング、トレードオフが存在します。 |
- | So here is the steps: | + | |
+ | ここから順にみていきます。 | ||
==== 1. CPU ==== | ==== 1. CPU ==== | ||
CPUはシステムで最も消費する部分です。 | CPUはシステムで最も消費する部分です。 | ||
- | フル稼働下ではそれだけで40W以上((原文ではconsume more then 40W of powerとなっているが、more than 40Wの間違いか?))の電力を消費しますが、実際のラップトップ利用で最も重要なのはアイドル消費電力です。 | + | フル稼働下ではそれだけで40W以上の電力を消費しますが、実際のラップトップ利用で最も重要なのはアイドル消費電力です。 |
Core2Duo T7700 CPUは2つのコアを持ち、2.4GHzで動作し、2400, | Core2Duo T7700 CPUは2つのコアを持ち、2.4GHzで動作し、2400, | ||
では、どうやってそれを使うのでしょうか: | では、どうやってそれを使うのでしょうか: | ||
行 38: | 行 39: | ||
</ | </ | ||
- | Intel Turbo Boost機能の制御のために、ACPIは公称値より1MHz上の余分な性能レベルを報告するかもしれません。 | + | Intel Turbo Boost機能の制御のために、ACPIは公称クロック周波数より1MHz多い追加の性能レベルを報告するかもしれません。 |
- | 例えば、Core i7-870では下記のようなレポートを見るでしょう: | + | 例えば、Core i7-870では下記のようなレポートを見ることができるでしょう: |
< | < | ||
行 68: | 行 69: | ||
C3ステートは、CPUが全ての内部クロックを完全に停止し、電圧を下げ、システムバスからの切り離しを許可します。 | C3ステートは、CPUが全ての内部クロックを完全に停止し、電圧を下げ、システムバスからの切り離しを許可します。 | ||
このステートは更なる省エネ効果をもたらしますが、安くはなくトレードオフを必要とします。 | このステートは更なる省エネ効果をもたらしますが、安くはなくトレードオフを必要とします。 | ||
- | C3ステートでCPUが完全に止まるや否や、FreeBSDがSMPでイベントタイマーとして使用する各CPUコア内のローカルAPICタイマーは機能しなくなります。 | + | C3ステートでCPUが完全に止まると同時に、FreeBSDがSMP環境下でイベントタイマーとして使用する各CPUコア内のローカルAPICタイマーは機能しなくなります。 |
- | それはシステムタイマーを止め、スケジューリングを破壊し、これはシステムを死へと誘います。 | + | それはシステムタイマーを止め、スケジューリングを破壊し、システムを死へと誘います。 |
この問題に対する唯一の解決策は幾つかの外部タイマーを使うことです。 | この問題に対する唯一の解決策は幾つかの外部タイマーを使うことです。 | ||
C1Eとして知られる擬似ステートもあります。 | C1Eとして知られる擬似ステートもあります。 | ||
これはCステート対応のないOSで、モダンなCPUがより上手く動くための次善策です。 | これはCステート対応のないOSで、モダンなCPUがより上手く動くための次善策です。 | ||
- | BIOSで有効にすると、そのOSによってC1ステートを要求された際に、CPUが幾つかのより深いCステートに入る事を可能にします。 | + | BIOSで有効にすると、OSによってC1ステートを要求された際に、CPUが幾つかのより深いCステートに入る事を可能にします。 |
通常、AMDのCPUとBIOSは実際のCステートをOSに見せませんが、代わりにC1Eメカニズムだけを使います。 | 通常、AMDのCPUとBIOSは実際のCステートをOSに見せませんが、代わりにC1Eメカニズムだけを使います。 | ||
行 99: | 行 100: | ||
これによりシステム応答時間が僅かに増加するかもしれませんが、ラップトップにとって重要なことではありません。 | これによりシステム応答時間が僅かに増加するかもしれませんが、ラップトップにとって重要なことではありません。 | ||
- | Also we may avoid additional 128 interrupts per second per core, by the cost of scheduling precision, with using i8254 timer also for statistic collection purposes instead of RTC clock, by using another newly added option: | + | 別の新規オプションを追加することで、RTCの代わりに静的コレクション用途のi8254タイマを用いて、スケジューリング精度のコストによる1コア毎秒間128回の追加割込みを回避することもできるでしょう。 |
< | < | ||
行 119: | 行 120: | ||
効果的なC3ステート使用の結果、C2+powerdと比較して約2Wの削減です。 | 効果的なC3ステート使用の結果、C2+powerdと比較して約2Wの削減です。 | ||
- | As soon as entering | + | AMD CPUにおいてC1Eステートへの突入は、予測不能で制御不能なC3ステートへの落下を引き起こし、ひいてはローカルAPICタイマの停止に繋がる可能性があるため、FreeBSD 8.xではC1E機能を完全にブロックします。 |
== FreeBSD 9.x == | == FreeBSD 9.x == | ||
- | FreeBSD 9.xは新しいイベントタイマーサブシステム'' | + | FreeBSD 9.xは新しいイベントタイマーサブシステム'' |
システムは最適と思われるタイマーを自動的に選択しますが、'' | システムは最適と思われるタイマーを自動的に選択しますが、'' | ||
- | また、'' | + | また、'' |
- | That allows to not reduce | + | これにより'' |
+ | それでもなお'' | ||
FreeBSD 9.x adds check whether it safe to use specific C-state with present event timer and may automatically block C2/C3 states, making it mostly safe. | FreeBSD 9.x adds check whether it safe to use specific C-state with present event timer and may automatically block C2/C3 states, making it mostly safe. |