2、CPU的使用情况分析
a、类似任务管理器的top & htop
说到对CPU的性能分析,大家一定不会忘记windows下那个最熟悉的工具:任务管理器。
有了这个玩意儿,我们就可以看到CPU的利用率,以及每一个进程所占用的CPU资源。那在Linux下也有类似的工具,最出名的当然是top这个工具。
看起来是不是很windows的任务管理器很相似呢。在这个命令里,我们最关注的可能是这几样东东:
· load average:这里三个数字分别表示最近1分钟、5分钟和15分钟的负载。数值越高负载越重。一般要求最好不要超过cpu的核数。比如,单核就最好小于1。如果看到机器长期出于高于核数的情况,说明机器的cpu排队严重。
· cpu使用情况:这一行可以看出cpu的利用率、空闲等信息。如果按下数字键“1”,还可以看到每一个核的情况。
· 每一个进程的情况:这个能帮我们看清每一个进程的情况。如果想按照某种方式排序,只需要按下大写的字母“O”,即可选择排序。如果要看具体某个进程,可以运行的时候加上-p参数:top -p pid即可。
另一个工具,htop是一个改进型的,使用起来比top更方便。但大部分linux默认不会安装,可以使用yum或者apt-get安装即可使用。使用方法类似。
b、vmstat
vmstat是老王用的最多的命令之一。通过这个命令,能基本看出当前机器的运行状态和问题。
运行vmstat 1,就会每隔1秒显示出现在系统的状态,包括cpu的,内存的,io的等等信息。因为今天只是介绍cpu的,所以我们今天先介绍如何看cpu的情况。
· r值:这个值是一个很关键的cpu运行数据,表示在cpu运行队列中等待的进程数。如果这个值很大,则说明很多进程在排队等待执行。更说明现在cpu忙的很,压力山大。
· in和cs:这两个值分别代表中断次数和上下文切换次数。这两个值越大,代表系统在进行大量的进程切换。这说明我们的进程数(或者线程数)太大,导致系统不断的在切换进程,应该尽量减少进程或线程数量。任何切换都是有代价的!
· us、sy、id和wa:这四个值分别代表用户进程、系统进程、空闲和等待的cpu时间占比。us越高说明用户进程占用cpu越高、sy则代表系统进程占用。如果id很高,恭喜你,你的机器很闲;如果wa很高,则说明你的机器因为io很忙而造成cpu等待。
这个工具除了分析cpu以外,还可以分析内存和io。特别是io性能的分析,能帮助我们对io型的程序优化有极大帮助(等到我们讲io分析的时候,再详细的来讲)。
c、ps和pstree
说到cpu分析,不得不说ps这个命令。这个命令类似于top一样,可以将所有进程(或某一进程)的信息打印出来。
这个命令配合watch命令,可以达到跟top一样的效果。比如:watch -n 1 "ps axu | grep java",就能看到如下效果:
每隔一秒中,就会更新一下名字叫java的进程的信息。
而pstree则可以打印出进程树的信息: