【问题标题】:Linux Kernel Process ManagementLinux内核进程管理
【发布时间】:2010-10-30 16:06:04
【问题描述】:

首先,我承认我会问的所有问题都是关于我们的作业,但我向你保证,我不会在不努力至少两个小时的情况下问。

说明:我们应该在task_struct数据类型中添加一个名为max_cpu_percent的字段,并操纵进程调度算法,使进程不能使用更高百分比的cpu。

例如,如果我将进程 firefox 的 max_cpu_percent 字段设置为 20,则 firefox 将无法使用超过 20% 的 cpu。

我们编写了一个系统调用来设置 max_cpu_percent 字段。现在我们需要查看系统调用是否有效,但我们无法从用户空间程序中获取 max_cpu_percent 字段的值。 我们可以这样做吗?以及如何?

我们尝试了 proc/pid/ 等,我们可以使用这个工具获取值吗?

顺便说一句,如果我们无法摆脱其他问题,我们可能会在此处添加其他问题

谢谢大家

解决方案:

原因是我们没有修改将输出写入 proc 查询的代码块。 在 array.c 文件 (fs/proc/array.c) 中有一些方法,我们修改了函数,以便也打印新添加的字段值。内核现在正在编译,我们将在大约一个小时后看到结果 =)

成功了……

【问题讨论】:

  • 您说您尝试使用 /proc/pid。你发现了什么?
  • 一个字段列表,但不是 cpu_max_percent,我们从列表中尝试了一些有意义的东西,例如 /proc/pid/attr,但这也没有帮助。我仍在阅读 /proc 但还没有找到。

标签: process kernel


【解决方案1】:

(如果你只是扩展getrlimit/setrlimit,那么你现在就完成了......)

已经有一种机制可以暴露task_struct 的相似部分:/proc/<i>$PID</i>/stat(和/proc/<i>$PID</i>/<i>$TID</i>/stat)。查找函数 proc_tgid_statproc_tid_stat。您可以在这些文件的末尾添加新字段。

【讨论】:

    猜你喜欢
    • 2011-09-03
    • 2020-09-26
    • 1970-01-01
    • 2014-05-22
    • 2011-11-29
    • 2020-06-13
    • 2014-05-23
    • 2017-09-19
    • 1970-01-01
    相关资源
    最近更新 更多