linux中的NUMA配置

作者: goto2091

linux性能优化——关于NUMA的配置

检查NUMA配置 numa是为了应对多处理器系统共享同一个总线导致的总线负载过大问题。本质上将M个处理器分为N组,每组处理器之间用IMC BUS总线进行连接,每一组叫做一个Node,其结构类似于一个小的UMA(Uniform Memory Access),每个Node中有一个集成的内存控制器IMC,Intergrated Memory Controller。组内CPU用IMCBUS总线连接,Node之间用QPI总线连接,QPI延迟明显高于IMCBUS。 如果numa的available nodes数量大于1,则表明NUMA已开启。 NUMA的基本信息可以通过检查cpu状态,即使用lscpu指令来看到。执行如下指令:

lscpu | grep -i numa

得到如下格式结果:

NUMA node(s):        2
NUMA node0 CPU(s):   0-27,56-83
NUMA node1 CPU(s):   28-55,84-111

结果显示NUMA有2个node, 如果大于1个node,说明NUMA开启。此外对新手要注意:pcie上并没有NUMA信息,因为pcie上的信息都是硬件设备,NUMA并不是硬件,而只是一种内存技术,该技术和CPU的支持分不开,所以,用lscpu指令可以看到NUMA信息。

如果要看NUMA详细的信息,可以用numactl和numastat指令。

numactl --hareward
numactl -H

得到如下信息:

available: 2 nodes (0-1) 
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
node 0 size: 128445 MB
node 0 free: 96356 MB
node 1 cpus: 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
node 1 size: 128982 MB
node 1 free: 97986 MB
node distances:
node   0   1
  0:  10  20
  1:  20  10

此外还要检查pcie上的设备是否和对应的NUMA节点对应。

例如,某一个pcie地址段是和NUMA的Node0绑定的,则该地址段上的设备应绑定Node0。如果本应是绑定Node0的设备绑定了Node1, 则必然导致该设备运行的性能下降。

注:通过实验得出,00-7f的bus上,所有设备均应绑定Node0,80-ff的bus上,所有设备均应绑定Node1。
7f对应十进制是127,ff对应十进制是255,正好是256位长度,说名pcie位宽是256位。前半部分属于Node0,后半部分属于Node1。

以网卡为例,通过lspci找到了某一张网卡的pcie地址号0000:4b:00.01,bus为4b,小于80,故应绑定Node0。通过以下指令查询该网卡是否绑定Node0:

cat /sys/bus/pci/devices/0000\:4b\:00.1/numa_node

如果返回的值为0,说明该网卡绑定NUMA正确。

另外,如果仅仅是查看某一个网卡绑定的numa_node,可以通过以下指令而不需要通过pcie查找:

cat  /sys/class/net/enp129s0f0/device/numa_node 

该指令的值会返回所属的Node号,如果返回0,便代表该网卡绑定在Node0上。

这两个指令共同点都是在sys文件系统中查找。

如何配置NUMA

NUMA的配置对于性能至关重要。

原文创作:goto2091

原文链接:https://www.cnblogs.com/goto2091/p/14765958.html

更多推荐

更多
  • Linux二进制-一、Linux 环境及其工具 Linux 工具,有用的设备和文件,与连接器相关的环境点,GDB,Objdump from GNU binutils,Objcopy from GNU binutils,strace,追踪,基本 ltrace 命令,ftrace,rea
    Apache CN

  • Linux二进制-零、前言 这本书的内容,你需要什么来写这本书,这本书是写给谁的,约定,读者反馈,客户支持,示例代码下载,勘误表,盗版,问题, 软件工程是创造一项在微处理器上存在、存在和呼吸的发明。 我们称之为程序。 逆向工程的行为发现这个项目如何生活和呼吸,而且
    Apache CN

  • Linux二进制-二、ELF 二进制格式 ELF 文件类型,ELF 程序头文件,ELF 节标题,精灵符号,ELF 重置,ELF 动态链接,编写 ELF 解析器,pt_load,PT_DYNAMICPhdr 为动态段,pt_note,pt_interp,PT_PHDR,文本部
    Apache CN

  • Linux二进制-五、Linux 二进制程序保护 ELF 二进制封隔器哑保护,存根机制和用户域执行,由保护根执行的其他工作,已有的 ELF 二进制保护,下载 maya 保护的二进制文件,反调试二进制保护,抗仿真,模糊处理方法,保护控制流的完整性,其他资源,保护器的一个例子,DacryF
    Apache CN

  • Linux二进制-九、Linux `/proc/kcore`分析 九、Linux /proc/kcore分析Linux 内核取证和 rootkit,普通 vmlinux 没有符号,/proc/kcore 和 GDB 探索,直接修改 sys_call_table,Kprobe rootkits,VFS
    Apache CN

  • Linux二进制-三、Linux 进程跟踪 ptrace 的重要性,进程寄存器状态和标志,一个简单的基于实践的调试器,一个简单的 ptrace 调试器,具有进程附加功能,高级功能跟踪软件,ptrace 和法医学分析,处理图像重建从内存到可执行文件,简单的例子并不总是那么微不足道,
    Apache CN

  • 四、ELF 病毒技术——Linux/Unix 病毒 ELF 病毒技术,ELF 病毒工程挑战,ELF 病毒寄生虫感染方法,PT_NOTE 到 PT_LOAD 转换感染方法,感染控制流程,ELF 防调试和包装技术,ELF 病毒检测及消毒,寄生代码必须是自包含的,字符串存储的复杂性,寻找存储寄
    Apache CN

  • Linux二进制-七、进程内存取证 流程是什么样子的?,进程内存感染,Linux ELF 核心文件,可执行内存映射,程序堆,共享库映射,堆栈、vdso 和 vsycall,进程感染工具,工艺感染技术,Azazel userland rootkit 检测,进程地址空间的映射
    Apache CN

  • Linux二进制-八、扩展核心文件快照技术 历史,ECFS 理念,ECFS 入门,libecfs 用于解析 ECFS 文件的库,readecfs,使用 ECFS 检查受感染的进程,ECFS 参考指南,使用 ECFS 处理巫术,了解更多有关 ECFS,将 ECFS 插入核心处理器,
    Apache CN

  • Linux二进制-六、Linux 中的 ELF 二进制取证 检测入口点修改的科学,检测其他形式的控制流劫持,寄生虫代码特征识别,识别反向文本填充感染,识别文本段填充感染,标识受保护的二进制文件,IDA Pro,正在修补。ctors/。 init_array 节,检测 PLT/GOT 挂钩,检测蹦
    Apache CN

  • 近期文章

    更多
    文章目录

      推荐作者

      更多