Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1404566
  • 博文数量: 556
  • 博客积分: 12626
  • 博客等级: 上将
  • 技术积分: 5799
  • 用 户 组: 普通用户
  • 注册时间: 2006-01-11 15:56
个人简介

从事IT基础架构多年,发现自己原来更合适去当老师……喜欢关注新鲜事物,不仅限于IT领域。

文章分类

全部博文(556)

文章存档

2019年(6)

2018年(15)

2017年(17)

2016年(11)

2015年(2)

2014年(2)

2013年(36)

2012年(54)

2011年(100)

2010年(41)

2009年(72)

2008年(14)

2007年(82)

2006年(104)

分类:

2007-07-03 15:20:48

下面是IBM对aix系统大内存页支持的介绍,转发过来,内容比较老,不过用处挺大:

在IBM pSeries690系统中使用的POWER4TM处理器支持两种形式的内存页。

1,概要
在IBM pSeries690系统中使用的POWER4TM处理器支持两种形式的内存页。除传统POWER架构的4K内存页外,同时支持新的16MB的大内存页。运行于POWER架构的AIX 5LTM版本5.1,需安装系统补丁02,才能支持16M大小的内存页。这篇文章主要介绍AIX操作系统对大内存页的支持,及客户如何配置、使用大内存页,应用程序如何申请大内存页。

2,基本知识介绍
大内存页的设计使用,起初是为了提高高性能计算应用程序的性能。对一些内存敏感型的应用,使用大内存页也可以提高性能。使用大内存页的性能提高,归功于TLB操作的失误率降低,提高了内存的预取能力。

POWER4大内存页架构要求,在同一个256M内存段中的所有虚拟内存页都是同样的大小。AIX 使用这种架构支持混合模式的进程模型,在一个进程中,有些内存段支持4KB的内存页,而另外一些内存段则支持16MB的内存页。应用可以请求其堆栈段支持大内存页,也可以请求共享内存段支持大内存页,在一个进程中的其他内存段支持4KB的内存页。

AIX大内存页支持32位和64位的应用程序,32位和64位的AIX核心都支持大内存页的使用。

AIX分别维护4KB和16MB大小的物理内存池,系统管理员可以通过vmtune命令指定16MB的内存池的物理内存大小,这些指定数量的物理内存将在系统启动时分配给16MB的内存池,剩余的物理内存将使用4KB的内存页。16MB的内存池的数量是固定的,并且只有在系统重新启动时才会改变。

AIX将大内存页视为固定内存(pinned memory),对大内存页AIX并不提供换页功能。大内存页支持的应用程序,其数据将保留在内存中直至程序运行结束。安全的控制策略将阻止未赋权的应用使用大内存页,这可以防止未赋权的应用使用大内存页的物理内存,同时也防止未赋权用户从他们的应用中使用大内存页。

3,使用大内存页的应用程序
应用程序可以通过两种方式使用大内存页:
1) 请求大内存页支持其数据段和堆栈段
2) 请求共享内存段支持大内存页

3.1 数据段和堆栈段使用大内存页
应用程序可以请求其初始化的程序数据、位初始化的程序数据(BSS)和堆栈段使用大内存页,
可以有两种方法请求大内存页支持应用程序的数据/堆栈段:
1) 标示可执行文件使用大内存页
2) 设置环境变量请求使用大内存页
应用程序大内存页的数据/堆栈段的使用是在程序运行时建立的,程序运行后不能在两种模式间切换,如果使用fork()创建进程,子进程可以继承大内存页的使用。

3.1.1 标示执行程序使用大内存页
在可执行程序的XCOFF结构中增加了一个新的标示表明程序将使用大内存页支持其数据/堆栈段。这个标示可以在程序链接时设置,相应的ld的对应参数为-blpdata,也可以直接使用命令ldedit在可执行程序中设置,如下:
ldedit -blpdata executed_file_name
相反,如果我们不想使用大内存页,也可以使用ldedit命令清除此标示,如下:
ldedit -bnolpdata executed_file_name

3.1.2 使用环境变量标示使用大内存页
系统提供了相应的环境变量,允许用户自主设置,标示相应应用的数据/堆栈段使用大内存页。
环境变量的优先级高于程序XCOFF结构中的标示,对应的环境变量为LDR_CNTRL。
LDR_CNTRL环境变量的设置如下:
1) LDR_CNTRL=LARGE_PAGE_DATA=Y
指定程序的数据/堆栈段使用大内存页,等同于-blpdata参数项

2) LDR_CNTRL=LARGE_PAGE_DATA=N
指定程序的数据/堆栈段不能使用大内存页,此项设置的优先级高于可执行程序XCOFF结构中的大内存页标示

3) LDR_CNTRL=LARGE_PAGE_DATA=M
指定程序的数据/堆栈段强制使用大内存页如果LDR_CNTRL环境变量使用多组值,使用@符号分割,例如:
LDR_CNTRL=MAXDATA=0X80000000@LARGE_PAGE_DATA=Y
表示大内存页同maxdata项同时使用。
另外,应当注意,大内存页的使用可以提高应用的性能,但这并不一定是,对某些应用也可能会使得相反。性能测试表明,当大量的shell脚本,或者小,短运行应用被调用时,此环境变量的设置,将会应起显著的性能损失。测试表明当指定大内存页的环境变量时,脚本程序的执行次数增加超过10倍。
所以,建议用户在设定此环境变量时应针对指定的应用程序。

3.1.3 顾问(advisory)模式和强制(mandatory)模式
应用程序可以指明其数据/堆栈段使用大内存页,或者在顾问模式下,或者在强制模式下。在顾问模式下,只有以下条件都满足时,应用程序才可能使用大内存页方式:
1) 用户ID被赋权使用大内存页
2) 运行系统具有POWER4大内存页架构特点
3) 用户定义了大内存页的内存池
4) 使用大内存页的内存池有足够的内存页支持应用
如果以上的条件都满足,则应用程序将采用大内存页的方式,不然,应用程序的数据/ 堆栈段则采用传统的4KB大小页面。
在顾问模式下,应用程序可以使部分堆栈段使用大内存页,而另一些堆栈段使用4KB的内存页。当没有足够多大内存页的内存段支持时,4KB的内存页用于支持这些内存段。
在强制模式下,如果应用程序请求的堆栈段没有足够的大内存页支持,应用将终止。使用强制模式,用户必须监控大内存页内存池的使用,以保证有足够的内存使用。

3.1.4 大内存页数据/堆栈段的完全支持
POWER4的设计架构要求在同一个内存段的所有的内存页必须是通用的大小。当应用请求大内存页的堆栈段时,AIX支持整个内存段使用都是用大内存页,即使在新的内存段中只有几个字节的内存请求,整个的内存段也支持。当应用增加内存使用时,这样做可以保证应用不会被终止。

3.2 使用大内存页支持共享内存段
AIX使用POWER4大内存页的架构设计提供共享内存段的大内存页支持,应用程序可以通过shmget() 函数获得大内存页的支持,其调用标示为LHM_LGPAGE和LHM_PIN。
支持大内存页的共享内存和大内存页的数据/堆栈段的物理内存则来自于大内存页的物理内存池。
用户必须规划其大内存页的物理内存池,以保证有足够的大内存页供共享内存和数据/堆栈段的大内存页使用。

3.3 大内存页的安全策略
AIX提供一种安全机制控制非超级用户使用大内存页的物理内存。大内存页的物理内存池时固定大小的,为固定内存的系统资源(pinned memory)。这种安全机制阻止为赋权用户使用大内存页的内存池,同时也控制相应用户或者应用的内存使用。
非超级用户如果要使用大内存页内存,必须具有CAP_BYPASS_RAC_VMM属性,系统管理员可以改变用户的属性,增加或删除用户属性项,例如,以下命令将CAP_BYPASS_RAC_VMM属性赋给用户lpuserid
chuser capabilities=CAP_BYPASS_RAC_VMM, CAP_PROPAGATE lpuserid

3.4 配置系统使用大内存页
要使用大内存页,用户必须配置系统相关的参数,用户必须指定支持大内存页的物理内存的大小,确省情况下,系统不支持大内存页的内存使用,如要配置使用大内存页,使用vmtune或vmo命令配置支持大内存页的物理内存池。举例如下,配置4GB的大内存页物理内存池,使用命令vmtune,如下:
vmtune -g 16777216 -L 256
参数分析:
-g指定大内存页的大小,单位为字节,允许的值为16777215(16MB)或者268435456(256MB)
-L指定-g参数指定大小的内存块数
要是配置的参数起作用,用户必须重新创建引导介质,并且重新启动机器,新的配置才生效。
用户如果要共享内存页使用大内存页,在调用shmget()系统调用时必须使用SHM_PIN标示符。命令vmtune可以使SHM_PIN参数起作用,参数SHM_PIN在机器重新启动后将失效,如果要求此参数在启动后即生效,可以将如下命令添加到/etc/inittab文件中,如下:
vmtune -S 1

4,决定大内存页的内存池的注意事项
1) 申请支持大内存页的物理内存池不再支持4KB的内存页,如果申请过多的物理内存为大内存页的空间,而没有足够的物理内存给4KB的内存页使用,将会造成系统性能降低。系统引导过程中,AIX为4KB大小的内存页保留足够的物理内存以保证系统可以正常启动,然而,如果没有足够的物理内存支持4KB的内存页,系统也可能会在启动后失败。
2) 使用大内存页的内存池是固定的,即使在启动后也保持不变,如果,修改了使用大内存页的内存池,则需重新启动机器
3) 大内存页只是提供明确请求使用的应用使用,如果应用没有请求大内存页支持,支持大内存页的内存池不是必需的
4) 顾问模式(advisory mode)下,如果大内存页的使用条件满足,则使用大内存页,反之则使用传统的4KB的内存页
5) 强制模式(mandatory mode)下,如果大内存页的条件不满足,则应用失败

5,大内存页的使用建议
对某些特殊应用,大内存页是系统性能提高的特殊方法,对普通的应用,并不推荐使用。大内存页的使用主要是针对这些大量使用内存的应用,有些应用使用大内存页反而会出现性能下降,对大量使用fork()的应用,如shell脚本,使用大内存页,会较明显的出现性能下降。
考虑到系统全面的性能,可以在系统中保留大内存页,对某些特殊的应用可以使用大内存页,但应当考虑到,由于大内存页的内存池的存在会降低4KB的内存页的使用空间,潜在的会影响到系统的性能。

备注
大内存页的两种使用模式,英文为advisory mode和mandatory mode在此权且译为顾问模式和强制模式,不当之处,敬请执教。

阅读(2677) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~