性能测试之:操作系统性能指标观测及分析

来源:互联网 发布:程序员节活动 编辑:程序博客网 时间:2024/06/06 02:41

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得到的结果才是应用程序用掉的内存,如果这个数字已经接近或超过总的内存数,那么内存成为瓶颈。如下图所示:

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

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

2. 现象:还没有开始性能测试,服务器的Load达到1以上,CPU 使用 user接近0sys有些情况下也接近0,有些情况下会达到10%以上,用vmstat查看,r(运行队列中的等待进程数)=0b(等待I/O的进程数)>0

原因:产生这种现象的原因很多,比如,操作系统中存在状态为DUninterruptible sleep)或状态为ZZombie)的进程,这两种进程会把系统Load弄高(因为这两种状态的进程会滞留在CPU 运行队列中);或者系统对同一个目录mount了多次,会导致load升高,sys CPU>10%;一般都是跟I/O相关。

判断及解决方法:top或者ps afux一下,看看进程的状态;df一下看看是否有重复的mountvmstat查看一下;可以根据不同的情况采用不同的办法来解决,由于是测试环境,最简单有效的办法就是reboot。不过有时reboot前也要做一些工作,比如已经mountNFS服务端上的一个目录,并写入了fstab中,而NFS服务端关闭了,那么需要把fstab中的相应内容删除后再reboot,否则reboot后仍然会自动mount

原创粉丝点击