12 Star 26 Fork 11

openEuler-competition / Summer 2021

 / 详情

No 27. 优化 Linux 系统的 CPU 占用时间统计

待办的
任务
创建于  
2021-03-31 09:55

Linux 系统常用 top 来查看CPU的占用率和各Task的CPU占用率。TOP 显示的CPU占用率的数据来源是 /proc/stat 。/proc/stat 个数据字段的具体含义可以参考“Documentation/filesystems/proc.rst”中 “1.8 Miscellaneous kernel statistics in /proc/stat”。内核中该CPU占用率的统计是基于 cpu tick 来统计的,比如 1 个 tick 间隔是 4ms,当 tick 中断到来时,cpu 运行的是哪个task,就把整个 4ms 全部算到这个 task 上。这样统计简单,开销小,针对长时间运行的 task,误差也可以接受。但是如果针对频繁切换的 task,统计误差就会很大,甚至不可接受。

举个简单例子:

$ vim usleep.c

#include <unistd.h>

int main()
{
        int i = 0;
        for (;;) {
                if (!(i++ % 10000))
                        usleep(1);
        }

        return 0;
}

$ gcc usleep.c -o usleep
$ taskset -c 1 ./usleep

# 使用 top 观察 CPU 1 的占有率和 usleep task 的CPU占用率。

难度:高

导师: @Xie XiuQi

联系方式:xiexiuqi@huawei.com

项目技术要求:

  • 掌握基本的C语言编程能力,有linux内核编程基础
  • 了解内核进程调度

本题目要求对内核中CPU占有率的统计进行改进,减少误差,能尽量接近真实的CPU 占用率:

  • 基于 openEuler 5.10 内核
  • 改进 top 显示的 CPU 占用率
  • 改进 top 显示的 task 的CPU占用率

参考资料:

评论 (0)

Xie XiuQi 创建了任务
Xie XiuQi 修改了描述
Joyee 修改了标题
Joyee 修改了标题
Joyee 修改了描述
Xie XiuQi 修改了描述
Xie XiuQi 修改了描述
展开全部操作日志

登录 后才可以发表评论

状态
负责人
项目
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
预计工期 (小时)
参与者(1)
1
https://gitee.com/openeuler-competition/summer-2021.git
git@gitee.com:openeuler-competition/summer-2021.git
openeuler-competition
summer-2021
Summer 2021

搜索帮助

53164aa7 5694891 3bd8fe86 5694891