9.3. libvirt NUMA 调整


通常,在 NUMA 系统上获得最佳性能是通过将客户机大小限制为单一 NUMA 节点上的资源量来实现的。 避免在 NUMA 节点间不必要地分割资源。
使用 numastat 工具查看进程和操作系统的每 NUMA 节点内存统计信息。
在以下示例中,numastat 工具显示了四个虚拟机,并在 NUMA 节点之间达到低效内存对齐:
# numastat -c qemu-kvm

Per-node process memory usage (in MBs)
PID              Node 0 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Total
---------------  ------ ------ ------ ------ ------ ------ ------ ------ -----
51722 (qemu-kvm)     68     16    357   6936      2      3    147    598  8128
51747 (qemu-kvm)    245     11      5     18   5172   2532      1     92  8076
53736 (qemu-kvm)     62    432   1661    506   4851    136     22    445  8116
53773 (qemu-kvm)   1393      3      1      2     12      0      0   6702  8114
---------------  ------ ------ ------ ------ ------ ------ ------ ------ -----
Total              1769    463   2024   7462  10037   2672    169   7837 32434
运行 numad 以自动匹配客户机的 CPU 和内存资源。
然后再次运行 numastat -c qemu-kvm 来查看正在运行的 numad 的结果。以下输出显示了资源已对齐:
# numastat -c qemu-kvm

Per-node process memory usage (in MBs)
PID              Node 0 Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Total
---------------  ------ ------ ------ ------ ------ ------ ------ ------ -----
51747 (qemu-kvm)      0      0      7      0   8072      0      1      0  8080
53736 (qemu-kvm)      0      0      7      0      0      0   8113      0  8120
53773 (qemu-kvm)      0      0      7      0      0      0      1   8110  8118
59065 (qemu-kvm)      0      0   8050      0      0      0      0      0  8051
---------------  ------ ------ ------ ------ ------ ------ ------ ------ -----
Total                 0      0   8072      0   8072      0   8114   8110 32368
注意
使用 -c 运行 numastat 提供了紧凑输出;添加 -m 选项会在各个节点基础上添加系统范围的内存信息。详情请查看 numastat man page。

9.3.1. 每个主机 NUMA 节点监控内存

您可以使用 nodestats.py 脚本报告主机上的每个 NUMA 节点的总内存和可用内存。此脚本还报告每个正在运行的域都严格绑定到某些主机节点的内存量。例如:
# /usr/share/doc/libvirt-python-2.0.0/examples/nodestats.py
NUMA stats
NUMA nodes:     0       1       2       3
MemTotal:       3950    3967    3937    3943
MemFree:        66      56      42      41
Domain 'rhel7-0':
         Overall memory: 1536 MiB
Domain 'rhel7-1':
         Overall memory: 2048 MiB
Domain 'rhel6':
         Overall memory: 1024 MiB nodes 0-1
         Node 0: 1024 MiB nodes 0-1
Domain 'rhel7-2':
         Overall memory: 4096 MiB nodes 0-3
         Node 0: 1024 MiB nodes 0
         Node 1: 1024 MiB nodes 1
         Node 2: 1024 MiB nodes 2
         Node 3: 1024 MiB nodes 3
这个示例显示了四个主机 NUMA 节点,每个节点总共包含 4GB 的 RAM(MemTotal)。接近所有的内存都会在每个域中消耗(MemFree)。正在运行的四个域(虚拟机):域 'rhel7-0' 具有 1.5GB 内存,它不固定到任何特定主机 NUMA 节点上。但是,域 'rhel7-2' 具有 4GB 内存和 4 个 NUMA 节点,这些节点固定为 1:1 到主机节点。
要打印主机 NUMA 节点统计信息,请为您的环境创建一个 nodestats.py 脚本。示例脚本可在 /usr/share/doc/libvirt-python-版本/examples/nodestats.py 中找到 libvirt-python 软件包文件。可以使用 rpm -ql libvirt-python 命令显示到脚本的特定路径。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.