• linux中的NUMA配置


    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的配置对于性能至关重要。

  • 相关阅读:
    Halcon算子翻译——else
    Halcon算子翻译——default
    halcon算子翻译——continue
    Halcon算子翻译——catch
    Halcon算子翻译——case
    生命周期
    输入流输出流
    在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试。
    给你一个网站,你如何测试?
    你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?
  • 原文地址:https://www.cnblogs.com/goto2091/p/14765958.html
Copyright © 2020-2023  润新知