博客年龄:17年6个月
访问:?
文章:291篇

个人描述

姓名:丹臣 职业:DBA 公司:TAOBAO Mail:zhaolinjnu(at)163.com MSN:echo_lin@hotmail.com 微博http://twitter.com/zhaolinjnu

管理AIX操作系统的虚拟内存

分类:AIX | 标签: vmo  
2007-07-01 21:40 阅读(?)评论(0)

Unix操作系统使用过程中,其中一项重要的资源管理就是内存的管理。可以使用 vmo 命令来配置虚拟内存管理器调整参数,根据系统的特点,来进行相应的优化。此命令设置或显示所有虚拟内存管理器调整参数的当前值或下一个引导值。还可以用此命令进行永久性更改,或将更改推迟到下一次重新引导之后生效。此命令是设置参数还是显示参数,要由所带标志来决定。带 -o 标志的话,两个操作都执行。它既可以显示参数的值,也可以为参数设置新值。

如果在修改这些参数前,想查看这些参数的值,则可以用下面的命令:

vmo -L

虚拟内存管理器(VMM)维护一个空闲实存页面帧的列表。这些页面帧可用于维持满足一个缺页故障所需的虚拟内存页。当空闲列表上的页面数低于 minfree 参数所指定的数值时, VMM 开始取走页面以加入空闲列表。VMM 继续取走页面直到空闲列表至少达到 maxfree 参数所指定的页面数。

vmo -p -o minfree=120*CPU个数

vmo -p -o maxfree=128*CPU个数

如果内存中的文件页面(永久页面)数少于 minperm% 参数所指定的数值,VMM 就会从计算页面或者文件页面取走帧,而不管重调页率。如果文件页面数大于 maxperm% 参数所指定的数值,VMM 就只从文件页面中取走帧。如果介于二者之间,正常情况下 VMM 只取走文件页面,但是如果文件页面的重调页率大于计算页面的重调页率,计算页面也会被取走。大家注意maxperm%是控制JFS文件系统所用到的内存,而maxclient%是控制JFS2文件系统所用到的内存.

vmo -p -o minperm%=5

vmo -p -o maxperm%=10

vmo -p -o maxclient%=10

也可以修改用于判断何时系统耗尽调页空间的阈值。npswarn 参数指定调页空间可用页数值,从该数值系统开始警告进程调页空间不足。npskill 参数指定调页空间可用页面数,从该数值系统开始杀死进程以释放调页空间。


AIX操作系统允许程序pin住内存,不让它的页被交换出去,比如说ORACLE数据库的SGA。要让ORACLE的内存页不交换出去,那就要操作系统级设置参数

vmo -p -o v_pinshm=1

还有一个重要的参数是设置操作系统允许pin住的内存占物理内存的百分比,在默认情况下,该参数的值为80%,如果你想pin住的内存比物理内存的80%低,那么就不要修改此默认值。如果你想修改此默认值,可以用如下命令:

vmo -p -o maxpin%=85

修改此参数要格外的小心,一定要根据应用的需求来设置。大家可以设想,一个正常的操作系统的运作,不管是Unix,还是Linux,都需要发生页交换,这样才能保证系统可以使用比物理内存更大的虚拟内存。在极端情况下,比如说设置此参数为100,那么我们想要的是操作系统不能发生页交换,那么只要进程还在工作,那么它所使用的内存就一点都不能被交换出去(释放物理内存),这样设置带来最坏的结果是其它程序根本无法运行,比如说你要重启操作系统的的命令:

shutdown -Fr

都会遇到内存不足的错误,而导致命令无法执行,此时的操作系统也Hung在那里。当然,这举的是极端情况,实际上不用100%,比如说90%就会出现那种情况了,这里还有另外一个前提就是你的应用程序实际pin住的内存确实比较多的情况下,比如说ORACLE的SGA开的太大。那么我们如何正确设置ORACLE的SGA的大小了,它需要满足以下三个公式:

1.SGA < 整个系统物理内存的70%

2.SGA < 物理内存 * (maxpin% - 10)

3.系统实际pin住的内存页空间大小 < 物理内存 * (maxpin% - 5)

当maxpin%取默认值参数为80时,刚好第一个条件和第二个条件是等价的。还有这里要注意第三个条件:系统实际pin住的内存页,如果是ORACLE数据库服务器,可能我们通常会想到的是如何pin住的SGA的内存不被交换出去,其实操作系统所使用的一些内存页,比如说存放一些重要的管理数据结构的内存,像链表之类的东西,这些内存页也不能被交换出去的,所以这里是系统实际pin住的内存,那么如何查看当前系统实际pin住的内存页大小了,则可以通过如下命令:

testdbc:/>#svmon -G
               size      inuse       free        pin    virtual
memory     27394048   23648169    3745879   20472568   21014295
pg space   16777216      42224

               work       pers       clnt
pin        20472568          0          0
in use     21014294          0    2633875

PageSize   PoolSize      inuse       pgsp        pin    virtual
s   4 KB          -   23520073      42224   20368376   20886199
m  64 KB          -       8006          0       6512       8006

用20472568 * 4k/1024/1024 = 78.09G (这个可以从memory行,pin列直接读出来,也可以从最下面的PageSize两行计算出来 20368376 + 6512 * (64/4) = 20472568)

总之,要想系统安全,最好以上三个公式都要满足,maxpin%设置的值不要超过90,因为操作系统确实是需要交换的。

 

  最后修改于 2007-09-02 10:23    阅读(?)评论(0)
 
表  情:
加载中...
 

请各位遵纪守法并注意语言文明