如何查看NUMA当前状态?

在Linux系统中,NUMA(Non-Uniform Memory Access,非统一内存访问)是提升多处理器服务器性能的关键技术,它通过将CPU和内存划分为多个”节点”,让每个CPU优先访问本地内存,减少跨节点延迟,以下是详细配置指南:
在配置前,先检查系统NUMA支持情况:

  1. 查看硬件支持
    执行命令:

    lscpu | grep -i numa

    若输出包含NUMA node(s)且数量大于1(如NUMA node(s): 2),说明硬件已支持NUMA。

  2. 检查NUMA是否启用

    dmesg | grep -i numa

    若显示NUMA: Using hardware configuration或类似信息,表示内核已启用NUMA。


开启NUMA的核心步骤

BIOS/UEFI 中启用NUMA(必需)

NUMA是硬件级功能,必须先在BIOS中开启

  • 重启服务器,进入BIOS/UEFI设置(通常按DelF2F12)。
  • Advanced Settings > CPU/Memory Configuration 中找到选项:
    • 名称可能为 NUMA SupportNode InterleavingMemory Interleaving
  • 关闭内存交错(Disable Memory Interleaving)
    此选项开启时内存均匀分布(模拟UMA),需关闭以启用NUMA。
  • 保存设置并重启。

⚠️ 注意:不同厂商(如Dell、HP、联想)路径略有差异,请参考服务器手册。

Linux内核参数调整

若BIOS已启用NUMA但系统未识别,需配置内核:

  • 编辑GRUB配置
     sudo vim /etc/default/grub
  • 修改内核启动参数
    GRUB_CMDLINE_LINUX行添加:

     GRUB_CMDLINE_LINUX="... numa=on"

    某些系统(如VMware虚拟机)需额外添加:

     GRUB_CMDLINE_LINUX="... numa=on transparent_hugepage=never"
  • 更新GRUB并重启
     sudo grub2-mkconfig -o /boot/grub2/grub.cfg  # CentOS/RHEL
     sudo update-grub                             # Ubuntu/Debian
     sudo reboot

验证NUMA状态

重启后确认配置生效:

  1. 检查NUMA节点

    numactl --hardware

    输出示例:

    available: 2 nodes (0-1)  # 表示2个NUMA节点已激活
    node 0 size: 32768 MB
    node 1 size: 32768 MB
  2. 查看内存分配策略

    numastat  # 显示各节点内存使用统计

高级配置工具

numactl:进程级NUMA控制

  • 指定进程运行在节点0,并使用本地内存
     numactl --cpunodebind=0 --membind=0 <command>
  • 示例:运行MySQL在节点0
     numactl --cpunodebind=0 --membind=0 /usr/sbin/mysqld

numad:自动NUMA优化

  • 安装并启用服务
     sudo yum install numad    # CentOS/RHEL
     sudo systemctl start numad

    numad 自动调整进程与内存的绑定,适合动态负载场景。

内核参数调优

  • 禁用区域回收策略(避免内存溢出)
     echo 0 > /proc/sys/vm/zone_reclaim_mode
  • 调整内存分配策略/proc/sys/kernel/numa_balancing):
    • 1:启用自动负载均衡(默认)
    • 0:关闭(需手动绑定)

注意事项

  1. 性能权衡
    • 数据库(如MySQL、Oracle)开启NUMA通常提升性能。
    • 部分应用(如高吞吐网络服务)可能因跨节点访问导致延迟,需测试后决定。
  2. 虚拟机场景
    VMware/KVM需同时开启虚拟NUMA(vNUMA)并匹配Guest OS配置。
  3. 内存不足处理
    若某节点内存耗尽,可通过numactl --interleave=all启用交错分配,但会牺牲性能。

开启NUMA需三步:BIOS启用 → 内核参数确认 → 系统工具优化,正确配置后,多路服务器性能可提升20%~50%,建议结合numastatperf工具监控效果,根据应用负载调整策略。

引用说明

  • 内核参数文档:https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
  • Red Hat NUMA优化指南:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-numa
  • Ubuntu服务器配置:https://ubuntu.com/server/docs/performance-numa

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/7176.html

(0)
酷番叔酷番叔
上一篇 2025年7月13日 05:19
下一篇 2025年7月13日 05:37

相关推荐

  • 为什么ifconfig命令至今仍被广泛使用?

    检查网络接口状态首先确认网卡状态和名称:ip link showifconfig -a输出关键信息:eth0、enp0s3:有线网卡(名称因系统而异)wlan0:无线网卡state UP:已启用;state DOWN:未启用通用激活方法(临时生效)启用指定网卡sudo ip link set eth0 up……

    2025年7月4日
    17100
  • Linux如何批量strip二进制文件以减小体积?

    在Linux系统中,strip命令是一个用于移除可执行文件、目标文件(如.o文件)和动态库(如.so文件)中的符号表、调试信息、注释等非必要数据的工具,通过移除这些数据,可以有效减小文件体积,尤其适用于对存储空间敏感或需要优化程序加载速度的场景,当需要处理大量文件时,手动逐个执行strip显然效率低下,因此掌握……

    2025年8月22日
    12400
  • Linux系统中,如何使用命令行工具查看和管理系统及应用的日志文件?

    Linux系统中,日志是记录系统运行状态、应用程序行为及用户操作的关键信息,通过查看日志可以快速定位问题、排查故障,本文将详细介绍Linux查看日志的多种方法,包括日志文件位置、常用查看命令、实时监控技巧及日志管理工具,帮助用户高效掌握日志分析技能,Linux日志文件位置Linux系统的日志文件通常存储在/va……

    2025年10月3日
    13200
  • linux如何安装phpize

    Linux上安装phpize,需先确保已安装PHP开发包,如Ubuntu执行`sudo

    2025年8月16日
    14600
  • pxelinux.0如何实现网络启动?

    pxelinux.0 是 Syslinux 项目中的核心网络引导文件,用于 PXE(预启动执行环境)启动流程,它存储在 TFTP 服务器上,当客户端通过网卡启动时,会从服务器加载该文件,进而读取配置文件(如 pxelinux.cfg/default)决定启动选项(如加载 Linux 内核、Live CD 镜像等……

    2025年6月17日
    17700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信