原标题:如何判断物理内存是否够用
内存方面主要关注两个问题,第一:物理内存够不够用;第二:有没有内存泄露。
物理内存够不够用,关注的是物理内存与Paging Space之间的交换情况。内存有没有泄露,需要长期关注进程所占用的内存分页(包括物理内存中的分页和Paging Space中的分页)。
这一节介绍在验证物理内存够不够用的过程中,观察的几个指标。
这个指标是判定物理内存够不够用的最重要的指标。
物理内存够用的情况下,这两个指标都是0。
如果这两个指标长期不为0,则一定是物理内存不足。
如果偶尔不为0,不一定是物理内存不足,需要具体问题具体分析。例如:一台服务器上白天做交易,晚上做批处理。白天做交易的时候交易进程占用90%的物理内存,晚上做批处理的时候,批处理进程进入物理内存,并把交易进程的内存挤到Paging Space里面。到第二天白天的时候,交易进程进入物理内存,把批处理的进程挤到Paging
Space里面。这个场景下,物理内存是够用的,但每天有两个时间段PgspIn/Out不为0。
PageIn/PageOut是内存与文件系统之间的读写,是正常的内存缺页。CPU要数据,内存里面没有,就会产生内存缺页,然后去磁盘里面读这个页,对于程序来说,这是再正常不过的事,比如说,程序刚启动的时候,内存里面肯定是没有读进来什么数据。
物理内存不足的情况下,PgspIn/Out是长期非0
而此时,从内存利用率的角度也一定是有问题的,如图
有人看到内存使用率是99%,就认为内存用满了,并没有区分内存分页是什么类型,这样武断的说内存用满了是不科学的。在AIX上主要关注的是计算内存占整个物理内存的百分比,linux上主要关注的是active内存占整个物理内存的百分比。
从Nmon来看,简单来说,看MEMNEW中紫红色的这条线,就是计算内存的消耗。而黄色的部分(FScache)也就是读写文件的缓存,相当于非计算内存。
如上图,System%、Process%和FScache三者将内存占满是比较正常的情况,尽多占用内存是提升性能的有效途径,也是很多操作系统的设计理念。
类似的,在CPU使用中,一些场景也有尽多使用CPU的理念,比如银行业晚上跑批处理业务,就要尽多消耗CPU,以期用最少的时间把批处理跑完,不要影响第二天早上的开门营业。
测试过程中FScache不断上升也没关系
这个指标经常有人提到,但我从来没看过这个指标。
如果在某一场的测试当中,持续观察这个指标,发现这个指标是持续增长的,也能说明内存不足。如果不是连续观察,只能说明历史上有用到过Paging Space,至于现在有没有内存不足就不知道了。
现任中国人民银行清算总中心性能测试团队负责人,高级技术经理。具有Linux/FreeBSD/Windows/MacOS/iOS等平台的开发经验,并在自动化测试、性能测试方面有深入的研究,对银行业系统(z/OS、AIX、DB2、Oracle、WAS、MQ等),尤其是虚拟化趋势下银行业系统的性能测试、问题分析、性能调优有丰富的经验。
}