Amazon Web Services ブログ

AWS Nitro Systemに於けるベアメタルインスタンスの性能

この記事は、2021 年 8 月 5 日に Matt Koop によって投稿された
Bare metal performance with the AWS Nitro System をソリューションアーキテクトの小野が翻訳したものです。

ハイ・パフォーマンス・コンピューティング(HPC)は、アプリケーションの中でも特定プラットフォーム上で最も高いパフォーマンスを要する領域として知られています。当然の疑問として、ワークロードをAWS上に移行した場合のパフォーマンスと、既存のオンプレミスの「ベアメタル」プラットフォームでのパフォーマンスの差はどれくらいなのか、というものがあります。このブログ記事では「ベアメタル」インスタンスとAWSのNitro Hypervisorで動くインスタンスのパフォーマンスの差が、HPCワークロードに於いても僅かである事を紹介します。

AWS Nitro System

AWS Nitro Systemは、専用のハードウェアとパフォーマンスとセキュリティの為に作られたソフトウェアの組み合わせです。HPCワークロードで人気のあるc5、c5n、m5zn、c6gnやその他の最新の世代のインスタンスファミリーはNitro Systemを基盤としています。図1にあるようにAWS Nitro SystemはNitro Card、Nitro Security Chip、そしてNitro Hypervisorの3つの主要なコンポートネントで構成されています。Nitro Cardは、VPCデータプレーンへのネットワークアクセス、Amazon Elastic Block Store (Amazon EBS) へのアクセス、インスタンス・ストレージ (ローカルのNVMe) へのコントローラを提供し、ホストと協調します。負荷をNitro Cardへオフロードする事によってホスト側のプロセッサのリソースを消費する事を防ぎ、セキュリティにおける利点も生れます。Nitro Security Chipは信頼の起点(root of trust)となるハードウェアとセキュア・ブート機能、他の機能と協調したシステムのセキュリティを提供しています。Nitro Hypervisorは軽量なハイパーバイザーで、メモリとCPUの割り当て管理を行なっています。

このデザインでは、最早ホストシステムはAWSのリソースに直接アクセスはしていません。Nitro Cardだけが他のリソースにアクセスでき、これらのカードによって提供されるソフトウェア的に定義されたハードウェア・デバイスのみが、ホスト・デバイスからのアクセス・ポイントになっています。Nitro Cardで処理されるI/Oアクセスにより、最後のコンポーネントであるNitro Hypervisorを軽量化し、ホスト上で実行されているワークロードへの影響を最小限に抑えることができます。 Nitro Hypervisorには必要な機能のみ実装し、静止状態であることを設計目標としています。つまり、要求したインスタンスに対して作業を行わない限り、動作すべきではありません。これは、バックグラウンドタスクが必要でないときにリソースを消費するタスクがないという事です。

The AWS Nitro System Building Block

図1. AWS Nitro Systemのビルディングブロック

AWSはNitro Systemのアーキテクチャによってホストに直接アクセスする「ベアメタル」インスタンスも提供しています。2017年に最初に紹介されて以来、多くのインスタンス・ファミリーで、ハイパーバイザーなしで直接ホストのハードウェアにアクセスする「*.metal」インスタンスを提供しています。Nitro Hypervisorが使われている場合のように、これらの「ベアメタル」インスタンスでもまたNitro Cardが、ホストの外にあるリソースへの唯一のアクセス・ポイントになっています。これらのインスタンスの多くは、ライセンスの制約により仮想環境で実行する事のできないワークロードや、直接アクセスのみで利用可能な特殊なハードウェア機能が必要な場合に利用されています。

「ベアメタル」インスタンスとNitro仮想化インスタンスの両方を利用する事で、HPCアプリケーションのパフォーマンスが両者で差があるのか確認する事ができます。

性能比較: Nitro Hypervisor vs. Bare Metal

Amazon EC2 User GuideのNitro Hypervisorの説明をしている部分に以下の記述があります。「A lightweight hypervisor that manages memory and CPU allocation and delivers performance that is indistinguishable from bare metal for most workloads (メモリと CPU の割り当てを管理し、ほとんどのワークロードのベアメタルと見分けがつかないようなパフォーマンスを提供する軽量ハイパーバイザー)」。HPCアプリケーションが持つ、基盤となるハードウェアに対する厳しいパフォーマンス要求を考えた時、果して上記の「most workloads」にHPCワークロードは含まれるのでしょうか?

c5n.18xlargeとc5n.metalのインスタンスを比較してみましょう。c5nインスタンスファミリーはHPCアプリケーションに良く使われており、最大3.5GHzのインテルXeon Platinum 8000シリーズ (Skylake-SP) プロセッサーが搭載されています。c5n.18xlarge、c5n.metalのインスタンスは両方ともに2つのCPUと18の物理コアを持っています。またどちらのインスタンスもHPCアプリケーションを実行するための100GbpsのElastic Fabric Adapter (EFA) を搭載しています。どちらのインスタンスも基盤となるハードウェアは同じで、唯一の違いはc5n.18xlargeのインスタンスではNitro Hypervisorが使われている事です。

私達は4つの異なるワークロードで性能評価しました。Weather Research and Forecastingモデル (天気予報)、OpenFOAM (コンピュータを利用した流体力学)、GROMACS (分子動力学)、High Performance Linpack (合成行列計算) の4つです。この4つを選択した理由は、それぞれが異なる特徴をもったアプリケーションだからです。今回はAWS ParallelClusterとFSx for Lustreの共有ファイルシステムを利用し、このアプリケーションを16インスタンス (576コア) で実行します。

WRF (Weather Research and Forecasting Model): WRFは160以上の国、48000以上の登録ユーザに広範に利用されている数値予報の一つです。ベンチマークの対象となったのは、CONUS 2.5kmの研究です。他の天気予報モデルのように初期状態の読み込み、結果の作成に際して重いI/Oワークロードを含んでいます。使用されるパフォーマンス指標は、I/Oと計算時間の両方を含むウォールクロックの合計時間に基くシミュレーションのレートです。

GROMACS: GROMACSはタンパク質、脂質、核酸のシミュレーション用に設計された分子動力学のパッケージです。この評価のために、マックス・プランク生物物理化学研究所のbenchRIBの入力データセット (2M原子を含む水中リボソーム) を実行します。比較に利用するパフォーマンス指標は、GROMACSの実行の完了時に生成される「ns/day」の値です。

OpenFOAM: OpenFOAMはオープンソースの流体力学のパッケージです。今回私達は、標準的なOpenFOAM v2012チュートリアル集の一部である、400万セルのバイクのケースをスケールアップして1500万セルにしたバージョンを使用します。パフォーマンス指標は、全てのイテレーションの合計時間と1時間当たりのイテレーション数です。

High Performance Linpack (HPL): HPLは、倍精度不動小数点の高密度線形系を解くソフトウェアパッケージです。このソフトウェアは「世界最速のスーパーコンピューター」のTOP500をランク付けするのに使われています。これは実務に利用されるアプリケーションではありませんが、完全性を期すために含めました。今回のテストではOpenAPIパッケージでインテルが提供する最適化されたHPLの実装を利用しました。パフォーマンス指標は、実行完了時に出力されるGigaFLOPsです。

Figure 2. Normalized performance across applications running on metal and virtual instances.

図2. ベアメタルと仮想化インスタンスでのアプリケーション毎の性能比較

図2の通り、メタル・インスタンスとフルサイズの仮想化インスタンスの正規化されたパフォーマンスはほぼ同じです。どの評価方法の場合でもその差は1%以内に収まっています。データは、それぞれの設定で3回実行した平均値です。
これらの評価方法ではAWS Nitro Hypervisorを使用した際のパフォーマンスとベアメタルインスタンスを使用する場合のパフォーマンスに見分けがつかないという結果になりました。

まとめ

HPCアプリケーションは、基盤となるシステムが提供できる全てのリソースを利用します。この投稿で示したように、AWS Nitro Systemはそのレベルのパフォーマンスを提供する事が可能でありながら、依然として仮想化されたハードウェアの利益を享受する事もできます。今回例示したアプリケーションに於けるNitro Hypervisor (c5n.18xlarge)とc5n.metalのパフォーマンス差は無視できるものです。
もしあなたがAWS Nitro Systemについて興味があり更に知りたいのであれば、以下の動画もご覧下さい。「Evolution of Nitro System」、「Nitro Deep Dive」の過去のre:Inventでの2つのプレゼンテーションでは、AWSがどのようにNitroを設計し構築したのかという背景を説明しています。VP/Distinguished EnginnerのJames Hamiltonは「provided insights on his blog」でAWS Nitroに言及しています。AWS Nitro Systemのページではセキュリティの利点について詳細な説明があります。