注册
登录
首页
网站近况
会员
标签
统计
帮助
LUPA论坛
»
内核问题答疑
» 请教陈老师关于node和zone
‹‹ 上一主题
|
下一主题 ››
发新话题
发布投票
发布商品
发布悬赏
发布活动
发布辩论
发布视频
打印
请教陈老师关于node和zone
本主题由 sanool 于 2007-10-19 10:20 加入精华
godmatrix
关注开源
个人空间
发短消息
加为好友
1
#
发表于 2007-10-16 21:09
只看该作者
请教陈老师关于node和zone
陈老师,你好!
物理内存中动态内存被划分为多个node,而每一个node又被划分为三个zone:ZONE_DMA, ZONE_NORMAL, ZONE_HIGHMEM,而这些zone的地址范围为0-16MB,16MB-896MB,896MB-。
我想请问的是动态内存中多个node中的这些zones,在内存中到底是怎么布局的?
UID
72349
帖子
16
精华
1
积分
250
阅读权限
20
在线时间
10 小时
注册时间
2007-10-12
最后登录
2008-1-3
查看详细资料
TOP
陈莉君
版主
个人空间
发短消息
加为好友
2
#
发表于 2007-10-18 10:06
只看该作者
1.一致存储结构(UMA)和非一致存储结构(NUMA)
在传统的计算机结构中,整个物理内存都是均匀一致的,CPU访问这个空间中的任何一个地址所需要的时间都相同,所以把这种内存称为“一致存储结构(Uniform Memory Architecture)”,简称UMA。可是,在一些新的系统结构中,特别是多CPU结构的系统中,物理存储空间在这方面的一致性却成了问题。这是因为,在多CPU结构中,系统中只有一条总线(例如,PCI总线),有多个CPU模块连接在系统总线上,每个CPU模块都有本地的物理内存,但是也可以通过系统总线访问其它CPU模块上的内存。另外,系统总线上还连接着一个公用的存储模块,所有的CPU模块都可以通过系统总线来访问它。因此,所有这些物理内存的地址可以互相连续而形成一个连续的物理地址空间。
显然,就某个特定的CPU而言,访问其本地的存储器速度是最快的,而穿过系统总线访问公用存储模块或其它CPU模块上的存储器就比较慢,而且还面临因可能的竞争而引起的不确定性。也就是说,在这样的系统中,其物理存储空间虽然地址连续,但因为所处“位置”不同而导致的存取速度不一致,所以称为“非一致存储结构(Non-Uniform Memory Architecture),简称NUMA。
事实上,严格意义上的UMA结构几乎不存在。就拿配置最简单的单CPU来说,其物理存储空间就包括了RAM、ROM(用于BIOS),还有图形卡上的静态RAM。但是,在UMA中,除主存RAM之外的存储器空间都很小,因此可以把它们放在特殊的地址上,在编程时加以特别注意就行,那么,可以认为以RAM为主体的主存是UMA结构。
由于NUMA的引入,就需要存储管理机制的支持,因此,Linux内核从2.4版本开始就提供了对NUMA的支持(作为一个编译可选项)。为了对NUMA进行描述,引入一个新的概念-“存储节点(或叫节点)”,把访问时间相同的存储空间就叫做一个“存储节点”。一般来说,连续的物理页面应该分配在相同的存储节点上。例如,如果CPU模块1要求分配5个页面,但是由于本模块上的存储空间已经不够,只能分配3个页面,那么此时,是把另外两个页面分配在其它CPU模块上呢,还是把5个页面干脆分配在一个模块上?显然,合理的分配方式因该是将这5个页面都分配在公用模块上。
Linux把物理内存划分为三个层次来管理:存储节点(Node)、管理区(Zone)和页面(Page),并用三个相应的数据结构来描述。
2. 管理区zone
为了对物理页面进行有效的管理,Linux又把物理页面划分为三个区:
• 专供DMA使用的ZONE_DMA区(小于16BM)
• 常规的ZONE_NORMAL区(大于16MB小于896MB)
• 内核不能直接映射的区ZONE_HIGME区(大于896MB)。
这里进一步说明为什么对DMA要单独设置管理区。首先,DMA使用的页面是磁盘I/O所需的,如果在页面的分配过程中,所有的页面全被分配完,那么页面及盘区的交换就无法进行了,这是操作系统决不允许出现的现象。另外,在i386CPU中,页式存储管理的硬件支持是在CPU内部实现的,而不像有些CPU那样由一个单独的MMU来提供,所以DMA对内存的访问不经过MMU提供的地址映射。这样,外部设备就要直接访问物理页面的地址。可是,有些外设(特别是插在ISA总线上的外设接口卡)在这方面往往有些限制,要求用于DMA的物理地址不能过高。另一方面,当DMA所需的缓冲区超过一个物理页面的大小时,就要求两个物理页面在物理上是连续的,但因为此时DMA控制器不能依靠CPU内部的MMU将连续的虚存页面映射到物理上也连续的页面上,因此,用于DMA的物理页面必须加以单独管理。
可以看出,在I386中,并没有多个zones
本帖最近评分记录
sanool
+10
2007-10-19 10:19
透析真谛,似拨云穿雾;共享智慧,如春风沐浴
http://www.kerneltravel.net
UID
26540
帖子
162
精华
1
积分
2456
阅读权限
100
在线时间
228 小时
注册时间
2006-11-9
最后登录
2008-9-8
查看详细资料
TOP
godmatrix
关注开源
个人空间
发短消息
加为好友
3
#
发表于 2007-10-18 21:06
只看该作者
明白了,谢谢陈老师详细的解答!
UID
72349
帖子
16
精华
1
积分
250
阅读权限
20
在线时间
10 小时
注册时间
2007-10-12
最后登录
2008-1-3
查看详细资料
TOP
chenrvmldd
关注开源
个人空间
发短消息
加为好友
4
#
发表于 2007-12-12 09:10
只看该作者
在UMA中事实上只有一个node,只有在涉及NUMA时才出现多个节点
UID
102673
帖子
7
精华
0
积分
94
阅读权限
20
在线时间
1 小时
注册时间
2007-12-12
最后登录
2007-12-15
查看详细资料
TOP
‹‹ 上一主题
|
下一主题 ››
控制面板首页
编辑个人资料
积分交易
积分记录
公众用户组
勋章
访问推广
基本概况
流量统计
客户软件
发帖量记录
版块排行
主题排行
发帖排行
积分排行
交易排行
在线时间
管理团队
管理统计