バッテリー故障によりCPU周波数が低すぎる

バッテリー故障によりCPU周波数が低すぎる

バッテリーが完全に放電されているようです(再較正しようとしましたが、power-calibrate成功しませんでした)。

 $ acpi
Battery 0: Charging, 0%, charging at zero rate - will never fully charge.
Battery 1: Not charging, 0%

その結果、CPU周波数は最も低い値に設定されます。

 $ grep MHz /proc/cpuinfo 
cpu MHz     : 399.999
cpu MHz     : 400.064
cpu MHz     : 400.001
cpu MHz     : 400.046
 $ sudo cpupower frequency-info 
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 400 MHz - 2.60 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 400 MHz and 2.60 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency: Unable to call hardware
  current CPU frequency: 400 MHz (asserted by call to kernel)
  boost state support:
    Supported: no
    Active: no
 

周波数を手動で設定しようとしましたが、失敗しました。

 $ sudo cpupower frequency-set -f 2000
Setting cpu: 0
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

sysfsでブーストしても機能しません。

 $ echo "2000000" | sudo tee -a /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq 
2000000
 $ cat /sys/devices/system/cpu/cpu3/cpufreq/scaling_cur_freq 
400000

CPU周波数スケーリングを完全に無効にするか、最大値に設定するには?

LinuxとOpenBSDで問題が発生します。

また、以下を使用してパフォーマンスの低下を測定することもできます。

dd if=/dev/zero bs=1M count=1024 | md5sum -

予想よりほぼ10倍低い50MB/s程度の速度を提供します。

90W、65Wアダプターを使ってみましたが、周波数が上がりませんでした。

バッテリーを取り外してみましたが、まだ最小周波数で動作します。

# dmidecode -t processor | grep "Speed"
        Max Speed: 8300 MHz
        Current Speed: 2600 MHz
# lshw -c cpu | egrep "capacity|size"
       size: 400MHz         
       capacity: 4005MHz

答え1

sysfs の値を手動で設定しても効果がない場合は、周波数が BIOS レベルで制限されるためです。ノートパソコンがあればラップトップ、これは確かに周波数はBIOSレベルによって制限されるためです。

上記のリンクされたページを読んで理解していることを確認してください。。これはセキュリティ機能であり、BIOSは独自のCPU調整の重大な原因を検出する必要があります。
この場合、標準の65W電源アダプタの弱点と追加の電力を供給できるバッテリの不足により、最大電力需要に対応できない可能性があります。

アダプタが十分に強力であると確信していて、BIOSの問題が疑われるか予測できない動作(データ損失を含む)のリスクを負い、実際にこの制限を無視したい場合は、次のようにします。

値を/sys/module/processor/parameters/ignore_ppc0から1に変更

再起動後もこの設定を維持するには、processor.ignore_ppc=1スタートアップコマンドラインに追加します。

今、あなたは自分で行うことができます。頑張ってください!

答え2

状況は次のようになります。

  1. あなたは見ています現在の最大周波数ではなく命令実行時のCPU周波数です。これ。したがって、正しいタスクを実行するために他のタスクを実行する必要はありません。
  2. 選択した値は使用できません/sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies。を参照してください。
  3. この機能はカーネルでサポートされていないか、バグがあります。/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed: 無効なパラメータ

あなたは試すことができます:

  1. 使用cpupower-gui
  2. バッテリーがない場合、両方のオペレーティングシステムは同じです。
  3. 同様に、他のディストリビューションのライブUSB

LinuxおよびOpenBSDで動作する次の出力を公開します(一部のコマンドは使用できない可能性があります)。

uname -a
lsb_release -a
lscpu | grep "MHz".
sudo dmidecode -t processor | grep "Speed"
lshw -c cpu | egrep "capacity|size"
sudo lshw -c cpu | egrep "capacity|size"
head /sys/devices/system/cpu/cpu0/cpufreq/scaling_*

コンピュータの正確なモデルも投稿してください。

答え3

デルのノートパソコンで同じ問題が発生しました。

$ lscpu | grep MHz
CPU MHz:                         200.000
CPU max MHz:                     4800.0000
CPU min MHz:                     800.0000

わかりましたが、それはただの緩い電源コードでした。プラグを再挿入すると問題が解決しました。

関連情報