如何检查 Linux 中是否应用了 NUMA 设置

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何检查 Linux 系统中是否应用了非统一内存访问 (Non-Uniform Memory Access, NUMA) 设置。理解 NUMA 对于优化多处理器系统的性能至关重要。

通过一系列的实践步骤,你将使用 numactllscpu 等重要的 Linux 命令,并探索 /proc/numa 文件系统,以验证和检查系统上的 NUMA 配置。这个实验将为你提供识别 NUMA 节点、关联的 CPU 和内存的实用技能,确保你能够有效地评估系统的 NUMA 设置。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicSystemCommandsGroup -.-> linux/help("Command Assistance") linux/BasicSystemCommandsGroup -.-> linux/man("Manual Access") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/which("Command Locating") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/help -.-> lab-558800{{"如何检查 Linux 中是否应用了 NUMA 设置"}} linux/man -.-> lab-558800{{"如何检查 Linux 中是否应用了 NUMA 设置"}} linux/ls -.-> lab-558800{{"如何检查 Linux 中是否应用了 NUMA 设置"}} linux/cat -.-> lab-558800{{"如何检查 Linux 中是否应用了 NUMA 设置"}} linux/which -.-> lab-558800{{"如何检查 Linux 中是否应用了 NUMA 设置"}} linux/apt -.-> lab-558800{{"如何检查 Linux 中是否应用了 NUMA 设置"}} end

使用 numactl --hardware 检查 NUMA 状态

在这一步中,我们将开始探索你系统上的非统一内存访问 (Non-Uniform Memory Access, NUMA) 架构。NUMA 是一种用于多处理的计算机内存设计,其中内存访问时间取决于内存相对于处理器的位置。理解 NUMA 对于优化某些应用程序的性能可能很重要。

我们将使用 numactl 命令来检查 NUMA 状态。numactl 命令用于控制进程的 NUMA 策略,或使用特定的 NUMA 策略运行程序。

首先,让我们检查你的系统上是否有 numactl 命令。在终端中输入以下命令并按回车键:

which numactl

如果 numactl 已安装,你将看到可执行文件的路径,类似如下内容:

/usr/bin/numactl

如果未安装,你可能会看到空输出或错误消息。如果未安装,你可以使用 apt 进行安装。由于你拥有无密码的 sudo 权限,你可以运行以下命令:

sudo apt update
sudo apt install numactl -y

现在 numactl 已可用,让我们使用 --hardware 选项来显示系统上 NUMA 节点的信息。输入以下命令并按回车键:

numactl --hardware

你应该会看到类似以下的输出,它列出了可用的 NUMA 节点及其关联的 CPU 和内存:

available: 1 nodes (0)
node 0 cpus: 0 1
node 0 size: 1999 MB
node 0 free: 1800 MB

此输出表明你的系统有 1 个 NUMA 节点(节点 0)。它还显示了哪些 CPU 属于该节点,以及该节点可用的总内存和空闲内存。确切的输出可能会因虚拟机配置而异。

理解此输出是使用 NUMA 系统的第一步。在接下来的步骤中,我们将探索更多检查 NUMA 配置的方法。

点击 继续 进入下一步。

/proc/numa 中验证 NUMA 节点

在这一步中,我们将探索 /proc 文件系统,以查找有关 NUMA 节点的信息。/proc 文件系统是一个虚拟文件系统,它提供有关进程和其他系统信息。这是查找 Linux 系统配置和状态详细信息的好地方。

具体来说,我们将查看 /proc/numa 目录。该目录包含提供 NUMA 配置详细信息的文件。

首先,让我们使用 ls 命令列出 /proc/numa 目录的内容。在终端中输入以下命令并按回车键:

ls /proc/numa

你应该会看到类似以下的输出:

distance  nodes

这表明 /proc 中与 NUMA 相关的主要有两个文件或目录:distancenodes

现在,让我们查看 /proc/numa/nodes 文件的内容。该文件应列出可用的 NUMA 节点。我们可以使用 cat 命令来显示此文件的内容。输入以下命令并按回车键:

cat /proc/numa/nodes

你应该会看到类似以下的输出:

0

此输出确认你的系统至少有一个 NUMA 节点,即节点 0。如果你的系统有更多的 NUMA 节点,这里会显示一个节点编号列表(例如,0 1)。

接下来,让我们查看 /proc/numa/distance 文件。该文件显示了 NUMA 节点之间的距离,这代表了访问不同节点上内存的开销。对于单节点系统,节点到自身的距离通常为 10。输入以下命令并按回车键:

cat /proc/numa/distance

你应该会看到类似以下的输出:

0: 10

此输出显示了距离矩阵。在这种情况下,0: 10 表示从节点 0 到节点 0 的距离为 10。在具有多个 NUMA 节点的系统上,你会看到一个显示所有节点对之间距离的矩阵。

探索 /proc 文件系统是在 Linux 中收集系统信息的常用方法。你现在已经了解了如何使用它来验证系统检测到的 NUMA 节点。

点击 继续 进入下一步。

使用 lscpu 检查 NUMA 详细信息

在这最后一步中,我们将使用 lscpu 命令来获取有关 CPU 架构的详细信息,包括 NUMA 配置。lscpu 命令会显示系统中 CPU 的相关信息,对于了解系统硬件非常有用。

在终端中输入以下命令并按回车键:

lscpu

你将看到一份关于 CPU 的全面输出。查找提及“NUMA”的行。输出会因系统而异,但你应该会看到类似以下的内容:

Architecture:        x86_64
...
NUMA node(s):        1
NUMA node0 CPU(s):   0,1

让我们来分析一下输出中的相关部分:

  • NUMA node(s): 1:这一行告诉你系统检测到的 NUMA 节点总数。在这种情况下,是 1 个,这与我们使用 numactl 和检查 /proc/numa 时看到的结果一致。
  • NUMA node0 CPU(s): 0,1:这一行显示了哪些 CPU 核心属于 NUMA 节点 0。这里表明 CPU 0 和 1 是节点 0 的一部分。

lscpu 命令还提供了许多其他关于 CPU 的有用信息,例如核心数量、线程数量、缓存大小和支持的特性。你可以随意滚动输出,看看还能找到哪些其他细节。

你现在已经成功使用了三种不同的方法(numactl --hardware/proc/numalscpu)来检查系统的 NUMA 配置。理解这些工具对于诊断性能问题和优化多处理器系统上的应用程序至关重要。

点击 继续 完成此实验并查看你的进度。

总结

在本实验中,我们学习了如何检查 Linux 中是否应用了 NUMA 设置。首先,我们使用 numactl --hardware 命令来显示可用 NUMA 节点的信息,包括关联的 CPU 和内存。这让我们对系统上的 NUMA 架构有了基本的了解。

然后,我们探索了验证 NUMA 配置的其他方法。这包括检查 /proc/numa 文件系统,它提供了关于 NUMA 节点及其内存统计的详细信息。最后,我们使用 lscpu 命令全面了解 CPU 架构,包括与 NUMA 相关的细节,进一步确认了系统的 NUMA 设置。