10 个命令快速定位 Linux 性能问题( 二 )

【10 个命令快速定位 Linux 性能问题】这个命令显示每个 CPU 的工作时间明细,可用于检查不平衡情况 。如果单 CPU 过热,可能是单线程应用程序造成的 。vmstat 只能看到整体 CPU 使用情况,而 mpstat 可以看到每个的 CPU 使用情况 。
参数释义从/proc/stat获得数据CPU 处理器ID%usr用户态的 CPU 时间(%)%nicenice 值为负进程的 CPU 时间(%)%sys内核态的 CPU 时间(%)%iowait 硬盘 I/O 等待时间(%) %irq硬中断时间(%)%soft软中断时间(%)%steal显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比 %guest显示运行虚拟处理器时 CPU 花费时间的百分比%gnice显示 niced guest 占比%idleCPU 空闲等待时间(idle)(%)5. pidstat 1$ pidstat 1Linux 3.13.0-49-generic (titanclusters-xxxxx)07/14/2015_x86_64_(32 CPU)07:41:02 PMUIDPID%usr %system%guest%CPUCPUCommand07:41:03 PM090.000.940.000.941rcuos/007:41:03 PM042145.665.660.0011.3215mesos-slave07:41:03 PM043540.940.940.001.898JAVA07:41:03 PM06521 1596.231.890.00 1598.1127java07:41:03 PM06564 1571.707.550.00 1579.2528java07:41:03 PM 60004601540.944.720.005.669pidstat07:41:03 PMUIDPID%usr %system%guest%CPUCPUCommand07:41:04 PM042146.002.000.008.0015mesos-slave07:41:04 PM06521 1590.001.000.00 1591.0027java07:41:04 PM06564 1573.0010.000.00 1583.0028java07:41:04 PM10867181.000.000.001.000snmp-pass07:41:04 PM 60004601541.004.000.005.009pidstat^Cpidstat 有点像单进程版的 top 命令 。用来查看单个进程占用 CPU 的详细情况 。
6. iostat -xz 1$ iostat -xz 1Linux 3.13.0-49-generic (titanclusters-xxxxx)07/14/2015_x86_64_ (32 CPU)avg-cpu:%user%nice %system %iowait%steal%idle73.960.003.730.030.0622.21Device:rrqm/swrqm/sr/sw/srkB/swkB/s avgrq-sz avgqu-szawait r_await w_awaitsvctm%utilxvda0.000.230.210.184.522.0834.370.009.9813.805.422.440.09xvdb0.010.001.028.94127.97598.53145.790.000.431.780.280.250.25xvdc0.010.001.028.86127.79595.94146.500.000.451.820.300.270.26dm-00.000.000.692.3210.4731.6928.010.013.230.713.980.130.04dm-10.000.000.000.940.013.788.000.33345.840.04346.810.010.00dm-20.000.000.090.071.350.3622.500.002.550.235.621.780.03[...]^Ciostat 是了解块设备(磁盘)的工作负载以及所产生的性能的绝佳工具 。参数释义如下所示
%user:CPU 处在用户模式下的时间百分比 。%nice:用户空间下高优先级程序时间百分比 。%system:CPU 处在内核态下的时间百分比 。%iowait:CPU 等待输入输出完成时间的百分比 。%steal:管理程序维护另一个虚拟处理器时,虚拟 CPU 的无意识等待时间百分比 。%idle:CPU 空闲时间百分比 。
7. free -m$ free -mtotalusedfreesharedbufferscachedMem:245998245452214538359541-/+ buffers/cache:23944222053Swap:000free 命令用来查看内存使用情况 。buffers 表示块设备(磁盘)使用的缓存,而 cached 表示文件系统的页缓存(page cache)
8. sar -n DEV 1$ sar -n DEV 1Linux 3.13.0-49-generic (titanclusters-xxxxx)07/14/2015_x86_64_(32 CPU)12:16:48 AMIFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s%ifutil12:16:49 AMeth018763.005032.0020686.42478.300.000.000.000.0012:16:49 AMlo14.0014.001.361.360.000.000.000.0012:16:49 AMDocker00.000.000.000.000.000.000.000.0012:16:49 AMIFACErxpck/stxpck/srxkB/stxkB/srxcmp/stxcmp/srxmcst/s%ifutil12:16:50 AMeth019763.005101.0021999.10482.560.000.000.000.0012:16:50 AMlo20.0020.003.253.250.000.000.000.0012:16:50 AMdocker00.000.000.000.000.000.000.000.00^Csar 是 System Activity Reporter(系统活动情况报告)的缩写 。sar 工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态 。它的特点是可以连续对系统取样,获得大量的取样数据;取样数据和分析的结果都可以存入文件,所需的负载很小 。sar 是目前 Linux 上最为全面的系统性能分析工具之一,可以从 14 个大方面对系统的活动进行报告,包括文件的读写情况、系统调用的使用情况、串口、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等 。
这里参数 DEV 是检测网络接口的吞吐:rxkB/s 和 txkB/s,作为收发数据负载的度量,也是检测是否达到收发极限 。在上面这个例子中,eth0 接收数据达到 22 M 字节/秒,也就是 176 Mbit/秒(网卡的上限是 1 Gbit/秒) 。这个版本的工具还有一个统计字段: %ifutil,用于统计设备利用率(全双工双向最大值) 。
9. sar -n TCP,ETCP 1$ sar -n TCP,ETCP 1Linux 3.13.0-49-generic (titanclusters-xxxxx)07/14/2015_x86_64_(32 CPU)12:17:19 AMactive/s passive/siseg/soseg/s12:17:20 AM1.000.0010233.0018846.0012:17:19 AMatmptf/sestres/s retrans/s isegerr/sorsts/s12:17:20 AM0.000.000.000.000.0012:17:20 AMactive/s passive/siseg/soseg/s12:17:21 AM1.000.008359.006039.0012:17:20 AMatmptf/sestres/s retrans/s isegerr/sorsts/s12:17:21 AM0.000.000.000.000.00^C


推荐阅读