この記事は、インテル® ソフトウェア・ネットワークに掲載されている「Virtual World Server Power Savings by Dynamic Physics Tuning」(http://software.intel.com/en-us/articles/virtual-world-server-power-savings-by-dynamic-physics-tuning/) の日本語参考訳です。
はじめに
仮想世界のさまざまな機能をサポートするためサーバー・データセンターが増大するにつれ、サーバーの消費電力コストが懸念事項の 1 つになります。
ほとんどのサーバー・アプリケーションは、接続ユーザーがいない場合はアイドル状態になります。しかし、リアルタイムで継続して現実的な世界を提供するためには、接続ユーザーがいなくても仮想世界シミュレーションを続行する必要があります。
仮想世界の継続処理は、通常のパワーマネージメントのアイドル状態が存在しない新しい作業パターンを生み出しました。これに伴い、「仮想世界シミュレーターで消費電力を抑えるためには、どのような設計または実装の変更が必要か?」という 1 つの課題が持ち上がりました。
ここでは、消費電力を抑える方法として、物理特性の実行頻度を下げてアイドル時間を作り出すという 1 つの可能性について考えてみましょう。頻度を下げると物理シミュレーションで問題が発生する可能性があるため、シミュレーションの正当性とプラットフォームの消費電力との間のトレードオフについても考えてみます。
物理特性のチューニング
OpenSimulator (http://opensimulator.org) は、汎用仮想世界シミュレーターを構築するためのオープンソース・プロジェクトです。インテル・ラボでは、マルチユーザー仮想世界システムにおけるサーバーの設計要件を理解するためのテストケースとして OpenSimulator を使用しています。
パート 2 では、OpenSimulator の耐久テストを行い、その結果からサーバーの設計において考慮するべき点が分かりました。パート 3 では、サーバー全体の消費電力を抑えるよう仮想世界サーバーをチューニングしていきます。
仮想世界サーバーの主要コンポーネントの 1 つに物理エンジンがあります。物理エンジンは、仮想世界のすべてのオブジェクトの位置と相互作用を評価し、仮想世界内の衝突、重力効果、その他の物理特性を計算します。
クライアントが接続されていないときにスロットリングや物理計算を「チューンダウン」する方法があれば、全体の計算量を減らすことができます。ただし、物理計算を減らすことで仮想世界の物理相互作用の精度に影響する可能性があります。
ODE (Open Dynamics Engine) は、オープンソースの物理エンジンで、デフォルトの物理エンジンとして OpenSimulator に統合されています。OpenSimulator は ODE を定期的に起動して、時間 (間隔やフレーム) のシミュレーションを行います。
例えば、ODE が 1 秒間に 10 回 呼び出される場合、各呼び出しは実際の時間の 1/10 秒をシミュレーションします。1 秒間に 5 回呼び出される場合は 1/5 秒のシミュレーションを行う必要があります。
呼び出し回数を減らすことでアイドル時間が増えますが (呼び出しと次の呼び出しとの間隔が長くなりますが)、仮想世界における物理処理とイベント間の相互作用の機会が減ります。つまり、物理シミュレーションの間隔を短くすると精度が上がり、長くすると計算量を抑えられます。
物理計算の正当性
物理エンジンの計算の正当性をチェックする方法はいくつかあります。ほとんどの物理エンジンにはテストスイートがあり、物理シミュレーションの特定の処理部分を検証できます。長期的な物理相互作用を捉えるために、ここではゴルトンボード (図 1) を使って分析します。
ボードの上部から落とされたボールは 2 項分布し、徐々に広がりながら下に落ちます。ボールがボードを通り抜けるときの重力の相互作用と衝突から、物理エンジンの全般的な処理を分析することができます。
物理的なゴルトンボードでは、規則的に並べられたピンの上部からボールを落とすと、 ボールはピンにぶつかりながらその間を通り抜けて、ボードの下部にある箱にたまります (図 2 を参照)。
ボールは両端よりも、中央の箱に多くたまります。同じサイズのボールを使った典型的なゴルトンボードの分析では、底に出てくるボールは正規分布に近い 2 項分布に従います。
完全な現実反映度の高い (ハイファイ) 物理シミュレーションでは、このような理想的な分布が期待されます。フレームレートなどの物理引数の変更は、重力計算や衝突のエラーを引き起こし、ゴルトンボードから出るボールの分布において摂動となって現れます。理想的な分布との相違は、物理エンジンやその処理上の設定によって生じます。
ボールを落とす
省電力のメリットとシミュレーションの正当性のバランスをとるため、ここではインテル® Xeon® E5540 プロセッサーを 2 つ搭載した Windows Server* 2008 システムで、100 レベルからなるゴルトンボードを使用し、さまざまな物理フレームレート (pFPS) でボールの分布と実行ごとの消費電力を測定しました。図 3 は、100 レベルからなるゴルトンボードに 1 万個のボールを落とした結果です。
図 3 の分布は、理想的な分布 (点線) と箱にたまったボールの個数 (実線) を表しています。pFPS が高い場合、測定された分布は理想的な分布とほぼ同じになり、ゴルトンボードのシミュレーションが正しく行われていることが分かります。
pFPS を下げると (シミュレーション時間とシミュレーション間隔を長くすると)、測定された分布と理想的な分布に違いが出てきます。33 pFPS では (図 3b)、ゴルトンボードのシミュレーションはかなり正確です。しかし、22 FPS になるとシミュレーションに問題が生じ、その影響が分布にも見られます。
プラットフォームの消費電力を抑える
商用電源を使ってアイドル中と、ゴルトンボードでさまざまなシミュレーションを実行中のシステム全体の消費電力を測定し、 特定の 1 万個のボールを実行中に測定されたワット数からアイドル中のプラットフォームのワット数を引いて計算したところ、物理計算に費やされたワット数は表 1 のようになりました。
物理フレームレート (pFPS) | アイドル状態を超えるワット数 |
55 | 11.5 |
33 | 7.5 |
22 | 3.5 |
表 1: プラットフォームにおいて異なる pFPS でゴルトンボードのシミュレーションに費やされたワット数
表 1 から、pFPS が下がるとともに、それぞれの pFPS で実行に必要なワット数も下がることが分かります。この結果から、ゴルトンボードのシミュレーションでは、33 pFPS で正当性と省電力の両方を達成できることが明らかです。
このテストを通して、pFPS を高くすると精度と相互作用の正当性が得られ、低くすると消費電力を抑えられることが実証されました。
まとめ
ここでは、クライアントが仮想世界に接続されている場合にはフルスピードで物理シミュレーションを行い、接続されていない場合にはシミュレーション頻度を下げることで、物理処理にかかるプラットフォームの消費電力を抑える方法について説明しました。
この他にも、クライアントが接続されていない場合にシミュレーション頻度を下げる方法は多数あります。例えば、検出対象がない場合にはセンサーのテスト回数を減らしたり、領域にクライアントがいない場合は AI ロボットの応答性を下げたりすることができます。
データセンターの消費電力を抑えることは、仮想世界シミュレーターの設計者にとって重要な設計要件ではないかもしれませんが、データセンターとそのコストが大きくなるにつれて重要になります。クライアントが接続されていない場合に処理の頻度を減らす一般的な手法は、仮想世界サーバーを実行するデータセンター全体の省電力につながるでしょう。
関連記事
著者紹介
Robert Adams はインテル・ラボのエンジニアで、Virtual World Infrastructure (仮想世界インフラストラクチャー) チームの一員としてスケーラブルな仮想環境を実現するためのシステム・アーキテクチャーについて取り組んでいます。
インテル® ソフトウェア製品のパフォーマンス/最適化に関する詳細は、最適化に関する注意事項 (英語) を参照してください。