GNU/Linux >> Linux の 問題 >  >> Linux

CPU 周波数スケーリングを無効にするにはどうすればよいですか?

Web パフォーマンスの常習者として、システム パフォーマンスを改善し、Web アプリケーションを高速化する方法を常に探しています。そして今日は、CPU 周波数スケーリングの魔法と、CPU 周波数スケーリングを無効にしてシステムをフル CPU 速度で実行するための実用的なガイドを紹介します。

CPU 周波数スケーリングを無効にする方法に入る前に、CPU スロットリングとは何かを理解しましょう。

CPU周波数スケーリングとは?

カーネル v. 2.6.18 (CentOS) および 2.6.32 (Ubuntu) 以降、動的 CPU 周波数スケーリング (別名 CPU スロットリング) と呼ばれる新機能が導入されました。

この CPU 周波数スケーリングにより、プロセッサは最大許容周波数よりも低い周波数で実行できます。これは電力消費を抑えるためだけに行われますが、これの欠点は、CPU 速度をフルに活用できないことです。

CPU の実行速度を確認するにはどうすればよいですか?

以下に示すように、このコマンドを実行します。

grep -E '^model name|^cpu MHz' /proc/cpuinfo

出力は次のようになります:

[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.000
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.000
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.000
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.000
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.000
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.000
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.000
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.000

ご覧のとおり、元の CPU 速度は 3.40 Ghz ですが、Mhz での実行中の CPU 速度は約 1600 です。CPU は合計速度の半分で実行されています。

これは、cpufrequtils / cpupoweruitls と呼ばれるクールな CPU パッケージでも実現できます

CentOS/Debian に cpupowerutils をインストール

yum install cpupowerutils -y

Ubuntu/Debian に cpupowerutils をインストール

apt-get install cpufrequtils

このコマンドを実行すると、CPU の最小速度と最大速度などの詳細が表示されます。

cpupower frequency-info

予想される出力は次のようになります:

[[email protected]:~]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: 1.60 GHz - 3.80 GHz
  available cpufreq governors: performance powersave
  current policy: frequency should be within 1.60 GHz and 3.80 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency: 1.60 GHz (asserted by call to hardware)
  boost state support:
    Supported: yes
    Active: yes
    3600 MHz max turbo 4 active cores
    3700 MHz max turbo 3 active cores
    3800 MHz max turbo 2 active cores
    3800 MHz max turbo 1 active cores

Linux (RedHat および Ubuntu) で CPU 周波数スケーリングを無効にする

最も一般的な Linux プラットフォームで CPU 周波数スケーリングを無効にする方法を見てみましょう。

CentOS / RHEL ユーザー向け

次のコマンドを使用して、CPU 周波数を利用可能な最大速度に変更しましょう:

cpupower frequency-set -g performance

CPU の実行速度に変化があるかどうかをもう一度見てみましょう:

[[email protected]:~]grep -E '^model name|^cpu MHz' /proc/cpuinfo
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 3497.218
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 3392.296
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 3397.742
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 2283.578
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 3457.640
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 2133.234
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 1600.257
model name : Intel(R) Xeon(R) CPU E3-1240 V2 @ 3.40GHz
cpu MHz : 3740.265
[[email protected]:~]

前のコマンドでわかるように、CPU は必要なときに以前よりも高い速度で実行されています。

手動で行う別の方法は、次のコマンドを実行して、すべての CPU の CPU ガバナーを「オンデマンド」モードから「パフォーマンス」モードに変更することです:

for CPUFREQ in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do [ -f $CPUFREQ ] || continue; echo -n performance > $CPUFREQ; done

システムで CPU 速度を制御するデーモンが実行されている場合は、それらを停止して、システムをフル CPU 速度 (cpuspeed、cpufreqd、または powerd) で実行します。

service cpuspeed stop

Ubuntu / Debian ユーザー向け

このファイルを編集し、存在しない場合は作成してください:

nano -w /etc/default/cpufrequtils

内部に次の行を追加します:

GOVERNOR="performance"

CTRL + X を押して保存し、Y を押します。

次のステップ:オンデマンド デーモンを無効にして、サーバーの再起動後に変更内容が失われないようにし、次のコマンドを実行します:

update-rc.d ondemand disable

それで全部です。次のコマンドで設定をもう一度確認してください:

cpufreq-info

結論

CPU をフルスピードで実行すると、アプリケーションのパフォーマンスが大幅に向上します。最近のほとんどの CPU はすでに非常に優れた CPU 冷却システムを備えているため、これは問題にはならないはずですが、これが余分な電力消費や CPU の過熱を引き起こさないように注意してください。ご覧のとおり、RedHat ベースと Debian ベースのディストリビューションの両方で、CPU 周波数スケーリングを簡単に無効にすることができます。これについて問題や質問がある場合はお知らせください。

さらに読む:

  • cpufreq を使用した Linux での CPU 周波数のスケーリング
  • ArchLinux CPU 周波数スケーリング ドキュメント
  • RedHat CPUFreq ガバナーのドキュメント
CPU 周波数スケーリングを無効にするにはどうすればよいですか?最終更新日:2017 年 4 月 11 日 Esteban Borges
Linux
  1. KernelCareの自動更新を無効にするにはどうすればよいですか?

  2. Ubuntu 16.04 –セキュアブートを無効にするにはどうすればよいですか?

  3. ブートチャートを無効にする方法は?

  1. CentOSでSELinuxを無効にする方法は?

  2. スレッドが実行されている CPU コアを確認するにはどうすればよいですか?

  3. CPU使用率を取得する方法

  1. Wine で実行されているプログラムのインターネット アクセスを無効にするにはどうすればよいですか?

  2. ディスク io を監視するにはどうすればよいですか?

  3. CD/DVD ドライブのボタンを無効にするにはどうすればよいですか?