4.性能之巅 洞悉系统、企业与云计算 --- 观测工具

4.1 工具类型 
	性能观测工具可以按照系统级别和进程级别来分类,多数的工具要么基于计数器要么基于跟踪。还有一些性能工具是基于剖析的。

	4.1.1 计数器 
		内核维护了各种统计数据,称为计数器,用于对事件计数。

		系统级别:
			vmstat
			mpstat
			iostat
			netstat
			sar

		进程级别:
			ps
			top
			pmap

	4.1.2 跟踪 
		跟踪收集每一个事件的数据以供分析。跟踪框架一般默认是不启用的,因为跟踪捕获数据会有cpu开销,另外还需要不小的存储空间来放数据。

		系统级别:
			tcpdump
			snoop
			blktrace
			iosnoop
			execsnoop
			dtruss
			DTrace
			SystemTap
			perf

		进程级别:
			strace
			truss
			gdb
			mdb

	4.1.3 剖析 
		剖析通过对目标收集采样或者快照来归纳目标特征。剖析也能基于非计时的硬件事件。

		系统级别和进程级别:
			oprofile
			perf
			DTrace
			SystemTap
			cachegrind
			Intel VTune Amplifier XE
			Oracle Solaris Studio

	4.1.4 监视(sar)
		sar 是基于计数器的。
 
4.2 观测来源 
		系统性能统计的主要来源是:/proc, /sys, 和 kstat。

		进程级别计数  /proc
		系统级别计数	/proc,/sys
		设备驱动和调试信息	/sys
		进程级别跟踪	ptrace,uprobes
		性能计数器 	perf_event
		网络跟踪 		libpcap
		进程级延时指标 	延时核算
		系统级跟着 	tracepoints,kprobes,ftrace

	4.2.1 /proc 
		/proc 由内核动态创建,不需要任何存储设备(在内存中运行)。

		与进程性能观测相关的文件如下:
			limits : 实际的资源限制
			maps : 映射的内存区域
			sched : cpu 调度器的各种统计
			schedstat : cpu 运行时间,延时和时间分片
			smaps : 映射内存区域的使用统计
			stat : 进程状态和统计,包括总的cpu和内存使用情况
			statm : 以也为单位的内存使用总结
			status : stat 和 statm 的信息,用户可读
			task : 每个任务的统计目录

		与性能观测相关的系统级别的文件如下:
			cpuinfo : 物理处理器信息
			diskstats : 对于所有磁盘设备的磁盘IO统计
			interrupts : 每个cpu的中断计数器
			loadavg : 负载平均值
			meminfo : 系统内存使用明细
			net/dev : 网络接口统计
			net/tcp : 活跃的tcp套接字
			schedstat : 系统级别的cpu调度器统计
			self : 关联当前进程id路径的符号链接
			slabinfo : 内核 slab 分配器缓存统计
			stat : 内核和系统资源的统计
			zoneinfo : 内存区信息

	4.2.2 /sys 
		Linux 还提供了一个 sysfs 文件系统,挂在 /sys

	4.2.3 kstat 
	4.2.4 延时核算 
		开启 CONFIG_TASK_DELAY_ACCT 选项的linux系统按以下状态跟踪每个任务的时间。
			调度器延时:等待轮上cpu
			块IO:等待块IO完成
			交换:等待换页
			内存回收:等待内存回收例程

	4.2.5 微状态核算 
	4.2.6 其他的观测源 
		1.cpu 性能计数器 : perf_events
		2.进程级别的跟踪: ptrace(),strace()
		3.内核跟踪: kprobes
		4.网络嗅探:libpcap,/proc/net/dev,tcpdump
		5.进程核算: atop
		6.系统调用:getrusage()
 
4.3 DTrace 
	4.3.1 静态和动态跟踪 
	4.3.2 探针 
	4.3.3 provider 
	4.3.4 参数 
	4.3.5 D 语言 
	4.3.6 内置变量 
	4.3.7 action 
	4.3.8 变量类型 
	4.3.9 单行命令 
	4.3.10 脚本 
	4.3.11 开销 
	4.3.12 文档和资源 
 
4.4 SystemTap 
	SystemTap 对用户级和内核级的代码都提供了静态和动态的跟踪功能。SystemTap 采用其他的内核框架做源:静态探针用tracepoints,动态探针用 kprobes,用户级别的
探针用 uprobes。这些源也为其他的工具所用(perf,LTTng)。		

	4.4.1 探针 
	4.4.2 tapset 
	4.4.3 action 和内置变量
	4.4.4 示例 
	4.4.5 开销 
	4.4.6 文档和资源 
 
4.5 perf
 
4.6 观测工具的观测 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值