/images/hugo/avatar.png

2.5 Dtrace

今天我们来讲解第一个动态追踪技术 DTrace, 它是动态追踪技术的鼻祖

1. Dtrace 简介

Solaris 系统的 DTrace 是动态追踪技术的鼻祖,它提供了一个通用的观测框架,并可以使用 D 语言进行自由扩展。

2.4 perf 的使用

上一节我们学习了 perf 的基本原理,对 perf 有了一个整体上的认识,本节我们来学如何使用 perf 进行性能分析。

我们将按照如下几个部分来介绍 perf 的使用:

  1. perf 的辅助性命令,包括 perf list,perf probe 等
  2. perf 的三种使用方式,计数模式,采样事件,以及事件上的 bp 程序
  3. perf 提供的特殊用途的子命令,包括 perf sched,perf mem 等等
  4. perf.data 的处理,这一部分命令用于格式化输出 perf.data 的内容便于生成类似火焰图等更复杂的图表

/images/linux_pf/perf_events_flow.png

1.2 Linux 性能调优概览

为了调试和追踪程序的运行过程,Linux 提供了众多的分析工具,本节我们先对它们做一个宏观概览。

/images/linux_pf/linux-tracing-1.png

1. 我们到底要优化什么

在我们了解接下来的各种工具之前,我们首先应该问自己,我们要追踪或者说我们要优化什么。我们都知道程序的运行会占用包括 CPU,内存,文件描述符,锁,磁盘,网络等等在内的各种操作系统资源。根据2/8定律,当其中的某一个或多个资源出现瓶颈的时候,我们需要找到程序中耗费资源最大的地方,并对其优化。