您的位置:首页 > 运维架构 > Linux

Linux性能分析的前60000毫秒

2016-03-25 19:43 633 查看




Linux性能分析的前60000毫秒

为了解决性能问题,你登入了一台Linux服务器,在最开始的一分钟内需要查看什么?

在Netflix我们有一个庞大的EC2 Linux集群,还有非常多的性能分析工具来监控和调查它的性能。其中包括用于云监控的Atlas,用于实例按需分析的Vector。即使这些工具帮助我们解决了大多数问题,我们有时还是得登入Linux实例,运行一些标准的Linux性能工具来解决问题。

在这篇文章里,Netflix Performance Engineering团队将使用居家常备的Linux标准命令行工具,演示在性能调查最开始的60秒里要干的事,


最开始的60秒......

运行下面10个命令,你可以在60秒内就对系统资源的使用情况和进程的运行状况有大体上的了解。无非是先查看错误信息和饱和指标,再看下资源的使用量。这里“饱和”的意思是,某项资源供不应求,已经造成了请求队列的堆积,或者延长了等待时间。
<code><span class="hljs-keyword" style="color: rgb(0, 0, 136);">uptime</span>
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">dmesg</span> | tail
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">vmstat</span> 1
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">mpstat</span> -P <span class="hljs-literal" style="color: rgb(0, 102, 102);">ALL</span> 1
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">pidstat</span> 1
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">iostat</span> -xz 1
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">free</span> -m
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">sar</span> -n DEV 1
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">sar</span> -n TCP,ETCP 1
<span class="hljs-keyword" style="color: rgb(0, 0, 136);">top</span></code>


有些命令需要你安装
sysstat
包。(译注:指mpstat, pidstat, iostat和sar,用包管理器直接安装sysstat即可) 这些命令所提供的指标能够帮助你实践USE方法:这是一种用于定位性能瓶颈的方法论。你可以以此检查所有资源(CPU,内存,硬盘,等等)的使用量,是否饱和,以及是否存在错误。同时请留意上一次检查正常的时刻,这将帮助你减少待分析的对象,并指明调查的方向。(译注:USE方法,就是检查每一项资源的使用量(utilization)、饱和(saturation)、错误(error))

接下来的章节里我们将结合实际例子讲解这些命令。如果你想了解更多的相关信息,请查看它们的man page。


1. uptime

<code>$ <span class="hljs-tag">uptime</span>
23<span class="hljs-pseudo">:51</span><span class="hljs-pseudo">:26</span> <span class="hljs-tag">up</span> 21<span class="hljs-pseudo">:31</span>,  1 <span class="hljs-tag">user</span>,  <span class="hljs-tag">load</span> <span class="hljs-tag">average</span>: 30<span class="hljs-class" style="color: rgb(155, 112, 63);">.02</span>, 26<span class="hljs-class" style="color: rgb(155, 112, 63);">.43</span>, 19<span class="hljs-class" style="color: rgb(155, 112, 63);">.02</span></code>


这个命令显示了要运行的任务(进程)数,通过它能够快速了解系统的平均负载。在Linux上,这些数值既包括正在或准备运行在CPU上的进程,也包括阻塞在uninterruptible I/O(通常是磁盘I/O)上的进程。它展示了资源负载(或需求)的大致情况,不过进一步的解读还有待其它工具的协助。对它的具体数值不用太较真。

最右的三个数值分别是1分钟、5分钟、15分钟系统负载的移动平均值。它们共同展现了负载随时间变动的情况。举个例子,假设你被要求去检查一个出了问题的服务器,而它最近1分钟的负载远远低于15分钟的负载,那么你很可能已经扑了个空。

在上面的例子中,负载均值最近呈上升态势,其中1分钟值高达30,而15分钟值仅有19。这种现象有许多种解释,很有可能是对CPU的争用;该系列的第3个和第4个命令——
vmstat
mpstat
——可以帮助我们进一步确定问题所在。


2. dmesg | tail

<code>$ dmesg | tail
[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0
[...]
[1880957.563400] Out of memory: <span class="hljs-operator"><span class="hljs-keyword" style="color: rgb(0, 0, 136);">Kill</span> process <span class="hljs-number" style="color: rgb(0, 102, 102);">18694</span> (perl) score <span class="hljs-number" style="color: rgb(0, 102, 102);">246</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136);">or</span> sacrifice child
[<span class="hljs-number" style="color: rgb(0, 102, 102);">1880957.563408</span>] Killed process <span class="hljs-number" style="color: rgb(0, 102, 102);">18694</span> (perl) total-vm:<span class="hljs-number" style="color: rgb(0, 102, 102);">1972392</span>kB, anon-rss:<span class="hljs-number" style="color: rgb(0, 102, 102);">1953348</span>kB, file-rss:<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>kB
[<span class="hljs-number" style="color: rgb(0, 102, 102);">2320864.954447</span>] TCP: Possible SYN flooding <span class="hljs-keyword" style="color: rgb(0, 0, 136);">on</span> port <span class="hljs-number" style="color: rgb(0, 102, 102);">7001.</span> Dropping request.  <span class="hljs-keyword" style="color: rgb(0, 0, 136);">Check</span> SNMP counters.</span></code>


这个命令显示了最新的10个系统信息,如果有的话。注意会导致性能问题的错误信息。上面的例子里就包括对过多占用内存的某进程的死刑判决,还有丢弃TCP请求的公告。

不要漏了这一步!检查
dmesg
总是值得的。


3. vmstat 1

<code>$ vmstat 1
procs <span class="hljs-comment" style="color: rgb(136, 0, 0);">---------memory---------- ---swap-- -----io---- -system-- ------cpu-----</span>
r  b swpd   free   buff  <span class="hljs-operator"><span class="hljs-keyword" style="color: rgb(0, 0, 136);">cache</span>   si   so    bi    bo   <span class="hljs-keyword" style="color: rgb(0, 0, 136);">in</span>   cs us sy id wa st
<span class="hljs-number" style="color: rgb(0, 102, 102);">34</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">200889792</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">73708</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">591828</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">5</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">6</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">10</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">96</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">3</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">200889920</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">73708</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">591860</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">592</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">13284</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">4282</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">98</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">200890112</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">73708</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">591860</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">9501</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">2154</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">99</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">200889568</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">73712</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">591856</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">48</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">11900</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">2459</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">99</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">200890208</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">73712</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">591860</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">15898</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">4840</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">98</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>
^C</span></code>


vmstat(8)
,是“virtual memory stat”的简称,几十年前就已经包括在BSD套件之中,一直以来都是居家常备的工具。它会逐行输出服务器关键数据的统计结果。

通过指定1作为vmstat的输入参数,它会输出每一秒内的统计结果。(在我们当前使用的)vmstat输出的第一行数据是从启动到现在的平均数据,而不是前一秒的数据。所以我们可以跳过第一行,看看后面几行的情况。

检查下面各列:

r:等待CPU的进程数。该指标能更好地判定CPU是否饱和,因为它不包括I/O。简单地说,r值高于CPU数时就意味着饱和。

free:空闲的内存千字节数。如果你数不清有多少位,就说明系统内存是充足的。接下来要讲到的第7个命令,
free -m
,能够更清楚地说明空闲内存的状态。

si,so:Swap-ins和Swap-outs。如果它们不为零,意味着内存已经不足,开始动用交换空间的存粮了。

us,sy,id,wa,st:它们是所有CPU的使用百分比。它们分别表示user time,system time(处于内核态的时间),idle,wait I/O和steal time(被其它租户,或者是租户自己的Xen隔离设备驱动域(isolated driver domain),所占用的时间)。

通过相加us和sy的百分比,你可以确定CPU是否处于忙碌状态。一个持续不变的wait I/O意味着瓶颈在硬盘上,这种情况往往伴随着CPU的空闲,因为任务都卡在磁盘I/O上了。你可以把wait I/O当作CPU空闲的另一种形式,它额外给出了CPU空闲的线索。

I/O处理同样会消耗系统时间。一个高于20%的平均系统时间,往往值得进一步发掘:也许系统花在I/O的时太长了。

在上面的例子中,CPU基本把时间花在用户态里面,意味着跑在上面的应用占用了大部分时间。此外,CPU平均使用率在90%之上。这不一定是个问题;检查下“r”列,看看是否饱和了。


4. mpstat -P ALL 1

<code>$ mpstat -P ALL <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>
Linux <span class="hljs-number" style="color: rgb(0, 102, 102);">3.13</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span>-generic (titanclusters-xxxxx)  <span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">14</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">2015</span>  _x86_64<span class="hljs-number" style="color: rgb(0, 102, 102);">_</span> (<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span> CPU)

<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">38</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span> PM  CPU   <span class="hljs-variable" style="color: rgb(102, 0, 102);">%usr</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%nice</span>   <span class="hljs-variable" style="color: rgb(102, 0, 102);">%sys</span> <span class="hljs-variable" style="color: rgb(102, 0, 102);">%iowait</span>   <span class="hljs-variable" style="color: rgb(102, 0, 102);">%irq</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%soft</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%steal</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%guest</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%gnice</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%idle</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">38</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">50</span> PM  all  <span class="hljs-number" style="color: rgb(0, 102, 102);">98.47</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">75</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">78</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">38</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">50</span> PM    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">96.04</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">2.97</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">99</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">38</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">50</span> PM    <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">97.00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">2.00</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">38</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">50</span> PM    <span class="hljs-number" style="color: rgb(0, 102, 102);">2</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">98.00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">38</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">50</span> PM    <span class="hljs-number" style="color: rgb(0, 102, 102);">3</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">96.97</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">3.03</span>
[...]</code>


这个命令显示每个CPU的时间使用百分比,你可以用它来检查CPU是否存在负载不均衡。单个过于忙碌的CPU可能意味着整个应用只有单个线程在工作。


5. pidstat 1

<code>$ pidstat <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>
Linux <span class="hljs-number" style="color: rgb(0, 102, 102);">3.13</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span>-generic (titanclusters-xxxxx)  <span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">14</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">2015</span>    _x86_64<span class="hljs-number" style="color: rgb(0, 102, 102);">_</span>    (<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span> CPU)

<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">02</span> PM   UID       PID    <span class="hljs-variable" style="color: rgb(102, 0, 102);">%usr</span> <span class="hljs-variable" style="color: rgb(102, 0, 102);">%system</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%guest</span>    <span class="hljs-variable" style="color: rgb(102, 0, 102);">%CPU</span>   CPU  Command
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span> PM     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>         <span class="hljs-number" style="color: rgb(0, 102, 102);">9</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">94</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">94</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>  rcuos/<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span> PM     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">4214</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">5.66</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">5.66</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">11.32</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">15</span>  mesos-slave
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span> PM     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">4354</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">94</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">94</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.89</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">8</span>  java
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span> PM     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">6521</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1596.23</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.89</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1598.11</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">27</span>  java
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span> PM     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">6564</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1571.70</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">7.55</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1579.25</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">28</span>  java
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span> PM <span class="hljs-number" style="color: rgb(0, 102, 102);">60004</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">60154</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">94</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">4.72</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">5.66</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">9</span>  pidstat

<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span> PM   UID       PID    <span class="hljs-variable" style="color: rgb(102, 0, 102);">%usr</span> <span class="hljs-variable" style="color: rgb(102, 0, 102);">%system</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%guest</span>    <span class="hljs-variable" style="color: rgb(102, 0, 102);">%CPU</span>   CPU  Command
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">04</span> PM     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">4214</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">6.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">2.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">8.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">15</span>  mesos-slave
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">04</span> PM     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">6521</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1590.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1591.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">27</span>  java
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">04</span> PM     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">6564</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1573.00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">10.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1583.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">28</span>  java
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">04</span> PM   <span class="hljs-number" style="color: rgb(0, 102, 102);">108</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">6718</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  snmp-pass
<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">41</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">04</span> PM <span class="hljs-number" style="color: rgb(0, 102, 102);">60004</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">60154</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">4.00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">5.00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">9</span>  pidstat
^C</code>


pidstat
看上去就像
top
,不过
top
的输出会覆盖掉之前的输出,而
pidstat
的输出则添加在之前的输出的后面。这有利于观察数据随时间的变动情况,也便于把你看到的内容复制粘贴到调查报告中。

上面的例子表明,CPU主要消耗在两个java进程上。
%CPU
列是在各个CPU上的使用量的总和;
1591%
意味着java进程消耗了将近16个CPU。


6. iostat -xz 1

<code>$ iostat -xz <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>
Linux <span class="hljs-number" style="color: rgb(0, 102, 102);">3.13</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span>-generic (titanclusters-xxxxx)  <span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">14</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">2015</span>  _x86_64<span class="hljs-number" style="color: rgb(0, 102, 102);">_</span> (<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span> CPU)

avg-cpu:  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%user</span>   <span class="hljs-variable" style="color: rgb(102, 0, 102);">%nice</span> <span class="hljs-variable" style="color: rgb(102, 0, 102);">%system</span> <span class="hljs-variable" style="color: rgb(102, 0, 102);">%iowait</span>  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%steal</span>   <span class="hljs-variable" style="color: rgb(102, 0, 102);">%idle</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">73.96</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">3.73</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">06</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">22.21</span>

Device:   rrqm/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   wrqm/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>     r/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>     w/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>    rkB/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>    wkB/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span> avgrq-sz avgqu-sz   await r_await w_await  svctm  <span class="hljs-variable" style="color: rgb(102, 0, 102);">%util</span>
xvda        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">23</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">21</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">18</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">4.52</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">2.08</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">34.37</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">9.98</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">13.80</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">5.42</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">2.44</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.09
xvdb        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">01</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.02</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">8.94</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">127.97</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">598.53</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">145.79</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">43</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.78</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">28</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">25</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">25</span>
xvdc        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">01</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.02</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">8.86</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">127.79</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">595.94</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">146.50</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">45</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">1.82</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">30</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">27</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">26</span>
dm-<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">69</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">2.32</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">10.47</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">31.69</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">28.01</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">01</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">3.23</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">71</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">3.98</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">13</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">04</span>
dm-<span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">94</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">01</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">3.78</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">8.00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">33</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">345.84</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">04</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">346.81</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">01</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>
dm-<span class="hljs-number" style="color: rgb(0, 102, 102);">2</span>        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.09    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">1.35</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">36</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">22.50</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">2.55</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">23</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">5.62</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">1.78</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">03</span>
[...]
^C</code>


这个命令可以弄清块设备(磁盘)的状况,包括工作负载和处理性能。注意以下各项:

r/s,w/s,rkB/s,wkB/s:分别表示每秒设备读次数,写次数,读的KB数,写的KB数。它们描述了磁盘的工作负载。也许性能问题就是由过高的负载所造成的。

await:I/O平均时间,以毫秒作单位。它是应用中I/O处理所实际消耗的时间,因为其中既包括排队用时也包括处理用时。如果它比预期的大,就意味着设备饱和了,或者设备出了问题。

avgqu-sz:分配给设备的平均请求数。大于1表示设备已经饱和了。(不过有些设备可以并行处理请求,比如由多个磁盘组成的虚拟设备)

%util:设备使用率。这个值显示了设备每秒内工作时间的百分比,一般都处于高位。低于60%通常是低性能的表现(也可以从await中看出),不过这个得看设备的类型。接近100%通常意味着饱和。

如果某个存储设备是由多个物理磁盘组成的逻辑磁盘设备,100%的使用率可能只是意味着I/O占用

请牢记于心,disk I/O性能低不一定是个问题。应用的I/O往往是异步的(比如预读(read-ahead)和写缓冲(buffering for writes)),所以不一定会被阻塞并遭受延迟。


7. free -m

<code><span class="hljs-variable" style="color: rgb(102, 0, 102);">$ </span>free -m
total       used       free     shared    buffers     cached
<span class="hljs-constant">Mem</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span>        <span class="hljs-number" style="color: rgb(0, 102, 102);">245998</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">24545</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">221453</span>         <span class="hljs-number" style="color: rgb(0, 102, 102);">83</span>         <span class="hljs-number" style="color: rgb(0, 102, 102);">59</span>        <span class="hljs-number" style="color: rgb(0, 102, 102);">541</span>
-<span class="hljs-regexp" style="color: rgb(0, 136, 0);">/+ buffers/cache</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">23944</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">222053</span>
<span class="hljs-constant">Swap</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span>            <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>          <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>          <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span></code>


右边的两列显示:

buffers:用于块设备I/O的缓冲区缓存

cached:用于文件系统的页缓存

它们的值接近于0时,往往导致较高的磁盘I/O(可以通过iostat确认)和糟糕的性能。上面的例子里没有这个问题,每一列都有好几M呢。

比起第一行,
-/+ buffers/cache
提供的内存使用量会更加准确些。Linux会把暂时用不上的内存用作缓存,一旦应用需要的时候立刻重新分配给它。所以部分被用作缓存的内存其实也算是空闲内存,第二行以此修订了实际的内存使用量。为了解释这一点, 甚至有人专门建了个网站: linuxatemyram

如果你在Linux上安装了ZFS,正如我们在一些服务上所做的,这一点会变得更加迷惑,因为ZFS它自己的文件系统缓存不算入
free -m
。有时系统看上去已经没有多少空闲内存可用了,其实内存都待在ZFS的缓存里呢。


8. sar -n DEV 1

<code>$ sar -n DEV <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>
Linux <span class="hljs-number" style="color: rgb(0, 102, 102);">3.13</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span>-generic (titanclusters-xxxxx)  <span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">14</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">2015</span>     _x86_64<span class="hljs-number" style="color: rgb(0, 102, 102);">_</span>    (<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span> CPU)

<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">16</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">48</span> AM     IFACE   rxpck/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   txpck/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>    rxkB/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>    txkB/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   rxcmp/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   txcmp/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>  rxmcst/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   <span class="hljs-variable" style="color: rgb(102, 0, 102);">%ifutil</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">16</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span> AM      eth<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">18763.00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">5032.00</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">20686.42</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">478.30</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">16</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span> AM        lo     <span class="hljs-number" style="color: rgb(0, 102, 102);">14.00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">14.00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">1.36</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">1.36</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">16</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span> AM   docker<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>

<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">16</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span> AM     IFACE   rxpck/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   txpck/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>    rxkB/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>    txkB/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   rxcmp/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   txcmp/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>  rxmcst/<span class="hljs-keyword" style="color: rgb(0, 0, 136);">s</span>   <span class="hljs-variable" style="color: rgb(102, 0, 102);">%ifutil</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">16</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">50</span> AM      eth<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">19763.00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">5101.00</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">21999.10</span>    <span class="hljs-number" style="color: rgb(0, 102, 102);">482.56</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">16</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">50</span> AM        lo     <span class="hljs-number" style="color: rgb(0, 102, 102);">20.00</span>     <span class="hljs-number" style="color: rgb(0, 102, 102);">20.00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">3.25</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">3.25</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">16</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">50</span> AM   docker<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>
^C</code>


这个命令可以用于检查网络流量的工作负载:rxkB/s和txkB/s,以及它是否达到限额了。上面的例子中,
eth0
接收的流量达到22Mbytes/s,也即176Mbits/sec(限额是1Gbit/sec)

我们用的版本中还提供了
%ifutil
作为设备使用率(接收和发送两者中的最大值)的指标。我们也可以用Brendan的nicstat计量这个值。一如
nicstat
sar
显示的这个值不一定是对的,在这个例子里面就没能正常工作(0.00)。


9. sar -n TCP,ETCP 1

<code><span class="hljs-variable" style="color: rgb(102, 0, 102);">$ </span>sar -n <span class="hljs-constant">TCP</span>,<span class="hljs-constant">ETCP</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span>
<span class="hljs-constant">Linux</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">3.13</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>-<span class="hljs-number" style="color: rgb(0, 102, 102);">49</span>-generic (titanclusters-xxxxx)  <span class="hljs-number" style="color: rgb(0, 102, 102);">07</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">14</span>/<span class="hljs-number" style="color: rgb(0, 102, 102);">2015</span>    _x86_64<span class="hljs-number" style="color: rgb(0, 102, 102);">_</span>    (<span class="hljs-number" style="color: rgb(0, 102, 102);">32</span> <span class="hljs-constant">CPU</span>)

<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">17</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">19</span> <span class="hljs-constant">AM</span>  active/s passive/s    iseg/s    oseg/s
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">17</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">20</span> <span class="hljs-constant">AM</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">10233.00</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">18846.00</span>

<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">17</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">19</span> <span class="hljs-constant">AM</span>  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">17</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">20</span> <span class="hljs-constant">AM</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>

<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">17</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">20</span> <span class="hljs-constant">AM</span>  active/s passive/s    iseg/s    oseg/s
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">17</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">21</span> <span class="hljs-constant">AM</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">1.00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">8359.00</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">6039.00</span>

<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">17</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">20</span> <span class="hljs-constant">AM</span>  atmptf/s  estres/s retrans/s isegerr/s   orsts/s
<span class="hljs-number" style="color: rgb(0, 102, 102);">12</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">17</span><span class="hljs-symbol" style="color: rgb(0, 102, 102);">:</span><span class="hljs-number" style="color: rgb(0, 102, 102);">21</span> <span class="hljs-constant">AM</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>.<span class="hljs-number" style="color: rgb(0, 102, 102);">00</span>
^<span class="hljs-constant">C</span></code>


这个命令显示一些关键TCP指标的汇总。其中包括:

active/s:本地每秒创建的TCP连接数(比如concept()创建的)

passive/s:远程每秒创建的TCP连接数(比如accept()创建的)

retrans/s:每秒TCP重传次数

主动连接数(active)和被动连接数(passive)通常可以用来粗略地描述系统负载。可以认为主动连接是对外的,而被动连接是对内的,虽然严格来说不完全是这个样子。(比如,一个从localhost到localhost的连接)

重传是网络或系统问题的一个信号;它可能是不可靠的网络(比如公网)所造成的,也有可能是服务器已经过载并开始丢包。在上面的例子中,每秒只创建一个新的TCP连接。


10. top

<code>$ top
top - 00:15:40 up 21:56,  1 user,  <span class="hljs-operator"><span class="hljs-keyword" style="color: rgb(0, 0, 136);">load</span> average: <span class="hljs-number" style="color: rgb(0, 102, 102);">31.09</span>, <span class="hljs-number" style="color: rgb(0, 102, 102);">29.87</span>, <span class="hljs-number" style="color: rgb(0, 102, 102);">29.92</span>
Tasks: <span class="hljs-number" style="color: rgb(0, 102, 102);">871</span> total,   <span class="hljs-number" style="color: rgb(0, 102, 102);">1</span> running, <span class="hljs-number" style="color: rgb(0, 102, 102);">868</span> sleeping,   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> stopped,   <span class="hljs-number" style="color: rgb(0, 102, 102);">2</span> zombie
%Cpu(s): <span class="hljs-number" style="color: rgb(0, 102, 102);">96.8</span> us,  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.4</span> sy,  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span> ni,  <span class="hljs-number" style="color: rgb(0, 102, 102);">2.7</span> id,  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.1</span> wa,  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span> hi,  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span> si,  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span> st
KiB Mem:  <span class="hljs-number" style="color: rgb(0, 102, 102);">25190241</span>+total, <span class="hljs-number" style="color: rgb(0, 102, 102);">24921688</span> used, <span class="hljs-number" style="color: rgb(0, 102, 102);">22698073</span>+free,    <span class="hljs-number" style="color: rgb(0, 102, 102);">60448</span> buffers
KiB Swap:        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> total,        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> used,        <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> free.   <span class="hljs-number" style="color: rgb(0, 102, 102);">554208</span> cached Mem

PID <span class="hljs-keyword" style="color: rgb(0, 0, 136);">USER</span>      PR  NI    VIRT    RES    SHR S  %CPU %MEM     <span class="hljs-keyword" style="color: rgb(0, 0, 136);">TIME</span>+ COMMAND
<span class="hljs-number" style="color: rgb(0, 102, 102);">20248</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.227</span>t <span class="hljs-number" style="color: rgb(0, 102, 102);">0.012</span>t  <span class="hljs-number" style="color: rgb(0, 102, 102);">18748</span> S  <span class="hljs-number" style="color: rgb(0, 102, 102);">3090</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">5.2</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">29812</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">58</span> java
<span class="hljs-number" style="color: rgb(0, 102, 102);">4213</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">2722544</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">64640</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">44232</span> S  <span class="hljs-number" style="color: rgb(0, 102, 102);">23.5</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">233</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">35.37</span> mesos-<span class="hljs-keyword" style="color: rgb(0, 0, 136);">slave</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">66128</span> titancl+  <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">24344</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">2332</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">1172</span> R   <span class="hljs-number" style="color: rgb(0, 102, 102);">1.0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">00.07</span> top
<span class="hljs-number" style="color: rgb(0, 102, 102);">5235</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">38.227</span>g <span class="hljs-number" style="color: rgb(0, 102, 102);">547004</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">49996</span> S   <span class="hljs-number" style="color: rgb(0, 102, 102);">0.7</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.2</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">2</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">02.74</span> java
<span class="hljs-number" style="color: rgb(0, 102, 102);">4299</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> <span class="hljs-number" style="color: rgb(0, 102, 102);">20.015</span>g <span class="hljs-number" style="color: rgb(0, 102, 102);">2.682</span>g  <span class="hljs-number" style="color: rgb(0, 102, 102);">16836</span> S   <span class="hljs-number" style="color: rgb(0, 102, 102);">0.3</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">1.1</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">33</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">14.42</span> java
<span class="hljs-number" style="color: rgb(0, 102, 102);">1</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">33620</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">2920</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">1496</span> S   <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">03.82</span> init
<span class="hljs-number" style="color: rgb(0, 102, 102);">2</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>       <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> S   <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">00.02</span> kthreadd
<span class="hljs-number" style="color: rgb(0, 102, 102);">3</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>       <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> S   <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">05.35</span> ksoftirqd/<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">5</span> root       <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> -<span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>       <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> S   <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">00.00</span> kworker/<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>H
<span class="hljs-number" style="color: rgb(0, 102, 102);">6</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>       <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> S   <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">06.94</span> kworker/u256:<span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>
<span class="hljs-number" style="color: rgb(0, 102, 102);">8</span> root      <span class="hljs-number" style="color: rgb(0, 102, 102);">20</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>       <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span>      <span class="hljs-number" style="color: rgb(0, 102, 102);">0</span> S   <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>  <span class="hljs-number" style="color: rgb(0, 102, 102);">0.0</span>   <span class="hljs-number" style="color: rgb(0, 102, 102);">2</span>:<span class="hljs-number" style="color: rgb(0, 102, 102);">38.05</span> rcu_sched
</span></code>


top
命令包括很多我们之前检查过的指标。它适合用来查看相比于之前的命令输出的结果,负载有了哪些变动。

不能清晰显示数据随时间变动的情况,这是
top
的一个缺点。相较而言,
vmstat
pidstat
的输出不会覆盖掉之前的结果,因此更适合查看数据随时间的变动情况。另外,如果你不能及时暂停
top
的输出(Ctrl-s暂停,Ctrl-q继续),也许某些关键线索会湮灭在新的输出中。


在这之后...

有很多工具和方法论有助于你深入地发掘问题。Brendan在2015年Velocity大会上的Linux Performance Tools tutorial中列出超过40个命令,覆盖了观测、基准测试、调优、静态性能调优、分析(profile),和追踪(tracing)多个方面。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: