web-dev-qa-db-ja.com

Ubuntu 13.04 CPU周波数スケーリングが最低周波数で「スタック」

MacBook AirにUbuntu 13.04をインストールしました。しばらく試してみた後、マシンが本当に遅く感じたので、CPU周波数をチェックしました。 cpufreq-info、4つのコアすべてで800MHzを報告します(これは最低の設定です)。ガバナーはオンデマンドに設定されています。システムに負荷をかけると(4回ハッシュする小さなスクリプトを実行する)、マシンはグラインドしますが、cpufreq-infoはまだ800MHzを報告しています。周波数を手動で2GHzに設定することで、パフォーマンスの問題を解決できますが、バッテリーのコストがかかります。

これはcpufreq-infoの出力です:

cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to [email protected], please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 800 MHz - 2.00 GHz
  available frequency steps: 2.00 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz (asserted by call to hardware).
  cpufreq stats: 2.00 GHz:5,75%, 2.00 GHz:0,47%, 1.90 GHz:0,00%, 1.80 GHz:0,01%, 1.70 GHz:0,01%, 1.60 GHz:0,01%, 1.50 GHz:0,01%, 1.40 GHz:0,01%, 1.30 GHz:0,01%, 1.20 GHz:0,02%, 1.10 GHz:0,01%, 1000 MHz:0,02%, 900 MHz:0,02%, 800 MHz:93,67%  (1388)
analyzing CPU 1:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 10.0 us.
  hardware limits: 800 MHz - 2.00 GHz
  available frequency steps: 2.00 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz (asserted by call to hardware).
  cpufreq stats: 2.00 GHz:3,17%, 2.00 GHz:0,01%, 1.90 GHz:0,01%, 1.80 GHz:0,00%, 1.70 GHz:0,00%, 1.60 GHz:0,01%, 1.50 GHz:0,01%, 1.40 GHz:0,01%, 1.30 GHz:0,01%, 1.20 GHz:0,01%, 1.10 GHz:0,01%, 1000 MHz:0,02%, 900 MHz:0,02%, 800 MHz:96,71%  (1433)
analyzing CPU 2:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 2
  maximum transition latency: 10.0 us.
  hardware limits: 800 MHz - 2.00 GHz
  available frequency steps: 2.00 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz (asserted by call to hardware).
  cpufreq stats: 2.00 GHz:2,69%, 2.00 GHz:0,00%, 1.90 GHz:0,01%, 1.80 GHz:0,01%, 1.70 GHz:0,01%, 1.60 GHz:0,02%, 1.50 GHz:0,01%, 1.40 GHz:0,01%, 1.30 GHz:0,02%, 1.20 GHz:0,02%, 1.10 GHz:0,01%, 1000 MHz:0,02%, 900 MHz:0,02%, 800 MHz:97,16%  (1194)
analyzing CPU 3:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3
  CPUs which need to have their frequency coordinated by software: 3
  maximum transition latency: 10.0 us.
  hardware limits: 800 MHz - 2.00 GHz
  available frequency steps: 2.00 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1000 MHz, 900 MHz, 800 MHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 800 MHz and 2.00 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz (asserted by call to hardware).
  cpufreq stats: 2.00 GHz:3,07%, 2.00 GHz:0,02%, 1.90 GHz:0,01%, 1.80 GHz:0,00%, 1.70 GHz:0,01%, 1.60 GHz:0,01%, 1.50 GHz:0,01%, 1.40 GHz:0,01%, 1.30 GHz:0,01%, 1.20 GHz:0,01%, 1.10 GHz:0,03%, 1000 MHz:0,03%, 900 MHz:0,01%, 800 MHz:96,77%  (1004)
10
user159534

Mintの最新バージョンでも同じ問題が発生しました。スケーリングを保守的に設定することが、オンデマンドの動作に最も近いように思えました。

次に、問題が何であるかを見つけました、up_thresholdが非常に高く、95%の負荷に設定されていたので、これは継続的な負荷には問題ありませんが、ほとんどの場合、CPUアクティビティの小さなバーストがあり、CPUが必要です100%の速度にはるかに高速にスケーリングします。 th_upresholdを低く設定することでこれを解決しました(私の場合は75で問題ないようです)。 目的の値を/sys/devices/system/cpu/cpufreq/ondemand/up_thresholdにエコーして変更します

4
user165241

Jupiterに似た省電力アプリケーションはありますか を使用することをお勧めします。

そして、indicator-cpufreqを使用して、現在の周波数を知る必要があります。 indicator-cpufreqのインストール/設定方法を貼り付けたリンクを確認してください

Jupiterに似た省電力アプリケーションはありますか? セクション3)プロセッサーと周波数スケーリング

ondemand        Dynamically switch between CPU(s) available if at 95% cpu load

CPUを低く保ち、95%CPU負荷の場合のみ超過

performance     Run the cpu at max frequency

conservative    Dynamically switch between CPU(s) available if at 75% load

CPUを低く保ち、CPU負荷が75%の場合のみ超過

powersave       Run the cpu at the minimum frequency
2
Qasim

14.04-16.04にこの問題が発生しました(今日現在)。それを解決するには、UbuntuにBIOS制限を無視するように強制する必要がありました。次は私のために働いた:

GRUBを開く:

Sudo vim /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT行を置き換えます。

- GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
+ GRUB_CMDLINE_LINUX_DEFAULT="quiet splash intel_pstate=disable processor.ignore_ppc=1"

GRUBを更新します。

Sudo update-grub

再起動してから:

echo 1 | Sudo dd of=/sys/module/processor/parameters/ignore_ppc
echo 2900000 | Sudo dd of=/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq 
echo 2900000 | Sudo dd of=/sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq 
echo 2900000 | Sudo dd of=/sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq 
echo 2900000 | Sudo dd of=/sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq 

私のために働いた。 CPUコアの数を確認し、それに応じてすべて更新します。これらの余分な行を/etc/rc.localに入れて、ブートのたびに実行することもできます。

忍者の編集:上記の2900000を次の値に置き換えます。

cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
0
benvand