On Mon, Apr 1, 2024 at 8:20 AM Honglei Wang jameshongleiwang@126.com wrote:
On 2024/3/28 14:27, mingyang.cui wrote:
When rt_mutex_setprio changes a task's scheduling class to RT, sometimes the task's vruntime is not updated correctly upon return to the fair class. Specifically, the following is being observed:
- task has just been created and running for a short time
- task sleep while still in the fair class
- task is boosted to RT via rt_mutex_setprio, which changes the task to RT and calls check_class_changed.
- check_class_changed leads to detach_task_cfs_rq, at which point the vruntime_normalized check sees that the task's sum_exec_runtime is zero, which results in skipping the subtraction of the rq's min_vruntime from the task's vruntime
Did you do the test on the latest tree? vruntime_normalized was removed by e8f331bcc2 (sched/smp: Use lag to simplify cross-runqueue placement).
Indeed (I was looking at an older tree last week and missed it was removed as well). Though something like this change probably will be needed for the -stable trees?
thanks -john