EC2 インスタンスで実行されているワークロードの NUMA 統計を確認するにはどうすればよいですか?
最終更新日: 2021 年 7 月 23 日
Amazon Elastic Compute Cloud (Amazon EC2) の Nitro ベースのインスタンスでワークロードを実行しています。パフォーマンスと NUMA 統計を確認するにはどうすればよいですか?
簡単な説明
EC2 インスタンスでホストされるアプリケーションのパフォーマンスに影響する要因は、CPU 使用率、メモリ使用率、EBS ボリューム、ネットワーク統計、アプリケーションの NUMA 非対応など、複数の要因があります。NUMA は不均一なメモリアクセスです。NUMA アーキテクチャでは、各 CPU は、ローカルメモリと呼ばれる独自の割り当てメモリにアクセスできます。各 CPU は、外部メモリと呼ばれる他の CPU に割り当てられたメモリにもアクセスできます。インスタンスでホストされているアプリケーションが NUMA 対応でない場合、外部メモリにアクセスすると追加コストが発生し、パフォーマンスに影響を与える可能性があります。
アプリケーションベンダーに連絡して、アプリケーションが NUMA 対応かどうかを確認してください。
解決方法
NUMA 統計を確認する
注: NUMA 統計以外のパフォーマンスのコンポーネントを確認するには、「EC2 インスタンスでホストされているウェブサイトへの低速接続のトラブルシューティング方法」を参照してください。
NUMA 統計を確認するには、次の手順を実行します。
1. 次のコマンドを実行して、インスタンスタイプが 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 トポロジはノード 0 とノード 1 の 2 つのノードに分割されています。ノード 0 には 32 個の CPU と 255,225 MB のメモリが割り当てられています。ノード 1 には、残りの半分の CPU (32) と 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
各統計の詳細な説明については、A.11 を参照してください。Red Hat カスタマーポータルの NUMASTAT。
numa_Foreign および numa_miss 統計の増加は、EC2 インスタンスで実行されているアプリケーションが NUMA 対応ではないことを示している可能性があります。これはパフォーマンスに影響する可能性があります。この問題を解決するには、グラブレベルで NUMA を無効にします。または、アプリケーションを特定の NUMA ノードにバインドしてみてください。詳細については、「オペレーティングシステムの最適化」のステップ 8 を参照してください。
NUMA を永久に無効にする
Amazon Linux 2、CentOS7、または RHEL 7 で numa を永久に無効にするには、次のコマンドを実行します。
sudo vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT="numa=off
grub2-mkconfig -o /etc/grub2.cfg
reboot