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

作者: Bruce Chen 陈宇达 (Intel) (26 篇文章) 日期: 十二月 23, 2008 在 9:35 上午

下面介绍NUMA策略的实现方式和策略

在最新的通用操作系统, Windowslinux上, 都不同程度的提供了面向NUMA架构的系统控制和API支持。下面以linux为例,对该类接口进行说明。

 

Linux下的NUMA API

 

版本为2.5之后的linux内核在进程调度,内存管理等方面对NUMA系统做了大量优化。同时,基于2.6内核版本的各主要linux发行版,如RedhatSUSE等均包括了面向用户空间的numautils工具包,提供对NUMA系统内存策略的监控功能,并开放面向用户空间程序的API接口。该接口习惯上称为NUMA API

 

NUMA API主要任务是管理NUMA的内存策略。NUMA策略通过几个子系统的协同工作来实现。内核管理进程的内存分配机制以及特殊的内存映射。NUMA API通过新引入的3个内核系统调用来实现这一点。在用户空间中,NUMA API通过libnuma库提供了统一的接口供用户空间程序使用。相对于系统调用,libnuma接口更加清晰易用。同时NUMA API还提供了命令行工具numactlnumastat来帮助系统管理员实现进程级别的策略管理。

 

LinuxNUMA API支持四种内存分配策略:

 

  1. 缺省(default) -  总是在本地节点分配(分配在当前线程运行的节点上)
  2. 绑定(bind) -  分配到指定节点上
  3. 交织(interleave) -  在所有节点或者指定的节点上交织分配
  4. 优先(preferred) -  在指定节点上分配,失败则在其他节点上分配

 

绑定和优先的区别是,在指定节点上分配失败时(如无足够内存),绑定策略会报告分配失败,而优先策略会尝试在其他节点上进行分配。强制使用绑定有可能会导致前期的内存短缺,并引起大量换页。在libnuma库中,优先和绑定是组合在一起的。通过对线程调用uma_set_strict函数,可以在两种策略间切换。缺省的策略是更加普适的优先策略。

 

策略可以基于进程或内存区域设定。进程策略对整个进程内的内存分配都有效,而内存区域策略作用于指定的内存区域,其优先级比进程策略要高。

 

进程策略 作用于所有由内核分配的内存页,包括malloc, 系统调用中使用的内核级的分配以及文件缓冲区等。唯一的例外是,中断中分配的内存总是在当前节点中。当子进程Fork时,会继承父进程的进程策略。

 

内存区域策略 又称为VMA策略,它允许一个进程为自己地址空间里的一块内存设置策略。内存区域策略比进程策略具有更高的优先级。它的主要优点在于能够在分配发生前进行设置。目前,内存区策略只支持一部分内存机制,如:SYSV共享内存,shmemtmpfs文件映射,以及hugetlbfs文件系统。在共享内存段或文件映射被删除前,共享内存的区域策略会一直有效。

Linux系统提供命令行及编程API两级用户空间工具来对策略进行控制。

分类: 其他, 并行计算

 评论 (14)

2009年01月03日 14:58


SeaSun
谢谢分享,电子软件开发网上的介绍也不错
2009年01月03日 14:59


SeaSun
在我的网站上收录了,谢谢. 经典
2009年01月04日 09:55

Bruce Chen 陈宇达 (Intel)
总分:
2,800
状态分数:
2,300
棕带
谢谢!
2009年01月05日 21:39


dalu
不错,又长了知识
2009年01月06日 09:26

Bruce Chen 陈宇达 (Intel)
总分:
2,800
状态分数:
2,300
棕带
呵呵,多讨论多讨论,下一篇正在写
2009年01月06日 17:43


zhangling0913
写的不错
2009年01月06日 17:43


zhangling0913
学习了
2009年01月06日 19:55

Bruce Chen 陈宇达 (Intel)
总分:
2,800
状态分数:
2,300
棕带
多谢,互学互学
2009年01月08日 18:56


yitian
好阿,学学阿
2009年01月08日 23:15


勿忘我
不错哦,我各个来的
2009年01月11日 19:13


呵呵俄
sdfsfsfsdfsd
2009年01月11日 19:14


sd
wosd fsdjf sdf
sdfkjs
sldfs
fsd
fsjdflsd
2009年01月12日 10:51

Bruce Chen 陈宇达 (Intel)
总分:
2,800
状态分数:
2,300
棕带
打错了吧:-)
2009年01月12日 11:16

Bruce Chen 陈宇达 (Intel)
总分:
2,800
状态分数:
2,300
棕带
欢迎讨论!

 引用 (0)


 写评论  

欲获得技术支持,请访问软件支持页面.
姓名 (必填)*

电子邮件 (必填,不在本页面显示)*

您的 URL (可选)


评论*