操做系统性能观测工具

1.工具类型 ios

  性能观测工具能够按照系统级别和进程级别来分类,多数的工具要么基于计数器要么基于跟踪。咱们把这些性能放在以下图中,包括一些常见工具做为示例编程

  有一些工具不止适合一个象限,例如:top还有一个系统级别的视图,Dtrace也有进程级别的能力。还有一些性能工具是基于剖析(profiling)的。对系统和进程作一系列快照,以此来进行观测。网络

 1.1计数器框架

   内核维护了各类统计数据,称为计数器,用于对事件计数。一般计数器实现为无符号的整型数,发生事件时递增。计数器的使用能够认为是“零开销”的,由于它们默认是开启的,并且始终由内核维护。tcp

惟一的使用开销是从用户空间读取它们的时候(能够忽略不计)。工具

系统级别oop

下面这些工具利用内核的计数器在系统软硬件的环境中检查系统级别的活动。性能

 vmstat:虚拟内存和物理内存的统计,系统级别。spa

mpstat:每一个CPU的使用状况。操作系统

iostat:每一个I/O的使用状况,由块设备接口报告。

netstat:网络接口的统计,TCP/IP栈的统计,以及每一个链接的一些统计信息。

sar:各类各样的统计,能归档历史数据。

这些工具一般是系统全体用户可见的(非root用户)。统计出的数据也经常被监控软件用来绘图。

进程级别

下面这些工具以进程为导向的,使用的是内核为每一个进程维护的计数器。

ps:进程状态,显示进程的各类统计信息,包括内存和cpu的使用。

top:按一个统计数据(如CPU使用)排序,显示排名高的进程,基于Solaris的系统对应的工具是prstat(1M)

pmap:将进程的内存段和使用统计一块儿列出。

通常来讲,上述的这些工具是从/proc文件系统里读取统计的信息的。

1.2 跟踪

       跟踪收集每个事件的数据以供分析。跟踪框架通常默认是不启用的,由于跟踪捕获数据会有CPU的开销,另外还须要不小的存储空间来存放数据。

这些开销会拖慢所跟踪的对象,在解释测量时间的时候须要加以考虑。

     日志,包括系统日志,能够认为是一种默认开启的低频率的跟踪。日志包括每个事件的数据,虽然一般只针对偶发事件,如错误和警告。

系统级别

利用内核功的跟踪设施,下面这些跟踪工具在系统软硬件的环境中检查系统级别的活动。

   tcpdump:网络包跟踪(用libpcap库)

   snoop:为基于Solaris的系统打造的网络包跟踪工具。

   blktrace:块I/O跟踪(Linux)

   iosnoop:块I/O跟踪(基于Dtrace)

   execsnoop:跟踪新进程(基于Dtrace)

   dtruss:系统级别的系统调用缓冲跟踪(基于Dtrace)

   Dtrace:跟踪内核的内部活动和全部资源的使用状况(不单单是网络和块I/O),支持静态和动态的跟踪。

   SystemTap:跟踪内核的内部活动和全部资源的使用状况,支持静态和动态的跟踪。

   perf:Linux性能事件,跟踪静态和动态的探针。

Dtrace和SystemTap都是可编程环境,在它们之上能够构建系统级别的跟踪工具

进程级别

 以进程为导向的,基于的是操做系统提供的框架。

  strace:基于Linux系统的系统调用跟踪。

  truss:基于Solaris系统的系统调用跟踪。

  gdb:源代码级别的调试器,普遍应用于Linux系统。

  mdb:Solaris系统的一个具备可扩展性的调试器。

调试器可以检查每个事件的数据,不过作这件事情时须要中止目标程序的执行,而后再启动。

诸如:Dtrace、SystemTap和perf这样的工具,虽然更适合概括到系统级别一类中,可是他们都支持对单个进程作检查。

1.3 剖析

相关文章
相关标签/搜索