CPU電力管理はサーバーのパフォーマンスに影響しますか?


44

私は、ピーク時以外の時間に(ライブ)データベースサーバーで簡単なベンチマークを実行していましたが、クエリが多少不安定なベンチマーク結果を返していました

少し前にすべてのサーバーで「バランスのとれた」省電力プランを有効にしていました。これらのサーバーは使用率が高く、エネルギーを節約できると考えていたためです。

私は、これがパフォーマンスに大きな、測定可能な影響を与えないと仮定していました。ただし、CPUの省電力機能一般的なパフォーマンスに影響を与えている場合(特に共有データベースサーバーの場合)、その価値があるかどうかはわかりません!

私たちのウェブ層は、35-40%の負荷であっても、1.25 Vで2.8 Ghzから1.15 Vで2.0 Ghzにダウンクロックしていることに少し驚きました。

私はダウンクロックが電力を節約することを完全に期待していますが、その負荷レベルは十分に高いと思われるので、フルクロック速度にキックアップする必要があります。

8 cpuデータベースサーバーには大量のトラフィックがありますが、CPU使用率は非常に低くなります(SQLクエリの性質によるものです-多くのクエリですが、本当に単純なクエリです)。通常、10%以下で座っています。そのため、上記のスクリーンショットよりもさらにダウンクロックしていると思います。とにかく、電源管理を「高パフォーマンス」に変えたとき、単純なSQLクエリベンチマークが約20%改善され、実行ごとに非常に一貫したものになりました

負荷の軽いサーバーでの電源管理はwin-winであり、パフォーマンスが低下せず、ほとんどのサーバーでCPUが一般的に電力の#1または#2消費者であるため、電力を大幅に節約できると考えていたと思います。そうではないようです。CPUの電力管理が有効になっていると、サーバーに常に負荷がかかり、電力管理が効果的にオフになっていない限り、パフォーマンスをいくらか放棄します。この結果は驚きました。

サーバーのCPU電源管理について共有する他の経験や推奨事項はありますか?サーバーでオンまたはオフにするものですか?節約している電力を多く測定しましたか?オンとオフでベンチマークを実施しましたか?


2
私はこれを言うのは嫌いですが、あなたはあなた自身の答えを提供しました。バランスモードの場合は「パフォーマンス」の横にある3つのバブルを、高性能モードの場合は6つのバブルを参照してください。違いがあります:)省電力は主にCPUのダウンクロックによって実装されます。負荷がかかるとパフォーマンスが回復する可能性がありますが、パフォーマンスが低下する可能性があります。
ビルヴァイス

はい。ただし、Windows Server 2008 R2では「バランス」がデフォルトオンになっています。これは、例えば、負荷の軽いサーバーなどの一般的な使用でパフォーマンスが大幅に低下することはないことを意味します。
ジェフアトウッド

4
6つの泡と6つの泡!それは大きな違いのようです!:)
ビルヴァイス

1
Windows:1985
マイケルグラフ

回答:


16

サーバーについてはわかりませんが、組み込みデバイスの現在の考え方は、低電力とフラットアウトの間のステップを気にすることではありません。実際の量のCPU負荷。この時点で、可能な限り高速に切り替えられ、ジョブを完了して低電力でアイドリングに戻ることができます。


1
私は、これはそれが道であることに同意する必要があり、サーバ上で動作します。
ジェフアトウッド

11

私は常にサーバーのあらゆる種類の電源管理をオフにしています。私は他の人が経験したことに興味がありますが、サーバーがクロック不足の場合、CPUを100%に「ステップアップ」するための遅延が常にあり、データセンターではこのような遅延を設定すると常に仮定しました受け入れられません。

あなたが提供したデータは、この仮定をサポートしているようです。そのため、特定のテストは行っていませんが、WindowsまたはBIOS内で省電力テクノロジーを使用しないでください。「ネットワークのシャットオフ」とPCIカードの設定もオフにして、非常に保守的です。


8

これにより実際にどれだけの電力が節約されます
この機能がサーバーの安定性を危険にさらす可能性があると判断した場合(これについては経験があります)、他の場所でエネルギー節約を探してください。

所有するサーバーの量に対してどれだけのエネルギーを節約できるかを調べてみます(ただし、既にこれを行っている可能性があります)。回答に投稿したグラフはパーセンテージであるため、あなたの会社にとって、節約は実際にはほとんど実際の力ではないかもしれません。サーバーがあまりない場合、実際にはそれほど多くないかもしれません。オフィスでモーションライトやそのようなものを使用すると、エネルギーを節約できる可能性があります(市場性はそれほど高くありませんが)。

数年前、アメリカの主要な自動車会社の1つ(そのことを忘れて)を読んで、車の排気ガスの排出量を変更するプレッシャーを覚えていたことを覚えています。代わりに、同社は、工場の一部に上限を設けると、工場にとってはるかに安くなり、排出量が大幅に削減されることを示しました。

ディスクを忘れないでください:
また、これらの省電力機能が使用されていない場合、ディスクを停止させないことを確認することもできます。少しの間、すべてのSQLクエリの結果がRAMに格納され、ディスクが使用されてスリープ状態になります(ただし、そのように動作するかどうかはわかりません)。これが発生する可能性がある場合、すべてが再びスピンアップする間、パフォーマンスが大幅に低下します。


4
ああ、ディスクのスピンダウンはサーバー上で非常に危険です。我々は、すべてのスピンアップは、ドライブが実際に戻ってそれを作るだろうかどうかを確認するために宝くじのようなものです。これは非常に悪い考えだったことを私たちに助言し、当社のNASとブレントOzar(私たちのSQL / DBAの専門家)で有効になっている持っていた:)
ジェフアトウッド

「バランス」モードでは、「高パフォーマンス」モードと比較して、アイドル時の電力が10ワット節約されます(コアi7 4790では〜15.5W対〜25.5W)。ただし、Windows Server 2012のバランスモードは、データベースクエリのパフォーマンスを大幅に低下させる最大CPUクロック速度まで上昇しないようです。
ライアンアンダーソン

8

CPUの電力管理が有効になっていると、サーバーに常に負荷がかかり、電力管理が効果的にオフになっていない限り、パフォーマンスをいくらか放棄します。この結果は驚きました。

序文:SpeedStepを使用して、Intel Xeonとその省電力パフォーマンスについていくつかの飛躍/一般化を行っています。Intel Xeon " Yorkfield " 45nm CPU について読むと、Enhanced Intel SpeedStep Technology(EIST)およびEnhanced Halt State(C1E)が状況の本当の犯人のようです。このような電力管理機能をオンにするとエネルギーの節約に役立つと信じているが、CPUが負荷のかかったエネルギーを必要とする場合、システムは通常の電圧クロック速度設定に戻ると私は同意します。EISTとC1Eには、BIOSでオプションを使用するときに直感的に示唆されない副作用がいくつかあるようです。多数のオーバークロックWebサイトをクロールした後、BIOSのこれら2つの設定はかなりのフラストレーションを引き起こしているようです。

http://www.overclock.net/intel-cpus/376099-speedstep-guide-why-does-my-processor.htmlから:

C1E(Enhanced Halt State):C1Eは、2つのコンポーネントのうちシンプルです。BIOSで有効または無効にでき、オペレーティングシステムとは独立して実行されます。C1Eには、アイドルとロードの2つの構成があります。CPU使用率が比較的低い場合、この機能はプロセッサの乗数を最低設定(通常6倍)に下げ、vCoreをわずかに下げます。CPUを集中的に使用するアプリケーションでは、乗算器を最大値まで上げ、vCoreを少しブーストして補正します。この例では、C1EはプロセッサをFSBの6倍または9倍で実行します

EIST(Enhanced Intel SpeedStep Technology):これは非常に堅牢な機能であり、さまざまな省電力機能を備えています。より単純な従兄弟のように、EISTはCPUの電圧と乗数の両方に影響を与える可能性がありますが、EISTはさらに多くのレベルの構成を持っています。SpeedStepは、単純な「低速または高速」設定の代わりに、使用可能なすべての乗算器を利用できます。この例の場合、EISTはプロセッサーを6、7、8 、または9の乗数で実行し、 CPUの需要に基づいて使用する乗数を選択します。EISTはWindowsによって制御され、コントロールパネルに表示される可能性のあるさまざまな「電源設定」を利用します。

「ハイパフォーマンス」のためにあなたのパフォーマンス設定を調整することはおそらく、データベース・サーバに最適な設定ですが、私はかなり確信しているいずれかのEISTおよび/またはC1EはにCPUの原因の下には、彼らがいても実行する必要があるとき、負荷通常の設定に行って戻ってを持っています大幅に増加しました。私にとっての大きな警告は、「実質的な負荷とは何ですか?」overclockers.netサイトによると、彼らはEISTがCPU設定を操作する方法のためにそれらの「電源設定」設定を使用していると主張しています。ただし、負荷の割合や、CPUを通常の電圧に戻すタイミングを知るための期間は示されていません。

繰り返しになりますが、私は決してIntel CPUの主題に関する専門家ではありませんが、これら2つの設定を調整することで、必要な省電力パフォーマンスを得ることできます、「最大パフォーマンス」設定に固執すると思います再起動することなく同じくらい効果的です。


5

速い答えは次のとおりです。もちろん、節電はパフォーマンスに影響します。

長い答えは面白くない。基本的に、設定を試して、パフォーマンスをテストし、何に対応できるかを決定します。

アプリケーションとシステムは非常に複雑であるため、ここでは「はい、反応時間および他のシステム速度が影響を受けます」以外の切り詰められた答えはありません。それがハードドライブやネットワークよりもはるかに遅い場合は、よくわかります。実際にテストします。


4

私は常にできるだけ多くのサーバーをVMにしようとしていますが、サーバーを「ベアメタル」にする必要がある場合は、通常、完全に一貫したパフォーマンスが必要または必要です。だから私は、これらのビジネスクリティカルなマシンのための絶対にあなたが経験している正確な理由のために何の省電力関連の一切のスイッチをオンにしません。

*** bang-goes-my-green-credentials *


3

いくつかのこと:

  1. BIOSをチェックして、電源管理がOSの制御下にあることを確認します。ファームウェアによって管理されるように設定されている可能性があり、そのため、愚かな、最適でないプロセッサ電源管理を使用しています。

  2. 不足している可能性のある電源管理関連の修正プログラムがあるかどうかを確認します。Vista / Server 2008がリリースされた当時、かなりの数の注目すべきものがありました。

  3. Balancedの詳細な構成を確認してください。別の省電力機能がパフォーマンスの低下を引き起こしている可能性があります。理論的には、EISTからのパフォーマンスへの影響は無視できるはずですが、SQLデータベースは独自のフットプリントを持ち、プロセッサの電源管理によって不均衡に影響を受ける可能性があります。


1
ああ、私は...パーティーに遅刻
Bigbio2002

2

Microsoftからの情報(Word Doc形式、残念ながら)

Windows Server 2008 R2によるエネルギー効率の改善と電力消費の管理

Windows Server 2008は、その前身であるWindows Server 2003よりも全体的にエネルギー効率が高くなっています。デフォルトでは、Windows Server 2008は「バランスの取れた」省電力プランを実行します。つまり、Windows Server 2008は、Windows Server 2003のベースラインインストールよりも消費電力が少ないことを意味します。「バランス」モードは、すぐに使用できる(OOB)電力効率を最大化するため、デフォルトの「バランス」設定を選択したままにすることを強くお勧めしますほとんどの場合。

Windows Server 2008には、「省電力」と「高パフォーマンス」という2つの追加のデフォルトモードが含まれています。これらは異なる電力およびパフォーマンスの目標を持ち、状況によっては適切な場合があります。「高パフォーマンス」モードは、非常に高い使用率で実行され、電力コストに関係なく最大のパフォーマンスを提供する必要があるサーバーに適している場合があります。「省電力」モードは、実際に必要とされるよりも高いパフォーマンス機能を備えた、あまり使用されていないサーバーに使用できます。この状況で「パワーセーバー」を使用すると、電力が少しずつ節約される場合があります。

これらの特定のハードウェアレベルのCPU省電力機能は、もちろんどのOSでも同じであり、それらをオンにするかどうかの問題にすぎません。

CPU電力管理なしとCPU電力管理の省電力グラフ:

高い使用率レベルでは、CPU電力管理が自動的にオフになることは明らかです(そしてこのグラフが示しています)。ただし、使用率が低い場合、サーバーの全体的なパフォーマンスに影響があるかどうか(たとえば、単純なSQL Serverクエリの所要時間)については明確ではありません。


マイクロソフトが自社製品の1つについて書いたホワイトペーパーを信じるのは、ちょっとした素朴さのようです。機能の目的は正しい場合がありますが、実際の数値は異なる場合があります。
gekkz

1
信じられない?その「バランス」はデフォルトでオンになっていますか?それは事実です。信じられない場合は、Windows Server 2008 R2をインストールしてください。
ジェフアトウッド

@Jeff Atwood:彼はグラフの実際の電力節約の結果を意味していたと思う。マーケティング上の理由で最も可能性のある節電を示す方法で統計を表示することは、彼らの関心事かもしれません。たとえば、最大ワット数の割合は少し奇妙に思えますが、実際のワット数を節約するだけではどうでしょうか?ただし、免責事項として、彼らがそのメトリックを選択した非常に正当な理由があります(それが正しい言葉である場合)。
カイルブラント

CPU電力管理を有効にすることによる電力の節約(グラフごとに控えめな10%)は議論の余地がありません。自宅のPCでは、ドライブ、メモリ、RAIDコントローラーなどが少ないために電力を消費する傾向があるため、実際には高くなっています。
ジェフアトウッド

@KyleBrandt-調査結果をより一般的にするために最大ワット数のパーセントが使用されたと思われます。この方法で、調査結果をマシンに適用します(ペーパーのXXXワットサーバーと比較して、フルボアで400ワットを消費します)。
EricB

0

Windowsの設定やIntelプロセッサに搭載されているBios Speedstepの使用に決して頼るべきではありません。AMDに相当するものもあります。これらは問題を引き起こす可能性があり、CPUリソースの使用量が一定であっても、Speedstepを使用するとCPUクロックが不規則に上下にバウンドし続けるような問題が発生しました。

より環境に配慮し、電力を節約したい場合は、IntelのL 54XXシリーズやL 55XXシリーズなど、モデル名の前にL文字を付けた低電力プロセッサを使用してください。

編集:この機能は常に失敗するという印象を与えてすみません、私はそれによって燃やされただけで、ミッションクリティカルなシステムではこの種のことを起こせないので、私はただ滞在しようとしますそれから離れています。


私はそれが問題を引き起こすとは思わないか、ほとんどすべての最新のOSとCPUでデフォルトでオンにならないでしょう。おそらく数年前に、CPUの省電力技術のはるかに古いバリエーションを考えているかもしれませんか?
ジェフアトウッド

機能であるものはすべて正常に動作すると想定しているようです。私は実際に、2つの異なるサーバーでその問題が発生したデュアルE5520セットアップの実際の経験について話している。
gekkz

@gekkz誰もそれが問題を引き起こすことは不可能だと言っているとは思わないが、あなたの答えはそれが常に、またはほぼ常に問題を引き起こすことを示唆しており、それは単に真実ではない。もしそうなら、数千(数百万)のサーバーがこの問題によって今すぐ問題を抱えているでしょう。
フィーバス2009

0

サーバーのパフォーマンスについて話すとき、それを見るにはいくつかの異なる方法があります。見かけの応答時間(ネットワーク遅延に類似)とスループット(ネットワーク帯域幅に類似)があります。

Windows Serverの一部のバージョンには、デフォルトでバランス電源設定が有効になっています。ジェフが指摘したように。Windows 2008 R2もその1つです。最近ではシングルコアのCPUはほとんどないため、この説明はシングルコアVMを除き、実行するほとんどすべてのWindowsサーバーに当てはまります。(それらについては後で詳しく説明します)。

バランスのとれた電源プランがアクティブな場合、CPUは使用している電力量を抑えようとします。これを行う方法は、「パーキング」と呼ばれるプロセスでCPUコアの半分を無効にすることです。一度に使用できるのはCPUの半分のみであるため、トラフィックが少ないときに使用する電力は少なくなります。これ自体は問題ではありません。

問題は、CPUのパークが解除されると、システムで使用可能なCPUサイクルが2倍になり、システムの負荷が突然不均衡になり、(たとえば)70%の使用率から35%の使用率になることです。システムはそれを確認し、トラフィックのバーストが処理された後、「ちょっと、電力を節約するために少しダイヤルバックする必要がある」と考えます。そして、そうです。

ここが悪い部分です。CPUコア内での熱と電力の不均等な分配を防ぐために、最近駐車されていないCPUを駐車する傾向があります。そして、それが適切に機能するためには、CPUはCPUレジスタ(L1、L2およびL3キャッシュ)から他の場所(ほとんどの場合メインメモリ)にすべてをフラッシュする必要があります。

架空の例として、C1〜C8の8コアCPUがあるとします。

  • アクティブ:C1、C3、C5、C7
  • 駐車中:C2、C4、C6、C8

これが発生すると、それらはすべて一定期間アクティブになり、システムは次のようにそれらをパークします。

  • アクティブ:C2、C4、C6、C8
  • 駐車中:C1、C3、C5、C7

しかし、そうすることで、CPUパイプラインからフラッシュされたプログラムに奇妙なエラーが発生しないように、L1-L3キャッシュからすべてのデータをフラッシュすることに関連するかなりのオーバーヘッドがあります。

おそらく正式な名前がありますが、CPUスラッシングとして説明したいと思います。基本的に、プロセッサは、作業要求を処理するよりも、忙しい作業で内部的にデータを移動するのにより多くの時間を費やしています。

リクエストの待ち時間を短くする必要があるアプリケーションがある場合、バランスの取れた電力設定を無効にする必要があります。これが問題かどうかわからない場合は、次の手順を実行します。

  1. 「タスクマネージャー」を開きます
  2. 「パフォーマンス」タブをクリックします。
  3. 「リソースモニターを開く」をクリックします
  4. 「CPU」タブを選択します
  5. さまざまなCPUのウィンドウの右側を見てください。

それらのいずれかが駐車されているのを見ると、それらの半分がいつでも駐車され、すべてが発火し、残りの半分が駐車されることに気付くでしょう。それは前後に交互になります。したがって、システムCPUがスラッシングしています。

仮想マシン:ハイパーバイザーには追加のオーバーヘッドがあるため、仮想マシンを実行している場合、この問題はさらに悪化します。一般的に、VMを実行するには、ハードウェアが各タイムスライスで各コアに使用可能な時間スロットを持っている必要があります。

16コアのハードウェアがある場合、合計16を超えるコアを使用してVMを実行できますが、タイムスライスごとに最大16の仮想CPUのみがそのタイムスライスの対象となり、ハイパーバイザーはVMのすべてのコアに適合する必要がありますそのタイムスライスに。複数のタイムスライスに分散することはできません。(タイムスライスは基本的にX CPUサイクルのセットです。1000サイクルまたは10万サイクルになる場合があります)

例:8つのVMを備えた16のコアハードウェア。6つには4つの仮想CPU(4C)があり、2つには8つの仮想CPU(8C)があります。

タイムスライス1:4x4Cタイムスライス2:2x8Cタイムスライス3:2x4C + 1x8Cタイムスライス4:1x8C + 2x4C

ハイパーバイザーができないことは、タイムスライスの割り当ての半分を8 vCPU VMの最初の4つのCPUに分割し、次のタイムスライスで残りをそのVMの他の4つのvCPUに割り当てます。タイムスライス内ですべてまたはゼロです。

MicrosoftのHyper-Vを使用している場合、ホストOSで電源制御設定を有効にできます。つまり、クライアントシステムに伝播し、クライアントシステムにも影響を与えます。

これがどのように機能するかを確認すると、バランスの取れた電源制御設定を使用するとパフォーマンスの問題が発生し、サーバーが遅くなることが簡単にわかります。根本的な問題の1つは、サーバーがデータベースクエリ、Webサーバーリクエスト、その他のいずれであっても、サーバーが着信リクエストに応答できるようになる前に、着信リクエストがCPU駐車/駐車解除プロセスの完了を待つ必要があることです。

時々、システムはリクエストの途中でCPUをパークまたはパーク解除します。これらの場合、要求はCPUパイプラインに開始され、そこからダンプされてから、別のCPUコアがそこからプロセスを取得します。大量のリクエストである場合、これはリクエストの過程で何度か発生し、5秒のデータベースクエリを15秒のデータベースクエリに変更する必要があります。

Balanced Powerを使用することで見られる最大のことは、システムが行うすべての要求への応答が遅く感じることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.