世界のスーパーコンピュータとそれを動かす人々


12月 4, 2013

HPCにおけるノード共有は公正な価格設定が鍵

HPCwire Japan

Alex Breslow, University of California San Diego

HPCシステムにおいてはほとんどジョブは計算ノードを共有しない。各ユーザは自分のジョブの実行に必要な物理ノード数を要求し、そして隔離された中で実行する。

これがマルチコア時代以前であれば、分散アプリケーションにとってベストな選択であるが、今日の計算ノードのように数千コアある時代にとっては同じ必要がない。その代わりに、複数の並列コードが計算ノード上のコアを共有するような分散アプリケーションのコロケーションは、マシンの性能と電力効率の最適化のためには実用的な選択だ。

1024プロセスのMPIジョブのペアを2048コア上に渡って共存させる以前の研究では、ほとんどのアプリケーションで実行時間が減少し、それゆえにシステム・スループットとエネルギー効率が10から20%向上した。

2013113-F1-2

図1:2ノードジョブを隔離した状態と共有させた場合の例:隔離状態(左)から共存状態(右)、各ソケットはアプリケーション間で分割され、システム性能とエネルギー効率が改善している。

しかし、すべてのアプリケーションが分散コロケーションからメリットを得る訳ではない。:著しい数の場合には共有しているプロセスとの競合により遅くなる。この低速化は共有しているアプリケーションの性能増加で一般的にほとんど相殺され、そのためスループットは向上している一方、これは価格設定において不公平をもたらしている。この不公平性はアプリケーションの実行時間に比例してユーザに課金するという典型的なHPCの課金ポリシーから起きている。図2に価格設定の不公平の例を示す。このプロットはGTCコードを実行するユーザがx軸の各アプリケーションと共存した場合に支払う料金を示している。現在の料金モデルにおいては、AMGと比べてMILCと共存した場合、ユーザは60%以上も払うこととなる。

20131113-F1-3

図2:現在の価格体系(SOP)ではジョブを共有するユーザにとって、ジョブが低速化する際に過大な課金が発生する。

現在の価格スキームにおいては、ジョブ実行時間の増加により有用性が低下することによりユーザは苦しまされるだけでなく、さらに追加料金に遭遇することとなる。SC13においてベスト・ペーパーの候補となっている我々の研究はこの問題はターゲットとし、競合を考慮した公正な価格設定を紹介している。この価格設定においては、ジョブが低速化するにつれてユーザは次第に少なく支払うこことなる。

しかし、このようなポリシーを採用するのは難しい。それは個々のアプリケーションが、共有することによる低速化を正確に定量化するメカニズムが必要だからだ。以前の研究がこの低速化を決定するオフラインのプロファイリング技術を使用する一方、実際の運用においては実践的ではない。オンラインのアプリケーションはオフラインの特性から著しく変わるからだ。[3-6] その代わりにこのような競合を検知するダイナミックで軽量なランタイム・システムまたはOSサービスが必要だ。

これらの目的を達成するために、Persistent Online Precise Pricing Agent (POPPA)と呼ばれる低オーバーヘッドのデーモンを開発した。POPPAは細粒度精度価格シャッター、1%未満のオーバーヘッドで平均絶対予測エラー4%で、アプリケーション間の競合を計測する能力のある新しいメカニズムだ。このシャッター・メカニズムは、共有実行者からの共同が存在する状態と事実上いない状態との間の各アプリケーションの実行環境を交替させることにより機能する。POPPAは周期的にラウンドロビンに1個のアプリケーション以外のアプリケーションを一時停止させ、共有状態に対して1個だけの実行時における性能のスパイクを計測している。

20131113-F1-4

図3:POPPAはアプリケーションの実行を隔離状態と共有状態間で交替させる。PおよびSは調整可能なパラメータ

上図は実行常体のメカニズムを示している。第一フェーズにおいては、POPPAデーモンは休止状態で両アプリケーションのスレッドが実行している。次に、各アプリケーションのサイクル毎の命令数(IPC)がハードウェア性能監視ユニットを用いて計測される。次にジョブBがスリープされ、ジョブAのIPCが計測される。さらにジョブBが起こされ、両アプリケーションのIPCが計測される。このプロセスがジョブAとジョブBをスイッチして繰り返される。

POPPAデーモンはマシンまたはアプリケーション特有のトレードオフに対応するように完全にパラメータ化されている。特にシャッターイベントの間隔、シャッター時間の長さ、同様にシャッター前後の計測の長さを設定することができる。各シャッターは1つ以外の全てのアプリケーションをスリープさせるため、スリープしているアプリケーションは進行することができず、そのためシャッターの間に性能を失い、結果的に実行時のオーバーヘッドとなる。シャッター時間とシャッター間隔の比率を制御することにより、このオーバーヘッドは受け入れ可能な値まで調整可能だ。我々の研究では、シャッター間隔を200ms、シャッター時間を3.2msに設定すれば平均オーバーヘッドを1%以内に保ちながら高精度の予測が可能だ。

このメカニズムでPOPPAが平均絶対エラー4%が高精度であることを維持している。このシステムは低速化予測の決定を単一の計測に依存しておらず、各共有アプリケーションの実行を通して一様に間隔を空けて計測された数百、数千の細粒度計測による解析がベースとなっているため、低い予測エラーとなっている。結論として、POPPAは非常に正確な予測を行うことができる、アプリケーションにおけるフェーズレベルの挙動を検知する。

これらの予測に基づき、我々は公正な価格設定戦略を導入し、共有状態の干渉による予測低速化に関連するディスカウントをユーザに行っている。我々の哲学では、ユーザのアプリケーションが20%低速化する場合には、最もシンプルで最も直観的な価格ポリシーは20%ディスカウントすることだ。このポリシーによって、ユーザはどのように課金され、ジョブ実行に掛かった追加の時間を直接補償する割引料金をいかに受け取れるか、簡単に理解できる。この補償が割引としてリソースのアロケーションをさらに進化させ、ユーザのコロケーションの受け入れを奨励する。

正確で公正な価格設定は、将来の機敏なソフトウェアシステムの設計の鍵であり、マルチ、メニーコアノードの来るべきクラスをつかいこなす新しい方法への扉を開けるものだ。