内核维护了各种统计数据,称为计数器,用于对事件计数。
通常计数器实现为无符号的整型数,发生事件时递增。
例如 有网络包接收的计数器,磁盘 IO计数器,系统调用执行的计数器。
计数器的使用可以认为是“零开销”的,因为它们默认开启,而且始终由内核维护。
- vmstat 虚拟内存和物理内存的统计,系统级别
- mpstat 每个CPU的使用情况
- iostat 每个磁盘的IO使用情况,由块设备接口报告。
- netstat 网络接口的统计,TCP/IP栈的统计,以及每个连接的一些统计信息。
- sar 各种各样的统计,能归档历史数据,
- ps 进程状态,进程的各种统计信息,包括CPU和内存的使用。
- top 按照一个统计计数排序,显示排名最高的进程
- pmap 进程的内存段和使用情况
跟踪收集每一个事件的数据以供分析。
跟踪框架一般不是默认开启的,因为跟踪捕获数据会有CPU开销,还有不小的存储空间来存放数据。
这些会拖慢跟踪对象,在解释测量时间的时候需要加以考虑。
日志,包括系统日志,可以认为是一种默认开启的低频率跟踪,
日志会包括每一个事件的数据,虽然通常只针对偶发事件,如错误和警告。