linux NUMA技术
1. 概述
2. Node/zone/page之间的关系
注1: linux用 pg_data_t结构来描述一个Node。 一个Node的内存由多个 zone组成。zone的类型主要有ZONE_DMA、ZONE_NORMAL和ZONE_HIGHMEM。ZONE_DMA位于低端的内存空间,用于某些旧的ISA设备。ZONE_NORMAL的内存直接映射到Linux内核线性地址空间的高端部分,许多内核操作只能在ZONE_NORMAL中进行。例如,在X86中,zone的物理地址如下:
类型 | 地址范围 |
---|---|
ZONE_DMA | 前16MB内存 |
ZONE_NORMAL | 16MB - 896MB |
ZONE_HIGHMEM | 896 MB以上 |
Zone是用struct zone_t描述的,它跟踪页框使用、空闲区域和锁等信息
域 | 说明 |
---|---|
Lock | 旋转锁,用于保护该zone |
free_pages | 该zone空闲页总数 |
pages_min,
pages_low, pages_high |
Zone的阈值 |
need_balance | 该标志告诉kswapd需要对该zone的页进行交换 |
Free_area | 空闲区域的位图,用于buddy分配器 |
wait_table | 等待释放该页进程的队列散列表,这对wait_on_page()和unlock_page()是非常重要的。当进程都在一条队列上等待时,将引起进程的抖动 |
zone_mem_map | 全局mem_map中该zone所引用的第一页 |
zone_start_paddr | 含义与node_start_paddr类似 |
zone_start_mapnr | 含义与node_start_mapnr类似 |
Name | 该zone的名字。如,“DMA”,“Normal”或“HighMem” |
Size | Zone的大小,以页为单位 |
3. NUMA 相关信息查看工具
1) 查看是否支持NUMA
[ 0.000000] NUMA: Initialized distance table, cnt=2
[ 0.000000] NUMA: Node 0 [mem 0x00000000-0x7fffffff] + [mem 0x100000000-0x107fffffff] -> [mem 0x00000000-0x107fffffff]
[ 0.000000] Enabling automatic NUMA balancing. Configure with numa_balancing= or the kernel.numa_balancing sysctl
[ 1.082448] pci_bus 0000:00: on NUMA node 0
[ 1.084608] pci_bus 0000:7f: on NUMA node 0
[ 1.085942] pci_bus 0000:80: on NUMA node 1
[ 1.088235] pci_bus 0000:ff: on NUMA node 1
node0 node1
numa_hit 15911737 17595326 # numa_hit是打算在该节点上分配内存,最后从这个节点分配的次数;
numa_miss 0 0 # num_miss是打算在该节点分配内存,最后却从其他节点分配的次数;;
numa_foreign 0 0 # num_foregin是打算在其他节点分配内存,最后却从这个节点分配的次数;
interleave_hit 36706 36904 # interleave_hit是采用interleave策略最后从该节点分配的次数;
local_node 15903586 17527159 # local_node该节点上的进程在该节点上分配的次数
other_node 8151 68167 # other_node是其他节点进程在该节点上分配的次数
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 40
On-line CPU(s) list: 0-39
Thread(s) per core: 2
Core(s) per socket: 10
Socket(s): 2
NUMA node(s): 2
Vendor ID: GenuineIntel
CPU family: 6
Model: 62
Model name: Intel(R) Xeon(R) CPU E5-2660 v2 @ 2.20GHz
Stepping: 4
CPU MHz: 2118.617
BogoMIPS: 4405.31
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 25600K
NUMA node0 CPU(s): 0-9,20-29 *
NUMA node1 CPU(s): 10-19,30-39
4 测试(访问不同节点的内存的IO)
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.823497 s, 1.3 GB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 0.936182 s, 1.1 GB/s
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 1.09543 s, 980 MB/s
1048576+0 records in
1048576+0 records out
1073741824 bytes (1.1 GB) copied, 1.11862 s, 960 MB/s
5. 参考资料
linux NUMA技术相关推荐
- Linux内存管理:NUMA技术详解(非一致内存访问架构)
图片来源:https://zhuanlan.zhihu.com/p/68465952 <Linux内存管理:转换后备缓冲区(TLB)原理> <内存管理:Linux Memory Ma ...
- KVM虚拟化技术的-NUMA技术和应用
KVM虚拟化技术的-NUMA技术和应用 NUMA技术是解决多CPU共同工作的技术方案,多CPU共同工作主要有3中架构:SMP:Symmetric Multi-Processor),非统一存储访问结构( ...
- 【银河麒麟V10】【服务器】numa技术
目录 1.numa介绍 2.numa工具安装 3.numa查看 4.numa测试 5.numa打开与关闭 6.补充:服务器SMP.NUMA.MPP三大体系结构介绍 (1). SMP(Symmetric ...
- Linux NUMA
1. 基本概念 1.1 SMP VS. AMP SMP(Symmetric Multiprocessing), 即对称多处理器架构,是目前最常见的多处理器计算机架构. AMP(Asymmetric M ...
- 预测汽车级Linux专业技术的需求
预测汽车级Linux专业技术的需求 Anticipating need for Automotive Grade Linux expertise 在听了多年汽车级Linux(AGL)及其所有潜力之后, ...
- Linux内存技术分析(下)
Linux内存技术分析(下) 五. 内存使用场景 out of memory 的时代过去了吗?no,内存再充足也不可任性使用. 1.内存的使用场景 · page管理 · slab(kmalloc.内存 ...
- Linux内存技术分析(上)
Linux内存技术分析(上) 一.Linux存储器 限于存储介质的存取速率和成本,现代计算机的存储结构呈现为金字塔型.越往塔顶,存取效率越高.但成本也越高,所以容量也就越小.得益于程序访问的局部性原理 ...
- Linux磁盘阵列技术详解(二)--raid 1创建
我在Linux磁盘阵列技术详解(一)里已经详细介绍了几种RAID磁盘阵列方式,原理以及创建raid 0 的详细步骤.那么这篇文档就着重讲解如何创建raid 1的技术: 步骤如下: ① 分区 同样我们还 ...
- Linux系统管理技术
Linux系统管理技术 操作系统(Operating System) 简称OS,软硬件资源的管理者,它是最复杂的软件,对下管理各种硬件资源,对上为所有应用软件的运行提供一个平台 主流操作系统 PC:W ...
最新文章
- 面了个 32+ 岁 Java 大佬,一言难尽......
- python语言入门详解-python初级教程:入门详解
- php获取控制器返回,从php中的mvc控制器方法返回一个json值
- html 常用字符,html 常用特殊字符
- Python __name__ == ‘__main__’详细解释-Python零基础入门教程
- android studio 启动画面,Android Studio 利用Splash制作APP启动界面的方法
- 权限修饰符(public、protected、default、private)权限验证
- Java中四种遍历Map对象的方法
- 最大子数组累加和(2种方法)
- 回溯策略的汉诺塔问题
- ubuntu mysql5.5编码_Ubuntu下MySQL5.5编码设置
- Log4cpp 安装和使用
- 将HaneWin DHCP 注册为服务
- C++“准”标准库Boost学习指南(3):Boost.Utility
- 决定使用JBPM3、JBPM4、Drools Folw 还是等待JBPM5?
- Qt开发环境下载和安装
- Anroid通过设置“自启动管理”让应用被杀死也能收到推送消息
- react 微信公众平台实现支付功能
- 英文歌曲:my heart will go on(我心永恒)
- 【LaTex】常用特殊符号对应表