互联网服务AIX非计算内存

aix非计算内存占用过高案例一则, 对aix comp 和nocomp 的疑问?

两台小型机组成的RAC环境,在用topas查看资源使用情况时,发现一台机器的非计算内存占用过高:
MEMORY Real,MB 40959 %Comp 71.6 %Noncomp 20.4 %Client 20.4
而另外一台机器的%Noncomp 只有2.4
这主要是jfs2文件系统的cache,可以用svmon -S的输出来看,是哪些文件:
p5a@/#svmon -S
Vsid Esid Type Description PSize Inuse Pin Pgsp Virtual
63ad8a - clnt /dev/a1orabaklv:37 s 233857 0 - -
3110c0 - clnt /dev/a1orabaklv:54 s 219973 0 - -
728dce - clnt /dev/a1orabaklv:69 s 216952 0 - -
e303c - clnt /dev/a1orabaklv:68 s 214549 0 - -
677599 - clnt /dev/a1orabaklv:70 s 113060 0 - -
2c32b4 - clnt /dev/a1orabaklv:71 s 103260 0 - -
3678dd - clnt /dev/a1orabaklv:33 s 95075 0 - -
6f6db9 - clnt /dev/a1orabaklv:59 s 81645 0 - -
d003 - work kernel heap s 65536 0 0 65536
0 - work kernel segment (lgpg_vsid=0) L 16 16 0 16
3708d8 - work s 65520 0 0 65520
188866 - work s 65520 0 8 65520
可以看到是/dev/a1orabaklv这个LV占用了大量的内存,每个文件大概900M,查看mount:
p5a@/#mount
node mounted mounted over vfs date options
-------- --------------- --------------- ------ ------------ ---------------
/dev/a1orabaklv /orabak jfs2 Jul 12 14:41 rw,log=/dev/a1bjfs2log
p5b@/#mount
node mounted mounted over vfs date options
-------- --------------- --------------- ------ ------------ ---------------
/dev/backuplv /orabak jfs2 Jul 12 20:34 rw,dio,log=/dev/backj2loglv
可以看到区别在于,p5a上/orabak没有设置dio属性,而p5b机器上有,可以考虑把p5a上的/orabak增加dio属性,用smit chjfs2选择/orabak,在mount options中手工填写dio,然后umount /orabak再mount /orabak就OK了。再查看%Noncomp 已经降到3.1,而mount命令查看/orabak文件系统已经增加了dio属性:

/dev/a1orabaklv /orabak jfs2 Aug 20 10:59 rw,dio,log=/dev/a1bjfs2log


原文地址:http://www.banping.com/2009/07/15/aix_noncomp/


疑问: 我对计算内存和非计算内存还是朦朦胧胧,  计算内存过高有什么影响,非计算内存过高又有什么影响?
加了个dio 为啥就低了?
参与10

8同行回答

wangqlwangql系统工程师NULL
非计算内存会缓存文件系统的缓存,以用来提高io的性能,因为内存终究要比磁盘快很多。对于oracle来说,它有自己的内存机制,如SGA,PGA等等,如果使用文件系统类型的话,数据要进行两次缓存(sga层一次,文件系统一次),这是多此一举的,从某种程度上讲,而且反而会拖慢io的性能。因此,使用裸设备...显示全部
非计算内存会缓存文件系统的缓存,以用来提高io的性能,因为内存终究要比磁盘快很多。
对于oracle来说,它有自己的内存机制,如SGA,PGA等等,如果使用文件系统类型的话,数据要进行两次缓存(sga层一次,文件系统一次),这是多此一举的,从某种程度上讲,而且反而会拖慢io的性能。因此,使用裸设备或者asm类型的数据库存储方式(数据库直接操作磁盘,缓存机制由oracle自己实现,如sga),在性能上会比文件系统类型的要有显著的提高。

dio(还有个cio)就是关闭了文件系统需要在内存中cache的一个功能,用起来感觉跟裸设备差不多。所以,你加了这个参数会发现非计算内存有下降,在不考虑其他应用的io问题情况下,用topas或者vmstat等参数会发现wio也会有所下降。收起
IT咨询服务 · 2012-02-13
浏览6554
wangf15wangf15技术经理长虹佳华
看了上面各位的介绍,那是不是像上面仁兄写的,不用VMM能提高oracle的性能呢?显示全部
看了上面各位的介绍,那是不是像上面仁兄写的,不用VMM能提高oracle的性能呢?收起
互联网服务 · 2012-02-02
浏览6068
jnrainjnrain软件开发工程师新明星
direct io,不用buffer cahce的,所以CP什么的操作就不会用到非计算内存我记得orain的书上写过非计算内存是文件内存,当打开的文件关闭,这部分内存就会释放。如果用DIO,不用通过cache的话,自然文件内存也不会用到了。不过用了DIO后,syncd就没用了,也不存在dirty缓存了,而是直接IO操...显示全部
direct io,不用buffer cahce的,所以CP什么的操作就不会用到非计算内存
我记得orain的书上写过非计算内存是文件内存,当打开的文件关闭,这部分内存就会释放。
如果用DIO,不用通过cache的话,自然文件内存也不会用到了。
不过用了DIO后,syncd就没用了,也不存在dirty缓存了,而是直接IO操作了,这个对性能的影响应该挺大把!收起
互联网服务 · 2011-12-08
浏览6319
wolaos123wolaos123项目经理澳美制药
那会不会降低文件系统性能?skyzqq 发表于 2011-12-7 18:51    看你的文件系统用来做什么吧,对数据库来讲: 启用DIO后数据库不再使用文件系统cache就直接写到文件系统里,因为本身数据库就有自己的cache和buffer,绕开这个后能一定程度上提高数据库的性能。这是我的理...显示全部
那会不会降低文件系统性能?
skyzqq 发表于 2011-12-7 18:51



   看你的文件系统用来做什么吧,对数据库来讲: 启用DIO后数据库不再使用文件系统cache就直接写到文件系统里,因为本身数据库就有自己的cache和buffer,绕开这个后能一定程度上提高数据库的性能。

这是我的理解,不妥之处请指正。收起
医院 · 2011-12-07
浏览6518
skyzqqskyzqq系统运维工程师中国联通河南省分公司
那会不会降低文件系统性能?显示全部
那会不会降低文件系统性能?收起
电信运营商 · 2011-12-07
浏览6319
myciciymyciciyIT顾问某金融科技公司
Direct IO(DIO)屏蔽了AIX虚拟内存管理程序(VMM)对文件的内存缓冲功能,它不但减少了CPU的负载,同时也避免了由于缓存文件页面所造成的内存空间紧张,进而引发内存页面替换操作。显示全部
Direct IO(DIO)屏蔽了AIX虚拟内存管理程序(VMM)对文件的内存缓冲功能,它不但减少了CPU的负载,同时也避免了由于缓存文件页面所造成的内存空间紧张,进而引发内存页面替换操作。收起
银行 · 2011-12-07
浏览6252
myciciymyciciyIT顾问某金融科技公司
计算内存过高 会导致内存不够用 内存不够开始用ps ps 不够了就可能宕机显示全部
计算内存过高 会导致内存不够用 内存不够开始用ps ps 不够了就可能宕机收起
银行 · 2011-12-07
浏览6268
午夜幽魂午夜幽魂系统运维工程师计算机有限公司
这个还真不太清楚了,求高人指点,学习学习显示全部
这个还真不太清楚了,求高人指点,学习学习收起
系统集成 · 2011-12-07
浏览6208

提问者

huyangg
技术经理hgg
擅长领域: 网卡网络服务器

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2011-12-06
  • 关注会员:2 人
  • 问题浏览:25271
  • 最近回答:2012-02-13
  • X社区推广