【连载之九】NUMA与英特尔下一代Xeon处理器学习心得!~~

ozar1155 2009-02-01 03:32:11
加精
新春将至,在回家前再写一篇,续续前文。

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. 对于内存区域,使用内存区域策略函数设定其分配策略


摘自:英特尔软件网络博客
...全文
300 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ph215405357 2009-02-02
  • 打赏
  • 举报
回复
jf
nettman 2009-02-01
  • 打赏
  • 举报
回复
性能越来越高了,希望功耗和价格能够越来越低!

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧