データ集約型のワークロードでは、ダイナミックランダムアクセスメモリ (DRAM) 、永続メモリ、およびさまざまなデータ処理プロセスでデータストリームのコピーと変換を最適化する必要がある場合は、Intelを使用することをお勧めします。®データストリーミングアクセラレータ (DSA) 。 DSAは、インテルに统合された高性能データ复制および変换アクセラレータです®第8世代SHENLONGアーキテクチャを使用するElastic Compute Service (ECS) インスタンスのSapphire Rapidsプロセッサ。 ack-koordinatorがContainer Service for Kubernetes (ACK) クラスターにインストールされると、クラスターは自動的にDSAアクセラレーション機能を有効にします。
メリット
インテル®DSAは、第8世代SHENLONGアーキテクチャを使用するECSインスタンスのプロセッサに統合されています。 Alibaba Cloudは、Alinux 3に基づく関連ドライバーを提供しています。 このDSAモデルをACKクラスターのワーカーノードとして使用し、ECSインスタンスにack-koordinatorをインストールすると、DSAアクセラレーションが自動的に有効になり、メモリ操作をDSAに転送できます。 これにより、データのレプリケーションと変換が高速化され、高速化プロセス中のCPUジッタが軽減されます。 DSAは以下の利点を提供します。
ノード上のデータ集中型ワークロードのデータ処理パフォーマンスを向上させ、メモリバランシングやコンパクションなど、OSカーネル内のメモリ操作を最適化します。 これにより、ノードの全体的なメモリパフォーマンスが向上します。
これにより、個々のデータ要求を処理する際のack-koordinatorの近くのメモリアクセスアクセラレーション機能のパフォーマンスが大幅に向上します。 ワークロードによって消費されるvCore秒が削減されます。 リモートメモリの使用量が増加すると、DSAの高速化パフォーマンスが向上します。 メモリページを1,000,000するために100,000にアクセスする速度は、200% に30% することによって改善され、CPU利用率は低減される。 約1.7 GBのアプリケーションメモリがローカルサーバーに移行されます。 DSAと統合されていないプロセッサと比較して、移行時間は31.25% に短縮され、帯域幅は320% に増加します。
重要このトピックで提供されるテスト統計は、理論値のみです。 実際の値は環境によって異なる場合があります。
前提条件
アプリケーションは、複数の非均一メモリアクセス (NUMA) を持つインスタンス、特に第8世代のSHENLONGベアメタルモデルにデプロイされます。 ECSインスタンスタイプの詳細については、「ECSインスタンスタイプ」をご参照ください。
この機能は、ecs.ebmc8i.48xlarge、ecs.c8i.32xlarge、ecs.g8i.48xlargeなどの第8世代モデルに最適なサポートを提供します。 これらのモデルを使用することを推奨します。
ack-koordinator (FKA ack-slo-manager) 1.2.0-ack1.2以降がインストールされています。 ack-koordinatorのインストール方法の詳細については、「ack-koordinator (ack-slo-manager) 」をご参照ください。
説明ack-koordinatorは、resource-controllerによって提供されるすべての機能をサポートします。 現在リソースコントローラーを使用している場合は、ack-koordinatorをインストールする前にアンインストールする必要があります。 resource-controllerをアンインストールする方法の詳細については、「resource-controllerのアンインストール」をご参照ください。
kubectlクライアントがACKクラスターに接続されています。 詳細については、「クラスターのkubeconfigファイルを取得し、kubectlを使用してクラスターに接続する」をご参照ください。
課金
ack-koordinatorコンポーネントをインストールまたは使用する場合、料金はかかりません。 ただし、次のシナリオでは料金が請求される場合があります。
ack-koordinatorは、インストール後にワーカーノードリソースを占有する管理対象外のコンポーネントです。 コンポーネントのインストール時に、各モジュールが要求するリソースの量を指定できます。
既定では、ack-koordinatorは、リソースプロファイリングや細粒度スケジューリングなどの機能のモニタリングメトリックをPrometheusメトリックとして公開します。 ack-koordinatorのPrometheusメトリクスを有効にし、PrometheusのManaged Serviceを使用する場合、これらのメトリクスはカスタムメトリクスと見なされ、料金が課金されます。 料金は、クラスターのサイズやアプリケーションの数などの要因によって異なります。 Prometheusメトリクスを有効にする前に、Prometheusのマネージドサービスの課金トピックを読んで、カスタムメトリクスの無料クォータと課金ルールについて確認することをお勧めします。 リソース使用量を監視および管理する方法の詳細については、「観察可能なデータ量と請求書の照会」をご参照ください。
ステップ1: DSAアクセラレーションの有効化
ack-koordinatorコンポーネントは、DSAと統合されているノードのDSAアクセラレーション機能を自動的にアクティブにします。 クラスターにECSインスタンスを設定し、ack-koordinatorをデプロイしてDSAアクセラレーションを使用するだけです。
近くのメモリアクセスの高速化機能がクラスタで有効になっている場合、DSAは高速化効果を高めることができます。 近隣のメモリアクセスアクセラレーションを有効にする方法の詳細については、「コンテナーの近隣のメモリアクセスアクセラレーションの有効化」をご参照ください。
ステップ2: DSAアクセラレーションの検証
近隣のメモリアクセスの高速化機能は、コアバウンドアプリケーションのリモートNUMAからローカルサーバーへのメモリの安全な移行をサポートします。 これにより、ローカルメモリアクセスのヒット率が向上し、メモリ集中型ワークロードのメモリアクセスが最適化されます。
次の例では、ecs.ebmc8i.48xlargeを使用して、DSAアクセラレーションが期待どおりに機能するかどうかを確認します。
手順
ノードにログインし、次のコマンドを実行して、プロセッサがDSAと統合されていることを確認します。
テストノードにログインする方法の詳細については、「ECSインスタンスへの接続方法」をご参照ください。
ls /sys/bus/dsa
エラーメッセージが表示されず、返されたディレクトリが空でない場合、プロセッサはDSAと統合されています。
テストアプリケーションをデプロイし、その近くのメモリアクセス高速化機能を有効にします。
Redisなどのメモリ集約型アプリケーションをデプロイして、デプロイと検証を行うことを推奨します。 Redisアプリケーションをデプロイし、近くのメモリアクセス高速化機能を有効にする方法の詳細については、「例」をご参照ください。
結果分析
次の表は、DSAアクセラレーションを有効にした場合と有効にしていない場合とで、26.12 GBのRedisリモートメモリを移行するのに必要なCPU使用率 (100万のメモリページに基づく) と移行時間を比較しています。
シナリオ | 移行時間 (秒) | CPU使用率 | vCore-秒 (秒) |
DSAアクセラレーション無効 | 9.649 | 1.000 | 9.649 |
DSAアクセラレーションが有効 | 4.928 | 0.668 | 3.292 |
テストデータは、DSAアクセラレーションを有効にすると、移行時間、平均CPU使用率、およびvCore秒が、DSAアクセラレーションを無効にすると、その値の51.8% 、66.8% 、および34.1% に短縮されることを示しています。 これらの結果は、DSAがメモリ移行を加速し、CPU消費を削減できることを示しています。
参照
DSAは、近傍のメモリアクセス高速化の効果を高めることができる。 近隣のメモリアクセスアクセラレーションを有効にする方法の詳細については、「コンテナーの近隣のメモリアクセスアクセラレーションの有効化」をご参照ください。