web-dev-qa-db-ja.com

Ubuntuおよびプロセッサ速度の検出

テレビのメディアセンターとして使用する古いラップトップを持っています。通常は、可能な限りスムーズに実行できるように、異なるOSとアプリをインストール/再インストール/アンインストールしています。

私が気づいたのは非常に奇妙なことでした。私のラップトップは、1800mhzで実行されるトリプルコアAMDプロセッサーを搭載したHP Pavilion G62です。 Windows 7でXBMCを起動し、プロセッサの速度を見ると、1800mhzとはっきりと表示されます。ただし、ランチャーから、またはセッションとしてUbuntuから起動すると、プロセッサは800mhzだけであると表示されます。

さらに調査したかったので、WindowsにDXDIAGをロードして、速度を確認しました。案の定、それは1800MHzであることを示しています。ただし、UbuntuでHardInfoを起動すると、各コアの速度が1500mhz、1500mhz、および800mhzであることがわかります。

これは、アドバタイズされたプロセッサ速度とWindowsによって検出された速度の両方が横たわっているか、四捨五入されていることを意味しますか?または、Ubuntuがプロセッサの速度を検出していて、システムが最適に動作していないという問題がありますか?私は後者を言いたいと思います...主にWindowsがUbuntuよりもはるかにスムーズに実行されるように見えるためです。

12
Scotty_80

デフォルトでは、Ubuntuはondemand周波数ガバナーを使用します。ガバナーをチェック/切り替えるには、次のようにcpufrequtilsパッケージをインストールします。

Sudo apt-get install cpufrequtils

各コアの現在の速度/ガバナーを確認するには、次を実行します。

cpufreq-info

次のように、すべてのコアをperformanceに設定できます。

Sudo cpufreq-set -r -g performance

次のように、すべてのコアが最大周波数で実行されていることを確認できます。

grep MHz /proc/cpuinfo

:この変更は一時的なものです。再起動すると、ondemandに戻ります。

11
Sylvain Pineau

理論的背景:典型的なコンピューターでは、CPUはほとんどの時間アイドル状態です。電力を節約するために、最新のCPUは 周波数スケーリング -を実装しています。つまり、オペレーティングシステムは、負荷が低いときにCPUに低い周波数に切り替えるように指示できます。このテクノロジーは、IntelプロセッサーではSpeedStep、AMDプロセッサーではCool'n'Quietと呼ばれています。

Linuxでは、カーネルの周波数スケーリングはcpufreqインフラストラクチャによって実装されます。このインフラストラクチャでは、「ガバナー」の概念を使用して周波数を制御します。

デフォルトのガバナは「オンデマンド」で、プロセッサの使用率が95%を超えると頻度が増加します。これにより、CPUはアイドル状態でも電力を節約できますが、実行することがある場合は完全なパフォーマンスに切り替わります。ミリ秒単位で測定される遷移レイテンシがあるため、アイドルCPUが突然大きな負荷を取得すると、フルパワーに切り替える前に数ミリ秒間低周波で動き続けるため、特定の状況では、これによりパフォーマンスが若干低下する可能性があります常にフルスピードで実行されます。

他のガバナー があります。これには、CPUを常に全周波数で実行する「パフォーマンス」ガバナーが含まれます。これにより、スイッチングレイテンシはなくなりますが、消費電力が増加する場合があります。

別の回答で提案されているように、異なるガバナーで実験することもできますが、劇的な結果が得られるとは思いません。 99%のケースで意味をなさない限り、彼らはそれをデフォルトにしないでしょう:)

ただし、質問に戻ります:ほとんどの場合、Windowsは可能な最大CPU周波数(CPUのボックスにアドバタイズするもの)を表示しますが、Ubuntuは表示しますこの特定の瞬間に各CPUコアが実行される実際の周波数。 UbuntuでCPUが遅くなるという意味ではありません。ラップトップでUbuntuの実行が遅いように見える場合、他の原因が考えられます。たとえば、RAMの不足、ハードドライブの低速などです。現代のUbuntuでは、Windows XPなどよりも多くのリソースが必要です。 「古いラップトップで見つける可能性が高いです。

より技術的な読み物:

10
Sergey