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


6月 27, 2016

オフロード対オンロード:CPU使用率の場合

HPCwire Japan

スポンサー記事

Gilad Shainer, Mellanox

ネットワーキングの分野における最近の主要なトピックの一つは、「ネットワーク機能をCPUにオンロードするのが良いのか、それとも相互接続ハードウェアにそれらをオフロードした方が良いのか?」というテーマです。

相互接続技術をCPUにオンロードするのは比較的簡単ですが、CPU使用率が問題になります。 何故ならCPUがネットワークを管理し、ネットワーク操作を実行する必要があるからです。その為本来アプリケーションの為に存在するCPUがその分使用できなくなります。

一方で、オフロードはネットワーク機能のみならずクラスタ内を移動するデータに対する集合的操作やデータ集約的演算などの複雑な通信動作を実行することによって、CPUの性能ボトルネックを克服することを目的とします。 最近はデータが分散化され、パフォーマンスのボトルネックはデータがCPUに到達するのを待つことにより発生します。そこで、CPUから機能をオフロードしたインテリジェント・ネットワークデバイスを利用する事により、データがネットワーク内のどこに位置していても、そのデータへの操作を行う事ができるようになります。これにより、CPUの計算機能の利用可能性を高め、ひいてはシステム全体の効率が向上する、という利点が得られます。

CPU使用率の問題は、次の二つの選択が問題になります。 どのようにCPU使用率を測定し、どんなベンチマークを行うかです。選択のしかたによりいくらでも結果を左右させることができるのです。

例えば、CPU使用率を決定するに当たってよくある間違いは、一般的なレイテンシー試験やメッセージ率のテストを行うことです。これらのテストは、通常CPUが常にデータを検索する必要があります。つまりメモリ上のデータへのポーリングを行います。実際にCPUがまったく機能していない時でも、100%CPUが動いているかの様に見えてしまうのです。このようなテストでは誤ったCPU使用率を導き出します。現実の世界では、CPUが絶え間なくデータの有無をチェックしている訳ではありません。

さて、CPU使用率を測定する適切な方法とは何でしょう? 理想的には、データ帯域幅テストあるいはデータポーリングを使用していない送受信テストを実施してCPU使用率を測定する必要があります。もしメッセージ率の試験を行うのであれば、現実的な結果を得るためには、テストではデータポーリングのループを回避するように構成されなければなりません。 最終的には、最良のオプションはテスト中に実際にそのために実行されたCPUの命令数を求めることです。 これにより、CPU使用率の正確な割合が得られます。

もう一つ考慮すべき重要な要素は、測定しようとしているオーバーヘッドのタイプです。例えば、もしそのテストがネットワークプロトコルのCPU使用率への影響を測定したいのであれば、テストは二つのサーバ間でのデータ転送のみに関して行い、ソフトウェアレイヤーに属するMPIなどの追加オーバヘッドは除外すべきでしょう。テストの目的が、MPIのようなソフトウェアのフレームワークのオーバーヘッドを測定するのであれば、MPIを使ったテストを実施する必要があります。しかしその場合には、適切なオフロードを行う適切なMPIを使用しなければなりません。 必ずしも全てのMPIの実装がハードウェアベースのオフロードをサポートしている訳ではありません。テスト条件に十分に注意することが重要です。

さてこれで、CPU使用率を正確に測定する方法が明確になりました。問題はオフロードとオンロードではどちらが優れているかです。私たちは、EDRのInfiniBandとOmni-Pathの環境でそれぞれサーバー間のデータ・スループット・テストを複数回実施しました。

テストは、CPU使用率(表1)を測定しながら、それぞれの相互接続によりサポートされている最大のデータ転送速度(〜100Gb / s)で、データの送受信を行うという方法を取りました。100Gb / sのデータ速度で、InfiniBandは0.8%のCPU使用率を示すのみであるのに対して、Omni-Pathは同じ処理のために59%のCPU使用率を必要としました。アプリケーションに対するCPUの可用性は、InfiniBandの場合には99.2%になりますが、Omni-Pathの場合は40.4%に留まります。さらに、それぞれの場合についてCPUの周波数を測定しました。 CPUはフルスピードで実行する必要がない場合、電力を節約するためにその動作周波数を落とすことができます。InfiniBandの場合は、省電力化を可能にするためにCPUの周波数を公称周波数の59%に低下させることができました。 一方Omni-Pathの場合は、CPUがフルスピードで走行していたので省電力化を行うことができませんでした。

20160618-F1 Screen-Shot-2016-06-15-at-3.25.41-PM

表1 – CPU使用率の比較

CPUの統計情報を求めるために、Intel Performance Counter Monitor Toolsetを使用しました。詳細なシステム統計情報を提供してくれます。 このツールを利用して、我々はOmni-Pathが100Gの速度に達していなかったことを発見しました。実際には、95Gb / sに、少し及びませんでした。 AFREQの統計情報は、テスト中に動的に設定されたCPU周波数の情報を示しています。さらに、二つの異なる相互接続プロトコルにおいて、使用された命令数とアクティブサイクル数を見ることができました。(表2)

20160618-F1 Screen-Shot-2016-06-15-at-3.26.03-PM

表2 – Intel Performance Counter Monitor ツールセットの統計情報

InfiniBandが「コ-デザイン」アーキテクチャに従ったインテリジェントデバイスに実装されている場合は、さらにMPI操作をオフローディングすることで、CPUのオーバーヘッドも減らすことができます。 もちろん、これらを測定するためのベンチマークテストでは、実世界に関する正確な計算結果を生み出すソフトウェア層が含まれている必要があります。 私たちは、InfiniBandの顕著な優位性を実証するために、様々なアプリケーションレベルでのさらなるテストを実施する予定です。

詰まるところ、InfiniBandはCPUのオーバーヘッドを具体的に低減するために、オフロードを実装しているのです。そしてこれらのテストが明らかにしたように、InfiniBandは設計通りに正確に機能しているのです。もし誰かが違う結果を示すような事があれば、どのようにしてその結果が達成されたか、テストを実施した状況を調査する必要があります。 多分それは誤解を招く恐れのある結果に基づいたものであり、正確に実世界の状況を反映していない類いのものなのです。