第 1 章 系统观察工具简介
Bryan Cantrill在前言中将操作系统描述为“甚至无法满足人们简单好奇心的专有的黑盒
子”。Bryan描绘了不久之前的一幅真实的画面,当时,仅有少数的一些软件是可见或可观察的。
一些人试图理解系统为什么没有达到描述的服务级别和响应时间目标,这是一个复杂的问
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
。
问题在于,性能
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
只能对一个很小的不能改变的性能统计起作用,遗憾的是,这些性能统计
是几十年前由内核开发者选出来作为调试内核实现的方法。结果性能的测量和诊断变成了推理
的艺术,在某些情况下,就是猜测。
今天,Solaris拥有一套丰富的系统观察工具,针对系统管理员、应用开发者和操作系统开
发者。这些工具建立在一个灵活的系统观察框架上,最终可以灵活定制。我们可以把它与转变
了电视观看方式的Tivo 革命类比,人们不再被锁定到一套固定的电视节目表上,他们可以选
择观看的时间和
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
;换句话说,Tivo让看电视的人决定观看方式,而不是提供电视节目的人。
类似地,Solaris系统观察工具可以针对特定的问题,集中在对于快速准确地解决每一个特定问
题的重要事情上。
第一部分描述测量系统利用率和诊断性能问题用到的典型方法。第二部分介绍这些方法所
基于的框架。第三部分讨论Solaris中的调试工具。
本章将对后续各章中详细介绍的内容做简要说明。
1.1 系统观察工具
用于观察系统性能和行为的命令、工具和实用程序可以按照它们提供的信息和数据的来源
分类,包括下列几类。
• 内核统计信息收集工具。报告通过计数器收集的kstat,或者内核统计信息。例如,vmstat、
mpstat和netstat。
• 进程工具。为单个进程和线程提供系统进程信息列表和统计信息。例如,prstat、
ptree和pfiles。
• 调查工具。跟踪系统调用并针对如应用、内核和核心文件等目标进行深入分析。例如
truss和MDB。
• 动态工具。运行的应用和内核进行完全的测控。例如DTrace。
第一部分 系统观察方法
Tivo是最早的家庭数字录像设备之一。它根据用户的观看和选择偏好,自动将电视节目记录到硬盘上。
这些实用程序结合起来,构成了一套丰富的工具集,提供了找到系统性能的瓶颈,调试故
障应用,甚至事后判断造成系统崩溃原因所需要的信息。但是,哪个工具适用于手头的任务
呢?答案在于需要的信息和与之匹配的可用工具。有时,单个工具提供了所需的信息。其他时
候,你可能要变成侦探,使用一套工具(如DTrace),挖掘出需要的信息以定位到特定的区域,
再用其他工具(如MDB)做深入分析。
决定使用哪个工具找到关于系统相应的信息有时对于初学者来说是一头雾水,因为工具产生的
结果就令人迷惑。使用哪一个具体的命令或者实用程序取决于所调查问题的性质和目标。一般来说,
可以从系统范围的观察(“stat”命令集)开始并使用一个完整的进程观察(prstat(1))。具体深
入到一个特定的进程或者一组进程,通常需要几个命令并配合dtrace和/或MDB一起使用。
1.1.1 kstat工具
系统内核统计工具(kstat)持续地提取出保存在内核kstat框架中计数器里的信息,这些计
数器的值在特定事件上发生时,例如运行一个系统调用或者一个磁盘I/O,加一。基于kstat的
单独的命令和实用程序可以总结如下(参考不同的手册和后面章节,能够得到关于这些命令使
用的信息和它们提供的数据)。
• mpstat(1M) 每个处理器的统计信息和利用率。
• vmstat(1M) 内存、运行队列和概要的处理器利用率。
• iostat(1M) 磁盘I/O子系统的操作、带宽和利用率。
• netstat(1M) 网络界面数据包的传输率、纠错和冲突。
• kstat(1M) 基于名字的kstat计数器值的输出。
• sar(1) 捕捉所有范围广泛的系统统计的报告。常常定期调度收集统计信息,帮助产生
如CPU利用率等关键信号的报告。
上面列出的实用程序从所基于的kstat提取数据值,并报告各种系统事件的每秒的计数器值。
注意netstat(1)是个例外,它不是给出每秒的平均值,而是按照命令行指定的取样时间间隔
给出这个时间间隔的值。使用这些工具,我们可以观察到系统硬件(处理器、内存、磁盘存储、
网络界面)的使用水平,并跟踪特定系统级事件,以帮助我们理解系统负载和应用行为。
1.1.2 进程工具
运行进程的信息和数据是由下面两个工具和它们所带的选项得到。
• ps(1) 进程状态。列出系统中的进程,可选地显示每个进程的扩展信息。
• prstat(1M) 进程状态。监视系统中的进程,可选地显示进程和线程级微观状态的计
账和用于资源管理的每个项目的统计信息。
进程信息通过一组统称为ptool,或者进程工具的实用程序得到。这些实用程序构建于
/proc目录下的进程文件系统如(如procfs)。
• pargs(1) 显示进程参数列表。
• pflags(1) 显示进程标记。
• pcred(1) 显示进程认证信息。
2 第一部分 系统观察方法
• pldd(1) 显示进程共享目标库依赖关系。
• psig(1) 显示进程信号部署。
• pstack(1) 显示进程堆栈。
• pmap(1) 显示进程地址空间映射。
• pfiles(1) 显示进程打开文件的名字和标记。
• ptree(1) 显示进程家族树。
• ptime(1) 进程执行计时。
• pwdx(1) 显示进程工作目录。
进程控制可由下面的命令做到。
• pgrep(1) 寻找进程名字符串,返回PID。
• pkill(1) 发送kill信号或指定的信号到进程或进程列表。
• pstop(1) 停止进程。
• prun(1) 启动被停止的进程。
• pwait(1) 等待进程结束。
• preap(1) 回收僵尸(defunct)进程。
1.1.3 调查工具
Solaris 10和OpenSolaris中包含的功能强大的进程级、线程级跟踪和调试工具,提供了另一
层的进程和线程执行流和行为的可见性。
• truss(1) 跟踪函数和系统调用。
• mdb(1) 调试或控制进程。
• dtrace(1M) 跟踪、分析、控制和调试进程。
• plockstat(1M) 跟踪进程和线程中用户定义的锁。
通过下面几条命令可以跟踪、观察并分析内核及其与应用的交互。
• dtrace(1M) 跟踪、监视并观察内核。
• lockstat(1M) 跟踪内核锁并分析内核的执行效率。
• mdb(1)和kmdb(1) 分析并调试运行中的内核、应用和核心文件。
最后,特定的实用程序跟踪特定硬件的计数器,并提供底层处理器和系统利用率和行为的
可视性。
• cputrack(1) 为某个进程跟踪处理器的硬件计数器。
• cpustat(1M) 跟踪处理器的硬件计数器。
• busstat(1M) 跟踪互联总线的硬件计数器。
1.2 深入分析
如何把这些工具结合在一起使用呢?这里介绍深入分析(也称为深入监视)策略。从这里,
我们开始检查整个系统并基于我们的发现缩小范围到特定的区域。下述步骤描述了深入分析策略。
1. 监视。使用一个系统记录一段时间的统计数据。数据可能显现出使用常规的stat工具可
第 1 章 系统观察工具简介 3
能漏掉的长期模式。监视可能用到SunMC、SNMP或sar。
2. 鉴别。将调查的范围缩小到特定的资源,并鉴别可能的瓶颈。这可能包括kstat和procfs工具。
3. 分析。特定系统领域的进一步检查。可能使用truss、DTrace和MDB。
注意没有一个工具可以做到所有这些工作;DTrace具有监视和鉴别问题的能力,最适用于
深入的分析。由kstat 计数器做鉴别可能最适合,它们已经可用并得到维护。
同样需要注意的重要情况是,很多地方有关键的应用,那里使用额外的工具可能更合适。
例如,单独使用ping(1M)去监视一个关键的Web服务器可能不是很有效,反而,模拟客户端
活动的工具测量响应时间和期望的内容,可能更有效。
1.3 关于第一部分
在本书中,我们介绍了如何以及何时使用各种工具和实用程序理解系统行为并鉴别问题的特
定的例子,并介绍一些分析概念。我们没有试图提供一个性能分析的全面
指南
验证指南下载验证指南下载验证指南下载星度指南下载审查指南PDF
;相反描述了前面
列出的各种工具和实用程序,提供有关它们使用的大量的例子,并解释了命令产生的数据和信息。
我们使用诸如“利用率”(utilization)和“饱和度”(saturation)等名词帮助量化资源消耗。
“利用率”测量资源的忙闲程度,通常由一段时间间隔的平均百分比来表示。“饱和度”经常是
排队等候资源的工作的估量,可以测量为一段时间的平均值或某一特定时间点的值。对于某些
不需排队的资源,“饱和度”可以由错误计数综合表示。我们使用的其他名词包括“吞吐率”
(throughput)和“命中率”(hit ratio),视资源类型而定。
确定适合于一种资源类型的名词帮助说明它们的特征。例如,我们可以测量CPU的利用率
和CPU缓存的命中率。每种被讨论的资源定义了适当的名词。
本书包括来自三个主要地方的工具,这些工具的参考位置是http://www.solarisinternals.com。
• 与Solaris捆绑在一起的工具:基于kstat,procfs,DTrace,等等。
• 来自 solarisinternals.com的工具:Memtool及其他。
• 来自Brendan Gregg的工具:DTraceToolKit和K9Toolkit。
章节安排
后面关于性能工具的各章涵盖下列关键主题:
• 第2章:CPU
• 第3章:进程
• 第4章:磁盘行为与分析
• 第5章:文件系统
• 第6章:内存
• 第7章:网络
• 第8章:性能计数器
• 第9章:内核监测
这个列表可以作为要考虑的问题领域的总清单。如果我们有性能问题,并且不肯定从哪里
入手,不妨一章接一章地学习,应该是有帮助的。
4 第一部分 系统观察方法