Linux性能指标分析

1.       对于Linux系统来说,Free Mem很少并不一定代表内存不足,成为瓶颈。实际上这是由于LINUX的内存管理机制造成的,LINUX会把Free的内存(完全没使用过的内存)尽可能的利用起来,作为buffers/cached(当有进程申请内存时,如果没Free,会把buffers/cached分配给进程),以提高系统的性能,尤其是在有大量I/O的情况下,增大buffers/cached会很大地提高I/O,可以提高多达20%的I/O性能,因此实际是LINUX的这一特性造成Free Mem几乎没有。当服务器存在大量I/O时,比较容易出现Free Mem几乎没有这样的情况。used-buffers-cached得到的结果才是应用程序用掉的内存,如果这个数字已经接近或超过总的内存数,那么内存成为瓶颈。如下:

[root@localhost ~]# free
             total       used       free     shared    buffers     cached
Mem:      16418140   16352412      65728          0     180048   13668900
-/+ buffers/cache:    2503464   13914676
Swap:      4192924        208    4192716

第二行(-/+ buffers/cache)的used是扣除了buffers/cache后的used内存,这才是真正的被应用程序使用掉的内存(包括内核级进程和用户级进程)。也可以通过swap来判断内存是否是瓶颈,如果swap大量used,并且频繁的发生swap in和swap out,那么内存一定是瓶颈;有时用free会看到少量的swap used,这并不影响性能,内存不是瓶颈。


PS:buffers和cached的区别。两者都是缓存,都是为了提高I/O的性能,不同的是buffers是块设备的缓存,而cached是字符设备的缓存,简单地说,buffers用来存储目录下面有什么内容、什么权限等等,cached则存储文件的内容,例如,ls一下,可以发现buffers有明显增长(buffers其实一直在缓慢增长),而打开一个文件后,可以发现cached明显增长。


2. 现象:还没有开始性能测试,服务器的Load达到1以上,CPU 使用 user接近0sys有些情况下也接近0,有些情况下会达到10%以上,用vmstat查看,r(运行队列中的等待进程数)=0,b(等待I/O的进程数)>0
原因:产生这种现象的原因很多,比如,操作系统中存在状态为D(Uninterruptible sleep)或状态为Z(Zombie)的进程,这两种进程会把系统Load弄高(因为这两种状态的进程会滞留在CPU 运行队列中);或者系统对同一个目录mount了多次,会导致load升高,sys CPU>10%;一般都是跟I/O相关。
判断及解决方法:

        top或者ps afux一下,看看进程的状态;

        df一下看看是否有重复的mount;

        vmstat查看一下;

可以根据不同的情况采用不同的办法来解决,由于是测试环境,最简单有效的办法就是reboot。不过有时reboot前也要做一些工作,比如已经mount了NFS服务端上的一个目录,并写入了fstab中,而NFS服务端关闭了,那么需要把fstab中的相应内容删除后再reboot,否则reboot后仍然会自动mount。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值