我在 Amazon Elastic Compute Cloud (Amazon EC2) Nitro 型執行個體上執行我的工作負載。我想檢閱效能和非統一記憶體存取 (NUMA) 統計資料。
簡短描述
下列因素會影響 EC2 執行個體託管應用程式的效能:
- CPU 超過使用率
- 記憶體使用
- EBS 磁碟區
- 網路統計資料
- 非 NUMA 感知
在 NUMA 架構中,每個 CPU 都能存取自己指派的記憶體,也稱為本機記憶體。每個 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。Node 0 可獲指派 32 CPU 和 255,225 MB 的記憶體。Node 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
如需每個統計資料的詳細說明,請參閱 A.11。Red Hat 客戶入口網站上的 NUMASTAT。
numa_foreign 和 numa_miss 統計資料的增加表示在 EC2 執行個體上執行的應用程式無法感知 NUMA。這可能會影響效能。若要解決此問題,請關閉 grub 層級的 NUMA。或是嘗試將應用程式繫結至特定 NUMA 節點。如需詳細資訊,請參閱作業系統最佳化。
永久關閉 NUMA
如要在 Amazon Linux 2、CentOS7 或r 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