NUMA与英特尔下一代Xeon处理器学习心得(9)

简介:
libnuma  -- NUMA策略的应用程序编程接口
 
尽管numactl能够用作进程级别的内存控制,但其缺点也很明显:分配策略作用于整个进程,无法指定到线程或者特定内存区域。Libnuma为更加精细的控制提供了API接口。
 
应用程序只需在代码中引用numa.h头文件并在连接时如下连接libnuma的共享库即可方便使用libnuma
 
#include <numa.h>
….
cc ... -lnuma
 
在开始使用NUMA API更改策略或分配内存之前 首先需要调用numa_available()函数。 之后则可以使用libnuma的接口对进程策略进行更改或分配内存。Libnuma库的函数包括以下几组:
 
1.     环境信息 – 包括一组用于获取系统内存和CPU拓扑信息的函数,如系统节点数目,特定节点的内存大小等等。
2.     进程策略 – 包括一组用于获取,设定和更改进程级策略的函数;
3.     内存区域策略 – 包括一组用于设定特定内存区域策略的函数;
4.     节点绑定 -  将线程绑定到指定节点或节点组的函数;
5.     分配函数 -  忽略当前进程策略,直接使用特定的策略进行分配的一组函数;
6.     其他辅助函数
 
通过使用这些接口,程序员可以非常灵活的配置程序内存分配的方式和策略, 以达到优化性能的目的。通常的基于NUMA的内存分配流程为:
1.     使用numa_available()判定系统是否支持NUMA
2.     使用进程策略函数定义进程的整体策略
3.     使用节点绑定函数合理绑定线程
4.     使用普通的分配函数(malloc)进行普通分配
5.     对于特定性能需求的代码使用NUMA分配函数做指定分配
6.     对于内存区域,使用内存区域策略函数设定其分配策略


本文转自Intel_ISN 51CTO博客,原文链接:http://blog.51cto.com/intelisn/130453,如需转载请自行联系原作者
相关文章
|
存储 边缘计算 固态存储
玄铁RISC-V处理器入门与实战-平头哥玄铁CPU IP-面向高性能领域CPU
玄铁RISC-V处理器入门与实战-平头哥玄铁CPU IP-
1464 0
|
存储 安全 物联网
玄铁RISC-V处理器入门与实战-平头哥玄铁CPU IP-面向低功耗领域CPU
玄铁RISC-V处理器入门与实战-平头哥玄铁CPU IP-
2580 0
|
人工智能 安全 大数据
第三代英特尔®至强®可扩展处理器:“X”王者归来
X是什么?每个人心中或许有不同的答案。 在数学方面,X代表着未知数;在坐标系统中常用来标识横坐标变量;在罗马数字里,Ⅹ代表十。当然还有一些时候,X表示无限,还有“目标”和“希望”的含义。 如果在计算领域,X也代表了x86架构,如今所有主流的计算机平台都基于x86架构而存在,这个X也不得不让我们想起x86架构的缔造者:英特尔。 提到英特尔,就无法不想到数据中心和服务器芯片市场,X是Xeon的首字母,英特尔®至强®可扩展处理器,为一大批互联网及企业级用户的数据中心带来了强劲的算力,也成就了英特尔在数据中心市场的霸主地位。
290 0
第三代英特尔®至强®可扩展处理器:“X”王者归来