Linux资源分析工具杂谈 (2)

 

Linux资源分析工具杂谈

图2. uptime运行结果

 

       多核系统分析中接下来要使用的命令通常是mpstat,我们可以通过mpstat对CPU的每个核的使用情况都进行监控,mpstat不仅可以对每个核心的数据进行分别统计,还可以对所有核心的平均使用情况进行统计,mpstat运行结果如图3所示。

 

Linux资源分析工具杂谈

 

图3. mpstat运行结果

 

       当我们使用top发现某一个进程的CPU或者其他资源使用异常的时候,我们可能需要引入第三个命令pidstat,我们甚至可以将这一统计数据精确到具体的线程。Top和pidstat运行结果见图4和图5。

 

Linux资源分析工具杂谈

图4. Top运行结果

 

 

Linux资源分析工具杂谈

图5. Pidstat分线程运行结果

 

       当我们需要对tcp流量进行简单统计,又不愿意要引入更复杂的tcpdump网络监控的时候,sar命令是个不错的选择,当然,统计网络流量只是sar的一个功能而已,更多功能可以参考sar man page, 使用sar命令统计tcp流量运行结果如图6所示。

 

Linux资源分析工具杂谈

图6. sar命令统计tcp流量运行结果

 

       限于篇幅的原因,此处不再一一讨论图1中的每一个命令。

 

进阶篇


       动态追踪是一种高级调试技术可以帮助开发人员以非常低的成本快速排查和解决软件性能问题。当今世界软件面临的问题一是规模,二是复杂度。随着 BPF 追踪系统(基于时间采样)最后一个主要功能被合并至 Linux 4.9-rc1 版本的内核中,Linux内核拥有了类似DTrace的原生追踪功能。DTrace是Solaris系统中的高级追踪器,功能强大,对于长期使用 DTrace 的用户,这是一个振奋人心的消息,现在Linux系统上可以在生产环境中使用安全的、低负载的定制追踪系统,通过执行时间的柱状图和频率统计等信息,分析应用的性能以及内核。最初用于Linux的追踪项目有很多,但是这个最终被合并进Linux内核的技术从一开始就根本不是一个追踪项目:它最开始是用于伯克利包过滤器 Berkeley Packet Filter(BPF)的一个增强功能。这些补丁允许BPF重定向数据包,从而创建软件定义网络。久而久之,对事件追踪的支持就被添加进来了,使得程序追踪可用于Linux系统。BPF Compiler Collection (BCC), PLY 和 BPFTRACE都是正在开发的BPF前端,BCC架构如图7所示,下面以BCC为例对Linux动态追踪技术进行简单说明,

 

 

Linux资源分析工具杂谈

图7. Linux BCC/BPF Tracing Tools

 

       假设我们有这样一个场景,系统中偶尔会运行新的进程,这些新的进程可能会消耗大量系统资源,从而对我们生产上运行的环境产生干扰,但是这种进程可能运行时间极为短暂,我们怎样才能知道发生了这种情况呢?top?可能不行,时间太短了,可能top还没来得及统计,进程已经退出了。这种情况下最适合使用的工具之一就是BCC工具集中的execsnoop,图8中可以看出,每一个新启动的进程都会被记录在案。

 

Linux资源分析工具杂谈

图8. Execsnoop命令运行结果

 

       网络程序开发中我们可能想要按照TCP连接来统计一下通信两端的吞吐量和生命周期,这个时候tcplife就派上用场了,tcplife对TCP会话的生命周期和吞吐量统计如图9所示。

 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsffjf.html