如何查看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

相关推荐

  • Linux补丁更新如何操作?步骤方法有哪些?

    Linux系统的补丁更新是保障系统安全、稳定运行的核心操作,及时修复漏洞、优化功能能有效降低安全风险并提升用户体验,不同Linux发行版因包管理器差异,更新流程略有不同,但核心逻辑一致:检查可更新包、下载安装更新、验证结果,以下从基础操作、发行版差异、注意事项及自动更新配置等方面展开说明,补丁更新的基础流程补丁……

    2025年8月26日
    1400
  • Linux下如何快速编译源代码?

    核心编译工具链GCC/G++编译器安装命令: sudo apt install build-essential # Debian/Ubuntusudo dnf groupinstall "Development Tools" # Fedora/CentOS基础编译示例: gcc -o hel……

    2025年7月24日
    2400
  • Linux休眠与挂起究竟有何区别?

    Linux休眠将系统状态保存到硬盘后完全断电,恢复时从硬盘加载;挂起则保持内存供电进入低功耗状态,可快速唤醒但持续耗电,休眠适合长时间断电,挂起适合短时离开。

    2025年6月18日
    3400
  • 键盘失灵?如何查看当前驱动模块

    在Linux系统中,当键盘出现无响应、按键错乱或驱动异常时,重启键盘驱动是常见的解决方法,以下是五种详细操作方案,按风险从低到高排序,请根据实际情况选择:重新加载键盘驱动模块(推荐)适用于大多数情况,通过卸载并重载内核模块实现:# 2. 卸载模块(需root权限)sudo modprobe -r usbhid……

    2025年7月2日
    3500
  • linux如何创建组

    Linux中,可使用groupadd [组名]命令创建组,如`group

    2025年8月10日
    1300

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信