Управление процессами ядра Linux

Во-первых, я признаю, что все, что я буду спрашивать, касается нашей домашней работы, но уверяю вас, я не буду спрашивать, не потрудившись по крайней мере два часа.

Описание: мы должны добавить поле с именем max_cpu_percent к типу данных task_struct и манипулировать алгоритмом планирования процессов, чтобы процессы не могли использовать более высокий процент процессора.

например, если я установлю поле max_cpu_percent как 20 для процесса firefox, firefox не сможет использовать более 20% процессора.

Мы написали системный вызов для установки поля max_cpu_percent. Теперь нам нужно посмотреть, работает системный вызов или нет, но мы не смогли получить значение поля max_cpu_percent из пользовательской программы. Можем ли мы это сделать? и как?

Мы попробовали proc/pid/и т. д. Можем ли мы получить значение с помощью этой утилиты?

Кстати, мы можем добавить сюда дополнительные вопросы, если мы не смогли избавиться от чего-то еще

Спасибо всем

Решение:

Причина в том, что мы не изменили блок кода, записывающий вывод в запросы proc. В файле array.c (fs/proc/array.c) есть несколько методов, мы модифицировали функцию, чтобы также печатать значения новых добавленных полей. ядро сейчас компилируется, посмотрим результат примерно через час =)

Это сработало...


person mehmet6parmak    schedule 30.10.2010    source источник
comment
Вы сказали, что пытались использовать /proc/pid. Что ты нашел?   -  person Khaled    schedule 30.10.2010
comment
список полей, но не cpu_max_percent, мы попробовали что-то из списка, что имеет смысл, например /proc/pid/attr, но это тоже не помогло. Я все еще читаю о /proc, но пока не нашел.   -  person mehmet6parmak    schedule 30.10.2010


Ответы (1)


(Если бы вы просто расширили getrlimit/setrlimit, то к настоящему моменту все было бы готово...)

Уже есть механизм, в котором выставляются аналогичные части task_struct: /proc/$PID/stat/proc/$PID/$TID/stat). Найдите функции proc_tgid_stat и proc_tid_stat. Вы можете добавить новые поля в конец этих файлов.

person ephemient    schedule 30.10.2010