/images/hugo/avatar.png

1.2 Linux 性能调优概览

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

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

1. 我们到底要优化什么

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

39 最小生成树

最小生成树

1. 最小生成树

所谓最小生成树(简称MST)就是在一个无向,有权图G中,找到一颗连接所有顶点的树,并且树包含的边的权重总和最低。最小生成树有两种常见解法:

38 最短路经

最短路经

1. 最短路径

广度优先算法可以计算连通图中,从一个顶点到另一顶点的最短路径,但前提是图上的每条边的权重相同。那如何计算全重不同的图的最短路径呢?最出名的莫过于 Dijkstra 算法。

37 拓扑排序

拓扑排序

1. 拓扑排序的背景

拓扑排序是一种排序,假设完成一项任务需要 n 个步骤,这 n 个步骤之间存在依赖关系,拓扑排序就是确定一个满足依赖关系的执行步骤。典型的拓扑排序用于解决如下问题:

36 图的传递闭包

解决图可达性的传递闭包

1. 场景

通过图上的深度和广度优先搜索算法,我们可以知道顶点 u 到顶点 v 的可达性问题,但是在某些应用中,我们可能希望更高校的回答很多可达性问题。此时对图预计算一个更高效的表示方式是非常值得的,图的传递闭包就是用来解决这个问题。