sched/pelt: Introduce util_burst
Util_burst allows to have an estimation of the size of a task independently from co-scheduled tasks and their nice value. It provides a utilization value as if a task had not been sharing the rq with other tasks. This means that util_burst: - is not be capped when a CPU is fully utilized. util_avg is capped by the amount of time the task receives from the scheduler. - grows a bit faster than util_avg when there are co-scheduled tasks. util_burst doesn't reflect the scheduler sharing time with other tasks as if the task was idle. Meaning that if 2 tasks share a rq, the scheduler will share time equally at the granularity of a timeslice. When the second task is running, the util_avg signal of the first task is decreased as this task as not running. Util_burst discards doesn't account the time when a task is enqueued but not running. To achieve this: - cache util_sum/period_contrib values when a task starts to run - account the running time until the task is dequeued - upon dequeue, update util_burst by accounting the running time all at once, as if the task had been running uninterrupted.
Loading
Please register or sign in to comment