首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 系统运维 >

Linux 自检跟 SystemTap

2012-07-27 
Linux 自检和 SystemTap2009 年12 月03 日现代的操作系统内核提供自检 功能,即动态地检查内核以理解其行为

Linux 自检和 SystemTap

2009 年 12 月 03 日

现代的操作系统内核提供自检 功能,即动态地检查内核以理解其行为的能力。这些行为可以反映内核问题和性能瓶颈。拥有这些信息时候,您就可以调优或修改内核以避免出现故障。本文探索一个名为 SystemTap 的开放源码基础设施,它为 Linux? 内核提供这种动态的自检。

?

SystemTap 是监控和跟踪运行中的 Linux 内核的操作的动态方法。这句话的关键词是动态,因为 SystemTap 没有使用工具构建一个特殊的内核,而是允许您在运行时动态地安装该工具。它通过一个名为Kprobes 的应用编程接口(API)来实现该目的,本文将探索这个 API。我们首先了解以前的一些内核跟踪方法,然后在深入探讨 SystemTap 的架构及其使用。


Linux 自检跟 SystemTap
Linux 自检跟 SystemTap
回页首

?


Linux 自检跟 SystemTap
Linux 自检跟 SystemTap
回页首

?

有了可用的内核模块之后,stap 完成了自己的任务,并将控制权交给其他两个实用程序 SystemTap:staprunstapio。这两个实用程序协调工作,负责将模块安装到内核中并将输出发送到 stdout (pass 5)。如果在 shell 中按组合键 Ctrl-C 或脚本退出,将执行清除进程,这将导致卸载模块并退出所有相关的实用程序。

SystemTap 的一个有趣特性是缓存脚本转换的能力。如果安装后的脚本没有更改,您可以使用现有的模块,而不是重新构建模块。图 2 显示了 user-space 和 kernel-space 元素以及基于 stap 的转换流程。


图 2. 从 kernel/user-space 角度了解 SystemTap 流程
Linux 自检跟 SystemTap

Linux 自检跟 SystemTap
Linux 自检跟 SystemTap
Linux 自检跟 SystemTap
回页首

?


Linux 自检跟 SystemTap
Linux 自检跟 SystemTap
回页首

?

?

清单 11 显示了清单 10 的脚本的输出。在这个例子中,使用了一个浏览器会话、一个 FTP 会话和 ping 来生成网络流量。@hist_log 提取器是一个以 2 为底数的对数柱状图(如下所示)。还可以步骤其他柱状图,从而使您能够定义 bucket 的大小。


清单 11. nethist.stp 的柱状图输出


Linux 自检跟 SystemTap
Linux 自检跟 SystemTap
回页首

?

结束语

本文仅探索了 SystemTap 的最简单的功能。在 参考资料 部分中,您可以找到许多教程、例子和语言参考的链接,这些资源提供了解 SystemTap 所需的所有详细信息。SystemTap 使用几个现有的方法并借鉴了以前的内核跟踪实现。尽管该工具还在紧张开发当中,但它现在已经可以使用。请期待未来出现的新特性。

?

参考资料

学习

查看 SystemTap 项目的 Web 站点 了解最新的信息,包括当前的版本、文档和链接,以及如何参与 SystemTap 项目。SystemTap 使用 Kprobes 作为将探针安装到运行的内核中的底层方法。在 Sourceware Web 站点上更多地了解 Kprobes。

IBM Redpaper “SystemTap: Instrumenting the Linux Kernel for Analyzing Performance and Functional Problems” 提供关于如何使用 SystemTap 的更多信息。

针对 IBM 系统上的 Linux 的 IBM Blueprint 显示了如何在 Red Hat Enterprise Linux and SUSE Linux Enterprise Server 上 安装和使用 SystemTap。另一个 Blueprint 讨论如何使用 SystemTap GUI,这是一个基于 Eclipse 的工具,它简化了 SystemTap 脚本的编写和内核事件的可视化。

了解如何 为 Ubuntu 8.10 修改 SystemTap,以改正运行时的 time.c 文件中的 bug。

论文 “Dynamic Instrumentation of Production Systems” 来自 2004 USENIX,它介绍了 DTrace 工具,由来自 Sun Microsystems 的作者发表。

architecture paper from 2005 介绍了 SystemTap 架构和设计格式。从本文中可以了解 SystemTap 背后的动机和需求。除了提供大量关于 SystemTap 的技术细节之外,本文还是设计文档的出色模型。

这份在 2006 Ottawa Linux 研讨会总结得出的 Kprobes教程 简明扼要地介绍了使用 Kprobes 探测内核。您还可以阅读有趣的文章 “使用 Kprobes 调试内核”(developerWorks,2004 年 8 月)。

在这个题为 “Dynamic Tracing and Performance Analysis Using SystemTap” 的演示中,来自 Intel 的 Josh Stone 提供一份关于 SystemTap 的出色教程。这个演示相当全面地介绍了 SystemTap 及其语言和使用。

SystemTap Language Reference 是了解 SystemTap 及其所有功能的优秀资源。

Wikipedia 提供大量关于 SystemTap、DTrace 和 ProbeVue 的有用资源。您还可以找到关于这些技术的演示和教程的外部链接。

在 developerWorks Linux 专区 寻找为 Linux 开发人员(包括 Linux 新手入门)准备的更多参考资料,查阅我们 最受欢迎的文章和教程。

在 developerWorks 上查阅所有 Linux 技巧 和 Linux 教程。

随时关注 developerWorks 技术活动和网络广播。

热点排行