测试硬盘读
hdparm -t --direct /dev/vdb1
vmstat
介绍
vmstat(VirtualMeomoryStatistics,虚拟内存统计)是Linux中监控内存的常用工具,可对操作系统的虚拟内存、进程、CPU等的整体情况进行监视。
在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。)plpp交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)
参数解读
Process(进程)
r:运行队列中进程数量(注意:这个值也可以判断是否需要增加CPU(比如长期大于1)
b:等待IO的进程数量
Memory(内存)
swpd:使用虚拟内存大小(注意:如果swpd的值不为0,但是Si,So的值长期为0,这种情况不会影响系统性能)
free:空闲物理内存大小
buff:用作缓冲的内存大小
cache:用作缓冲的内存大小(注意:如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件能被cache处,那么磁盘的IO bi会非常小)
Swap(虚拟内存)
si:每秒从交换区写到内存的大小,由磁盘调入内存
so:每秒写入交换区的内存大小,由内存调入磁盘
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。
如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能不会受到影响
IO(现在linux版本快的大小为1kb)
bi:每秒读取的块数
bo:每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超过1024k),能看到CPU的IO等待值也会越大
System(系统)
in:每秒中断数,包括时钟中断
cs:每秒上下文切换数
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大
CPU(以百分比表示)
us:用户进程执行的时间百分比(user time)
sy:内核系统进程执行时间百分比(system time)
wa:IO等待时间百分比
id:空闲时间百分比``
注意:us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50%的使用,那么我们就该考虑优化程序算法或者进行加速。
注意:sys的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因
注意:wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)
实际分析和解决方法
判断cpu瓶颈
r(run:运行队列正在执行进程数)和 b(block等待CPU资源的进程个数)。当r超过了CPU数目,就会出现CPU瓶颈了
在评估cpu的性能优劣时完全照搬网上说的几倍几倍是不准确的,不能只看top里的参数,还得你自己动手看看vmstat显示的run值和blocked值,当出现明 显较多的blocked的时候,就说明cpu产生了瓶颈。而top命令和uptime命令显示的负载均值,只能作为判断系统过去某个时间段的状态的参照, 与cpu的性能关系不大
查看cpu个数
[root@ss ~]# cat /proc/cpuinfo|grep processor|wc -l
当r值超过了CPU个数,就会出现CPU瓶颈,解决办法大体几种:
1. 最简单的就是增加CPU个数和核数
2. 通过调整任务执行时间,如大任务放到系统不繁忙的情况下进行执行,进尔平衡系统任务
3. 调整已有任务的优先级
注意:
vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。
但要注意的是,CPU 满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。
唯一能够确定CPU瓶颈的还是r(运行队列)的值。
cpu使用率
如果CPU的id(空闲率)长期低于10%,那么表示CPU的资源已经非常紧张,应该考虑进程优化或添加更多地CPU。
wa(等待IO)表示CPU因等待IO资源而被迫处于空闲状态,这时候的CPU并没有处于运算状态,而是被白白浪费了,所以“等待IO应该越小越好。
top命令和uptime命令显示的负载均值,只能作为判断系统过去某个时间段的状态的参照, 与cpu的性能关系不大。
