Scheduling tasks on idle cpu

From: David Laight
Date: Mon Apr 11 2022 - 04:26:44 EST


From: Qais Yousef
> Sent: 09 April 2022 18:09
...
> RT scheduler will push/pull tasks to ensure the task will get to run ASAP if
> there's another cpu at lower priority is available

Does that actually happen?
I've seen the following:
34533 [017]: sys_futex(uaddr: 1049104, op: 85, val: 1, utime: 1, uaddr2: 1049100, val3: 4000001)
34533 [017]: sched_migrate_task: pid=34512 prio=120 orig_cpu=14 dest_cpu=17
34533 [017]: sched_wakeup: pid=34512 prio=120 success=1 target_cpu=017
and pid 34512 doesn't get scheduled until pid 34533 finally sleeps.
This is in spite of there being 5 idle cpu.
cpu 14 is busy running a RT thread, but migrating to cpu 17 seems wrong.

This is on a RHEL7 kernel, I've not replicated it on anything recent.
But I've very much like a RT thread to be able to schedule a non-RT
thread to run on an idle cpu.

David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)