2016年3月31日

基盤技術

サーバの電力消費傾向とピークカットの取り組み

  • このエントリーをはてなブックマークに追加

サイトオペレーション本部の杉本(@keyaki)です。
サーバの導入検証や、インフラ関連ツールの開発・運用を担当しています。

今回は、データセンターの電力問題に対する取り組みをご紹介します。

ラックの不足と電力容量

ヤフーでは、増加し続けるデータの処理と格納のために、毎月多くのサーバを購入しており、設置場所が慢性的に不足している状態となっています。プレハブデータセンターの発想で建てられた白河データセンター3号棟など、ヤフーのスピード感に対応した新規のデータセンターの建設も行っていますが、既設のデータセンターについても有効利用を図っていく必要があります。

既設のデータセンターを活用する場合でも、新規のデータセンターを建設する場合でも、1ラックあたりの搭載台数をできるだけ多くし、ラックを効率的に使うことができれば、次のデータセンターの建設を先延ばしにして、コストを抑制できます。

その場合に問題になってくるのが電力設備の容量です。各ラックへ搭載するサーバ台数は、ラックの物理的な搭載可能台数と、電力設備の容量のいずれか小さい方で決まります。ヤフーでは仮想化の進展などにより集約度が向上し、後者がネックとなる場合が多くなっています。

電力設備の容量とサーバの消費電力に基づいて搭載台数を決定する場合には、ピーク時の消費電力をもとに決定しなくてはなりません。容量をオーバーしてしまうとブレーカーが動作し全断が発生してしまいます。そのため、ピークを平準化できると、ラックをより効率的に使うことができます。

消費電力の変動

ピークの平準化によりラック効率の向上、コスト削減が見込めますが、実際のピークはどのような形で発生しているのでしょうか。ヤフーの状況を調査しました。

従来環境の電流値グラフ

上記は物理サーバを設置している従来環境の電流値グラフ(1時間分)です。こちらの環境では、大きなピークは見られません。実際、この構成が主流の時代にはわれわれもピークを運用上大きく意識することはありませんでした。

プラベーとクラウド環境の電流値グラフ

一方、上記はプライベートクラウド(OpenStack)環境の電流値グラフです。こちらの環境では、5分おきにスパイクが発生していることがわかります。また、このグラフを見てから先ほどの従来環境のグラフを再確認すると、実は同様のスパイクが小さいながらも発生していたことが分かります。

5分おき、ということですでに原因がお分かりの方もおられるかと思います。実際に調査したところ、これらはcronをトリガに処理を実行する定常的なバッチや、監視プロセスによるものでした。仮想化により集約度があがったことで、潜在的に存在した問題が表面化したわけです。

この傾向はワークロードによって異なりますので、あくまでヤフーのプライベートクラウド環境での傾向ではありますが、ファシリティとソフトウエアの両方を調査することで発見できる興味深い事象だと思います。

電力スパイクへの対応

ピークの発生傾向が分かったところで、どうやって平準化を進めるかを考えます。

今回の場合、サーバ上で動作しているのはヤフーのサービスですので、アプリケーションの改修でも対応を行うことができます。簡単な例として、1分未満で動作が終了する5分おきの処理であれば、crontabに下記のようにsleep文を足すだけで実行時間を分散させられます。

*/5 * * * * sleep `expr $$ % 240` && /opt/bin/something

上記のようなアプリケーション的な対処が可能な場合は、あまり手間をかけずに対応できます。実際にヤフーでも全社共通パッケージを対象に同様の対応を実施しました。

一方で、アプリケーション的に処理の実行タイミングをずらせない場合や、サーバ上で他社のアプリケーションが動作している場合は、こういった対処はできません。その場合、サーバ筐体や電力設備側で工夫を行うことになります。

サーバ筐体で対処する場合、PDU(電源タップ)などからラックの消費電力を取得し、閾値を超えた場合にはIPMIなどを経由してサーバのパワーキャッピング(消費電力の上限設定)を行うことが考えられます。キャッピングによりCPUの性能などが一時的に犠牲になりますが、それが許容できる場合には選択肢の一つとなります。

また、バッテリーを使ったピークカット(ピークシェイブ)技術が登場しています。消費電力が少ないときにバッテリーに充電しておき、増えた場合にはバッテリーからも電力供給を行い、ピーク時の消費電力を低減します。

ヤフーでも下記のようなピークカットが可能なUPSを利用した実証実験を行い、ラックへのサーバ搭載台数を従来より増やせることを確認しました。今後順次、実際の環境へも投入していく予定です。また、プレハブデータセンターで採用したサーバ搭載型のバッテリーでも同様のことが実現できないか、検証を進めています。

ピークカット システム構成

今後の展望

今回は電力設備からの情報を元に、サーバで稼動しているアプリケーションの挙動を確認し、対応策を検討しました。このような取り組みを発展させ、アプリケーションから電力設備まで、すべてのデータを統合して分析することにより、従来のDCIMを超えた、さらなるデータセンターの最適化を行えると考えています。

ヤフーのアプリケーション・サーバ・ネットワーク・データセンターの情報は、配備済みのさまざまなセンサや、監視システムから取得することが可能な状態になっています。しかし、現時点では蓄積されていないものもありますし、別々のシステムで管理されていて統合できていないものもあり、十分に活用し切れているとはいえません。今後、データの収集体制を整えて、ヤフーの保有するデータ分析基盤で解析を行うことで、運用のさらなる改善を目指します。

ヤフーではファシリティからアプリケーションまで自社で保有していますので、どのレイヤでも課題解決に挑戦する機会があります。フルスタックエンジニアを目指す皆様はぜひ私たちと一緒に働きましょう。

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加