关键词:sar、sadc、ksar、/proc/stat、/proc/cpuinfo、/proc/meminfo、/proc/diskstats。
在之前有简单介绍过sar/ksar,最近在使用中感觉需要再深入了解一下。
ksar/sar从内核采集数据,并输出可读性数据。分析相关源码,有助于知道数据来龙去脉。--------------------------------------1. sar源码概览
ksar显示sar/sadc获取的数据,并图形化显示。数据从内核节点,到sadc/sar转换,再到ksar显示。----------------------------2. ksar处理流程
对照ksar每张图表,然后sar/sadc对应的采集转换,再到内核每个数据项含义解析。--------------------------------------------3. ksar解读
期望是从ksar上的图表能对应到内核的代码,明白这些图表数据根源。
1. sar源码概览
sar作为sysstat一部分,相关的工具还包括sadc、sa1、sa2。
sa1负责收集并存储每天系统动态信息到一个二进制的文件中,sa1是sadc所涉及的程序前端程序。通常由计划任务工具cron来调用。打开sa1文件不难看出就是调用sadc今次那个采集数据。
sa2就是调用sar命令,将当日二进制日志文件数据存储到文本文件中。
sadc是系统动态数据收集工具,收集的数据被写入一个二进制文件中,它是sar工具后端。
sar负责解析sadc保存的数据,并显示出来。
当使用sar进行数据统计的时候,通过pstree `pidof sar`,可以看出sar调用了sadc。
sar───sadc
1.1 sadc信息采样
sadc入口在sadc.c中,主要是解析参数、启动一个interval alarm、rw_sa_stat_loop()读取数据。
通过alarm触发SIGALRM实现周期性读取,SIGINT停止读取。
int main(int argc, char **argv) { int opt = 0; char ofile[MAX_FILE_LEN], sa_dir[MAX_FILE_LEN]; int stdfd = 0, ofd = -1; int restart_mark; long count = 0; /* Get HZ */ get_HZ(); /* Compute page shift in kB */ get_kb_shift(); ofile[0] = sa_dir[0] = comment[0] = '