[Crash-utility] [PATCH] Fix bugs in runq
Dave Anderson
anderson at redhat.com
Tue Aug 28 15:48:18 UTC 2012
----- Original Message -----
> Hmm, may be confusing here...
>
> >> crash> runq
> >> CPU 0 RUNQUEUE: ffff880028216680
> >> CURRENT: PID: 5125 TASK: ffff88010799d540 COMMAND: "sh"
> >> RT PRIO_ARRAY: ffff880028216808
> >> [ 0] PID: 5136 TASK: ffff8801153cc040 COMMAND: "rtloop99"
> >> CHILD RT PRIO_ARRAY: ffff88013b050000
> >> [ 0] PID: 5133 TASK: ffff88010799c080 COMMAND: "rtloop99"
> >> [ 1] PID: 5131 TASK: ffff880037922aa0 COMMAND: "rtloop98"
> >> [ 98] PID: 5128 TASK: ffff88011bd87540 COMMAND: "rtloop1"
> >> PID: 5130 TASK: ffff8801396e7500 COMMAND: "rtloop1"
> >> PID: 5129 TASK: ffff88011bf5a080 COMMAND: "rtloop1"
> >> PID: 6 TASK: ffff88013d7c6080 COMMAND: "watchdog/0"
> >> PID: 3 TASK: ffff88013d7ba040 COMMAND: "migration/0"
> >> [ 1] PID: 5134 TASK: ffff8801153cd500 COMMAND: "rtloop98"
> >> PID: 5135 TASK: ffff8801153ccaa0 COMMAND: "rtloop98"
> >> ...
> >
> > whereas on cpu 1, the "CHILD RT PRIO ARRAY" line is on the same
> > line as
> > priority 54:
> >
> >> CPU 1 RUNQUEUE: ffff880028296680
> >> CURRENT: PID: 5086 TASK: ffff88006eecc040 COMMAND: "bash"
> >> RT PRIO_ARRAY: ffff880028296808
> >> [ 0] PID: 5137 TASK: ffff880107b35540 COMMAND: "rtloop99"
> >> PID: 10 TASK: ffff88013cc2cae0 COMMAND: "watchdog/1"
> >> PID: 2852 TASK: ffff88013bd5aae0 COMMAND: "rtkit-daemon"
> >> [ 54] CHILD RT PRIO_ARRAY: ffff880138978000
> >> [ 54] PID: 5132 TASK: ffff88006eecd500 COMMAND: "rtloop45"
> >> CFS RB_ROOT: ffff880028296718
> >
> > What is it a "child" of? Or maybe "CHILD" the wrong terminology
> > here?
>
>
> Now, the scheduler is not limited to schedule processes, but can also
> work with larger entities. This allows for implementing group
> scheduling.
>
> So for every RT PRIO_ARRAY, each linked list for each priority has
> its element embedded in a structure "sched_entity". This "sched_entity"
> could represent two things: a process or a child rt runqueue.
>
> for example, in cpu0, array[0] has four linked elements:
> 1. task 5136
> 2. a child rt rq
> 3. task 6
> 4. task 3
> and the child rt rq has its own runqueue array with 5 tasks in it:
> task 5133 with a priority of 0, task 5131 with a priority of 1, and the
> last three tasks -- 5128, 5230, 5129 with a priority of 98.
Right, I understand. What I don't understand is the use of the "child"
terminology. If CONFIG_RT_GROUP_SCHED is configured, then the sched_rt_entity
may reference a "group" run queue. To me, it doesn't make sense to use
the term "CHILD RT PRIO_ARRAY" in the header. Wouldn't it make more sense to
call it a "GROUP RT PRIO_ARRAY"? Like this:
crash> runq
CPU 0 RUNQUEUE: ffff880028216680
CURRENT: PID: 5125 TASK: ffff88010799d540 COMMAND: "sh"
RT PRIO_ARRAY: ffff880028216808
[ 0] PID: 5136 TASK: ffff8801153cc040 COMMAND: "rtloop99"
GROUP RT PRIO_ARRAY: ffff88013b050000
[ 0] PID: 5133 TASK: ffff88010799c080 COMMAND: "rtloop99"
[ 1] PID: 5131 TASK: ffff880037922aa0 COMMAND: "rtloop98"
[ 98] PID: 5128 TASK: ffff88011bd87540 COMMAND: "rtloop1"
PID: 5130 TASK: ffff8801396e7500 COMMAND: "rtloop1"
PID: 5129 TASK: ffff88011bf5a080 COMMAND: "rtloop1"
PID: 6 TASK: ffff88013d7c6080 COMMAND: "watchdog/0"
PID: 3 TASK: ffff88013d7ba040 COMMAND: "migration/0"
[ 1] PID: 5134 TASK: ffff8801153cd500 COMMAND: "rtloop98"
PID: 5135 TASK: ffff8801153ccaa0 COMMAND: "rtloop98"
...
CPU 1 RUNQUEUE: ffff880028296680
CURRENT: PID: 5086 TASK: ffff88006eecc040 COMMAND: "bash"
RT PRIO_ARRAY: ffff880028296808
[ 0] PID: 5137 TASK: ffff880107b35540 COMMAND: "rtloop99"
PID: 10 TASK: ffff88013cc2cae0 COMMAND: "watchdog/1"
PID: 2852 TASK: ffff88013bd5aae0 COMMAND: "rtkit-daemon"
[ 54] GROUP RT PRIO_ARRAY: ffff880138978000
[ 54] PID: 5132 TASK: ffff88006eecd500 COMMAND: "rtloop45"
CFS RB_ROOT: ffff880028296718
...
Thanks,
Dave
More information about the Crash-utility
mailing list