一、背景
在一些cpu资源并不是很充足的系统上,往往会出现cpu持续一段时间特别忙碌的情况,cpu持续忙碌是一个很不好的状态,可能会伴随着有些任务的调度时延变大,系统里的一些业务如果要求一定的实时性的话,这时候就会产生问题。
编写一个ko来抓取cpu的忙碌状态是有意义的,可以用来确切的知道,cpu是否持续忙碌,要注意,持续忙碌的状态如果只是通过上层来用一些工具或者cat /proc/stat节点,这么去判断cpu是否忙碌是不够精准的,因为/proc/stat节点的数据是基于userhz的精度的,是有误差的。而通过注册sched_switch事件的回调叠加一些判断逻辑是可以精准的拿到cpu是否持续忙碌的信息的。
在第二章里,我们给出抓取的ko源码及使用方法,在第三章里,我们进行相关解释。
二、ko源码及使用方法
2.1 ko源码
#include <linux/module.h> #include <linux/capability.h> #include <linux/sched.h> #include <linux/uaccess.h> #include <linux/proc_fs.h> #include <linux/ctype.h> #include <linux/seq_file.h> #include <linux/poll.h> #include <linux/types.h> #include <linux/ioctl.h> #include <l