Amazon Elastic Compute Cloud (Amazon EC2) Nitro ベースのインスタンスでワークロードを実行しています。パフォーマンスと非一様メモリアクセス (NUMA) の統計を確認したいと考えています。
簡単な説明
以下の要因は、EC2 インスタンスでホストされているアプリケーションのパフォーマンスに影響します。
- CPU 使用率を超過しています
- メモリ使用量
- EBS ボリューム
- ネットワーク統計
- NUMA には対応していません
各 CPU は、NUMA アーキテクチャ内で、ローカルメモリと呼ばれる独自の割り当て済みのメモリにアクセスできます。各 CPU は、外部メモリと呼ばれる他の CPU に割り当て済みのメモリにもアクセスできます。インスタンスでホストされているアプリケーションが NUMA に対応していない場合は、外部メモリにアクセスすると追加コストが発生します。また、パフォーマンスに影響する可能性があります。アプリケーションが NUMA に対応しているかどうかをアプリケーション販売会社に問い合わせてご確認ください。
解決方法
NUMA 統計を確認する
**注:**NUMA 統計以外のパフォーマンスコンポーネントを確認するには、「EC2 インスタンスでホストされているウェブサイトへの低速接続に関するトラブルシューティング方法」を参照してください。
NUMA 統計を確認するには、以下の手順に従ってください。
1. インスタンスの種類が単一の NUMA ノードにあるのか複数の NUMA ノードにあるのかを確認するには、次のコマンドを実行します。
**注:**インスタンスタイプは r5.16xlarge で、2 つの NUMA ノードがあります。
lscpu | grep -i numa
NUMA node(s): 2
2. numactl パッケージをインストールするには、次のコマンドを実行します。
sudo yum install numactl
3. NUMA トポロジーを確認するには、次のコマンドを実行します。
sudo numactl -H
次の出力例では、NUMA トポロジーが node 0 と node 1 の 2 つのノードに分割されているのが示されています。ノード 0 には、32 個の CPU と 255,225 MB のメモリが割り当てられています。ノード 1 には、残りの半分の CPU と 254,924 MB のメモリが割り当てられています。ノード距離は、他のノードからメモリページにアクセスする際の待機時間を示します。
available: 2 nodes (0-1)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
node 0 size: 255140 MB
node 0 free: 254794 MB
node 1 cpus: 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
node 1 size: 255225 MB
node 1 free: 254924 MB
node distances:
node 0 1
0: 10 21
1: 21 10
4. NUMA 統計を確認するには、次のコマンドを実行します。
sudo numastat
以下は、コマンド出力の例です。
node node0 node1
numa_hit 314825 288025
numa_miss 0 0
numa_foreign 0 0
interleave_hit 37958 37620
local_node 311752 248476
other_node 3073 39549
各統計の詳細な説明については、Red Hat カスタマーポータル内のA.11.NUMASTAT を参照してください。
numa_foreign および numa_miss 統計の増加は、EC2 インスタンスで実行されているアプリケーションが NUMA を認識していないことを示している可能性があります。これはパフォーマンスに影響を与える可能性があります。この問題を解決するには、grub レベルで NUMA をオフにします。または、アプリケーションを特定の NUMA ノードにバインドすることをお試しください。詳しくは、「オペレーティングシステムの最適化」を参照してください。
NUMA を永久的に無効にする
Amazon Linux 2、CentOS7、または RHEL 7 で NUMA を完全に無効にするには、以下のコマンドを実行します。
sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="numa=off"
sudo grub2-mkconfig -o /etc/grub2.cfg
sudo reboot
Amazon Linux 2023 で NUMA を完全にオフにするには、以下のコマンドを実行します。
# grubby --args "numa=off" —update-kernel DEFAULT