免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2165 | 回复: 0
打印 上一主题 下一主题

[小机硬件] AIX对大内存页的支持 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-25 10:44 |只看该作者 |倒序浏览

在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在此权且译为顾问模式和强制模式,不当之处,敬请执教。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/97017/showart_1943851.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP