web-dev-qa-db-ja.com

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

ピーク時以外の時間に(ライブ)データベースサーバーで簡単なハンドベンチマークを行っていましたが、クエリがベンチマーク結果にやや不規則な結果を返すことに気付きました

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

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

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

私は完全にダウンクロックが電力を節約することを期待していますが、その負荷レベルは私には十分に高く、フルクロック速度まで起動するはずです。

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

CPUは通常、ほとんどのサーバーで#1または#2の電力を消費するため、負荷の軽いサーバーでの電源管理はWin-Winであり、パフォーマンスの低下はなく、大幅な省電力であると考えていたと思います。 そうではありませんがそうです。 CPUの電源管理を有効にすると、ある程度のパフォーマンスを放棄します。ただし、サーバーに常に大きな負荷がかかって電源管理が効果的にオフになっていない場合は除きます。この結果には驚きました。

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

44
Jeff Atwood

サーバーについてはよくわかりませんが、組み込みデバイスの現在の考え方では、省電力とフラットアウトの間のステップに煩わされることはありません。余分な時間がかかると電力の節約になるので、基本的に、電力がなくなるまで低電力で動作します。彼らが仕事を終えて低電力でアイドリングに戻ることができるように、彼らはその時点で彼らは最高速に反転する実際のCPU負荷の量。

16
pjz

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

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

11
Dave Drager

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

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

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

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

8
Kyle Brandt

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(拡張停止状態):C1Eは、2つのコンポーネントの中でより単純です。 BIOSで有効または無効にでき、オペレーティングシステムとは関係なく実行されます。 C1Eには、アイドルとロードの2つの構成があります。 CPU使用率が比較的低い場合、この機能はプロセッサーの乗数を最低設定(通常は6倍)に下げ、vCoreをわずかに下げます。 CPUを集中的に使用するアプリケーションでは、乗数が最大値に引き上げられ、vCoreが少しブーストされて補正されます。この例では、C1EはプロセッサをFSBの6倍または9倍で実行にします。

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

パフォーマンス設定を「高パフォーマンス」に調整することは、おそらくデータベースサーバーに最適な設定ですが、EISTやC1Eが原因でCPUがアンダーで実行されたとはいえ、負荷が大幅に増加すると、 should は通常の設定に戻ります。私にとって大きな注意点は、「相当な負荷とは何か」ということです。 overclockers.netサイトによると、EISTはCPU設定の操作方法にこれらの「電源設定」設定を使用すると主張しています。ただし、負荷のパーセンテージや、CPUを通常の電圧に戻すタイミングを知るための時間はわかりません。

繰り返しますが、私はIntel CPUの主題についての専門家ではありませんが、これら2つの設定を調整することで、可能性が高まる必要な省電力が得られます /パフォーマンス /を取得する必要がありますが、「最大パフォーマンス」の設定をそのまま使用しても、再起動する必要はありません。

8
osij2is

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

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

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

5
Michael Graff

私は常にVMできるだけ多くのサーバーを試そうとしていますが、サーバーを「ベアメタル」にする必要がある場合は、通常、完全に一貫したパフォーマンスが必要または必要なためです。したがって、これらのビジネスクリティカルなマシンではI [〜#〜] never [〜#〜]発生している正確な理由により、省電力に関連するものはすべてオンにします。

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

4
Chopper3

いくつかのこと:

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

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

  3. バランスの詳細な構成を確認します。別の省電力機能が原因でパフォーマンスが低下している可能性があります。理論的には、EISTのパフォーマンスへの影響は無視できるはずですが、SQLデータベースには独自のフットプリントがあり、プロセッサの電源管理の影響が過度に大きくなると考えられます。

3
Bigbio2002

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クエリの所要時間。

2
Jeff Atwood

Windowsの設定やIntelプロセッサーに搭載されているBios Speedstepを使用することは絶対に避けてください。また、AMDに相当するものもあります。これらは問題の原因となる可能性があり、Speedstepを使用すると、CPUリソースの使用率が一貫していても、CPUクロックが不規則に上下し続ける問題が発生しました。

環境に配慮し、電力を節約したい場合は、モデル名の前にL文字を指定した低電力プロセッサを使用します(例:[〜#〜] l [〜#〜] 54XX series and- [〜#〜] l [〜#〜] Intelの55XXシリーズ。

編集:私はこの機能が常に失敗するという印象を与えた場合は申し訳ありません、私はそれによって燃やされました、そしてミッションクリティカルなシステムでは私はこのようなことを起こすことができないので、私はとどまるようにしていますそれから離れて。

0
gekkz

サーバーのパフォーマンスについて話している場合、いくつかの異なる見方があります。見かけ上の応答時間(ネットワーク遅延と同様)とスループット(ネットワーク帯域幅と同様)があります。

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

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

何IS問題は、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

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

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

リクエストに低レイテンシが必要なアプリケーションがある場合は、バランスパワー設定を無効にする必要があります。これが問題かどうかわからない場合は、次の操作を行います。

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

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

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

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

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

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

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

MicrosoftのHyper-Vを使用している場合は、ホストOSで電源制御設定を有効にすることができます。つまり、電源制御設定がクライアントシステムに伝達され、それらにも影響します。

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

場合によっては、システムがリクエストの途中でCPUをパークまたはアンパークします。これらの場合、要求はCPUパイプラインに開始され、そこからダンプされ、別のCPUコアがそこからプロセスを取得します。要求が多すぎる場合、これは要求の過程全体で数回発生し、5秒のデータベースクエリを15秒のデータベースクエリに変更します。

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

0
Mike Taber