観察:
私は、AMDデュアルコアCPU(Turion II Neo N40L)を搭載したHPサーバーを使用しており、800〜1500 MHzの周波数をスケーリングできます。周波数スケーリングは、Linuxカーネル3.5を搭載したFreeBSD 9およびUbuntu 12.04で機能します。ただし、Ubuntuの上にあるKVM環境にFreeBSD 9を配置すると、周波数スケーリングが機能しません。ゲスト(したがってFreeBSD)は最小周波数と最大周波数を検出しないため、CPU使用率が高くなっても何もスケーリングしません。ホスト(Ubuntu)では、KVMプロセスはCPUリソースの80〜140%を使用しますが、周波数スケーリングは発生せず、周波数は800 MHzのままですが、同じUbuntuボックスで他のプロセスを実行すると、オンデマンドガバナーはすぐに周波数を1500 MHzにスケーリングします。
懸念と質問:
CPUがどのように仮想化されているのか、適切なスケーリングを実行するのがゲストの責任かどうかはわかりません。これが機能するために、ゲストに公開するいくつかのCPU機能が必要ですか?
Apendix:以下のRed Hatのリリースノートがさえ仮想化環境で動作するようにスケールアウトその周波数を示唆する傾向があるが(章6.2.2および6.2.3を参照)、ノートがどの仮想化技術(KVM、Xenの持つこの作品のアドレスに失敗したと思いました、など?)
詳細については、cpufreq-info
Ubuntu での出力は次のとおりです。
$ cpufreq-info
cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: powernow-k8
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 8.0 us.
hardware limits: 800 MHz - 1.50 GHz
available frequency steps: 1.50 GHz, 1.30 GHz, 1000 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 1.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 1.50 GHz:14.79%, 1.30 GHz:1.07%, 1000 MHz:0.71%, 800 MHz:83.43% (277433)
analyzing CPU 1:
driver: powernow-k8
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 8.0 us.
hardware limits: 800 MHz - 1.50 GHz
available frequency steps: 1.50 GHz, 1.30 GHz, 1000 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 1.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 1.50 GHz:14.56%, 1.30 GHz:1.06%, 1000 MHz:0.79%, 800 MHz:83.59% (384089)
私がこの機能を機能させたい理由は、エネルギーを節約し、静かに(あまり熱くなく)実行することです。また、単純な好奇心で、これが機能しない理由とその機能を理解するためです。
cpufreq-info
ホストOS上で実行すると、おそらく利用可能なドライバがないと文句を言うでしょう。
cpufreq-info
文句を言わず適切な情報を出力するので、CPUは完全にサポートされます(もちろんある意味で!)。使用されるドライバーはpowernow-k8で、これも論理的です。