4. mpstat -P ALL 1
1 2 3 4 5 6 7 8 9 10 |
$ mpstat -P ALL 1 Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU) 07:38:49 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 07:38:50 PM all 98.47 0.00 0.75 0.00 0.00 0.00 0.00 0.00 0.00 0.78 07:38:50 PM 0 96.04 0.00 2.97 0.00 0.00 0.00 0.00 0.00 0.00 0.99 07:38:50 PM 1 97.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 2.00 07:38:50 PM 2 98.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 1.00 07:38:50 PM 3 96.97 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3.03 [...] |
这个命令可以用来显示每一个CPU的系统中断时间,可以我们用来CPU分配的不平衡,
5. pidstat 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ pidstat 1 Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU) 07:41:02 PM UID PID %usr %system %guest %CPU CPU Command 07:41:03 PM 0 9 0.00 0.94 0.00 0.94 1 rcuos/0 07:41:03 PM 0 4214 5.66 5.66 0.00 11.32 15 mesos-slave 07:41:03 PM 0 4354 0.94 0.94 0.00 1.89 8 java 07:41:03 PM 0 6521 1596.23 1.89 0.00 1598.11 27 java 07:41:03 PM 0 6564 1571.70 7.55 0.00 1579.25 28 java 07:41:03 PM 60004 60154 0.94 4.72 0.00 5.66 9 pidstat 07:41:03 PM UID PID %usr %system %guest %CPU CPU Command 07:41:04 PM 0 4214 6.00 2.00 0.00 8.00 15 mesos-slave 07:41:04 PM 0 6521 1590.00 1.00 0.00 1591.00 27 java 07:41:04 PM 0 6564 1573.00 10.00 0.00 1583.00 28 java 07:41:04 PM 108 6718 1.00 0.00 0.00 1.00 0 snmp-pass 07:41:04 PM 60004 60154 1.00 4.00 0.00 5.00 9 pidstat |
Pidstat 有点类似TOP,他是每个线程的总结,但是他们打印和滚动的结果,不是清屏,这样的话我们就能够更好对比之前和现在的各种数据,当然我们也能更好的记录下这些数据
在上边的例子中,有两个java进程是引发CPU消耗的罪魁祸首,%CPU显示的是占用的所有CPU的值,1591% 表示占用了将近16CPU
6. iostat -xz 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ iostat -xz 1 Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/2015 _x86_64_ (32 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 73.96 0.00 3.73 0.03 0.06 22.21 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util xvda 0.00 0.23 0.21 0.18 4.52 2.08 34.37 0.00 9.98 13.80 5.42 2.44 0.09 xvdb 0.01 0.00 1.02 8.94 127.97 598.53 145.79 0.00 0.43 1.78 0.28 0.25 0.25 xvdc 0.01 0.00 1.02 8.86 127.79 595.94 146.50 0.00 0.45 1.82 0.30 0.27 0.26 dm-0 0.00 0.00 0.69 2.32 10.47 31.69 28.01 0.01 3.23 0.71 3.98 0.13 0.04 dm-1 0.00 0.00 0.00 0.94 0.01 3.78 8.00 0.33 345.84 0.04 346.81 0.01 0.00 dm-2 0.00 0.00 0.09 0.07 1.35 0.36 22.50 0.00 2.55 0.23 5.62 1.78 0.03 [...] ^C |
这个工具是一个很好的帮助我们理解磁盘,让我们能更好的了解工作负载以及相应的性能问题
r/s, w/s, rkB/s, wkB/s: 每秒发送到设备的读入请求数,每秒发送到设备的写入请求数,每秒从设备读入的数据量,单位为K,每秒向设备写入的数据量,单位为K,我们可以利用这些值,性能问题可能仅仅是因为负载过高
await: I/O请求平均执行时间.包括发送请求和执行的时间.单位是毫秒. 这是应用程序的综合时间,包含服务时间和等待时间,比与其平均值大的情况说明可能是设备的饱和或者设备问题.
avgqu-sz: 发送到设备的请求的平均队列长度. 如果值大于1说明设备的饱和(尽管通常设备可以并行操作很多请求,特别是虚拟设备)
%util: 在I/O请求发送到设备期间,占用CPU时间的百分比.用于显示设备的带宽利用率.它显示了每一秒中设备的工作时间.这个值超过60%说明这是一个不好的表现(这个也和设备有关).100%的时候就出问题了
如果设备是一个逻辑磁盘,后端有好多后端磁盘,那么100%的利用率只能够说明一些I/O的处理时间为100%,然后后端磁盘可能远远没有饱和,后端磁盘可能还可以处理更多的工作
记住,表现不佳的磁盘不一定就是程序程序问题,许多技术通常使用异步I/O,所以程序一般不会导致磁盘的问题
Latest posts by Zhiming Zhang (see all)
- aws eks node 自动化扩展工具 Karpenter - 8月 10, 2022
- ReplicationController and ReplicaSet in Kubernetes - 12月 20, 2021
- public key fingerprint - 5月 27, 2021