[Crash-utility] [PATCH] runq: make tasks in throttled cfs_rqs/rt_rqs displayed
zhangyanfei
zhangyanfei at cn.fujitsu.com
Mon Nov 5 02:52:48 UTC 2012
于 2012年11月02日 05:09, Dave Anderson 写道:
>
>
> ----- Original Message -----
>
>>>> My suggestion re: a new -g flag would have it applicable to both CFS and RT
>>>> run queues (even though the RT groups are currently being shown). I was
>>>> thinking that it might be safest to have "runq" (with no argument) to just
>>>> display a simple list of tasks, and only show group information with -g.
>>>> Are you suggesting that -g would only apply to throttled cfs_rqs/rt_rqs?
>>>>
>>>
>>> nop, '-g' is ok to show all rqs with group information.
>>>
>>> I rewrote the patch by adding option '-g' to runq and not changing any behaviour of
>>> the runq (with no argument).
>>>
>>> TODO:
>>> 1. The help info about the -g option.
>>>
>>> I still have a suggestion: when we dump cfs_rq, we don't dump it hierarchically,
>>> but for the current rt_rq, we dump it hierarchically with group info.
>>> So could I make another patch to remove the rt_rq hierarchy, just make it
>>> displayed identical with cfs_rq display.(For -g will display group info for both rt_rq
>>> and cfs_rq)
>>
>> Yes, that's exactly what I was suggesting.
>>
>> I worry about the large number of kernel structure.member declarations that the
>> command depends upon, because if just one of them changes, it breaks the command.
>> So it would be preferable if the "runq" command (with no arguments) would only use
>> a minimal set of structure.member offsets.
I made two new offset-init functions for runq:
static void cfs_rq_offset_init(void);
static void task_group_offset_init(void);
the first one is used for runq with no arguments. The extra offset init for runq -g
is in the second one. So nothing changed with the original runq after applying the
runq -g patch.
>>
>> Thanks,
>> Dave
>
> And to follow up, I'm still running tests (and will do so overnight) on your latest
> patch, but I immediately seen this on any 2.6.30, 2.6.31 or 2.6.32 kernel, and on
> some 2.6.36 and 2.6.38 kernels, where "runq -g" fails like this:
>
> crash> runq -g
> runq: invalid kernel virtual address: 0 type: "dentry"
> crash>
>
As you have pointed in another mail, this is fixed in patch v2, I think.
> And we certainly want to keep the group information separate from
> the normal "runq" command. Here on a "live" 4 cpu Fedora 3.6.3 kernel,
> the command output exceeds 1000 lines! I'm pretty sure that most
> people will *not* want to see all of this:
>
> crash> runq -g
> CPU 0
> CURRENT: PID: 0 TASK: ffffffff81c13420 COMMAND: "swapper/0"
> RT PRIO_ARRAY: ffff88021e213e28
> [100] GROUP RT PRIO_ARRAY: ffff88020db22000 <system>
> [100] GROUP RT PRIO_ARRAY: ffff8801f8180000 <udisks2.service>
> [no tasks queued]
<snip>
> [no tasks queued]
> GROUP CFS RB_ROOT: ffff88020a844128
> [no tasks queued]
> crash>
>
> In fact, it's difficult to actually find a real *task* that is on
> a run queue from among all of the empty "[no tasks queued]" groups!
>
I've noticed this in the first patch and patch V2 has fixed this.
So I attach the new patch v2 version for runq -g. If you still find
any bug in your tests or have any suggestion about it, that's very
helpful.
TODO:
1. The help info about the -g option.
2. Change rt_rq tasks displayed non-hierarchically.
Many thanks
Zhang
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0001-add-g-option-for-runq-v2.patch
URL: <http://listman.redhat.com/archives/crash-utility/attachments/20121105/fab8341c/attachment.ksh>
More information about the Crash-utility
mailing list