I had hesitated about putting in the nr_running and h_nr_running values. I'll remove
those and add the "[CURRENT]" label.
Thanks,
Anthony
-----Original Message-----
From: crash-utility-bounces(a)redhat.com [mailto:crash-utility-
bounces(a)redhat.com] On Behalf Of Dave Anderson
Sent: Friday, November 08, 2013 5:58 AM
To: Discussion list for crash utility usage, maintenance and development
Subject: Re: [Crash-utility] patch for slight modification to runq -g
command
----- Original Message -----
>
> The "runq -g" output for that cpu looks like this:
>
> CPU 1
> CURRENT: PID: 1212 CFS: ffff880035cc2f00 TASK: ffff880035f60000
> COMMAND: "bash"
> TASK_GROUP RT_RQ: ffff88007fa541e8
> RT PRIO_ARRAY: ffff88007fa541e8
> [no tasks queued]
> TASK_GROUP CFS_RQ: ffff88007fa540f0
> CFS RB_ROOT: ffff88007fa54118
> GROUP: ffff880078af7800 CFS_RQ: ffff880035cc2f00 RB_ROOT:
ffff880035cc2f28 nr_running: 4294967297 h_nr_running:
201908650262921217
> [120] PID: 1212 TASK: ffff880035f60000 COMMAND: "bash"
>
> I don't understand where those values are coming from, because if
> I look at the CFS_RQ, it shows this:
>
> crash> cfs_rq.nr_running,h_nr_running ffff880035cc2f00
> nr_running = 1
> h_nr_running = 1
> crash>
The problem above is due to the fact that both nr_running and
h_nr_running
are of type unsigned int but your patch reads each of them as a ulong:
crash> eval 4294967297
hexadecimal: 100000001
decimal: 4294967297
octal: 40000000001
binary:
000000000000000000000000000000010000000000000000000000000000000
1
crash> eval 201908650262921217
hexadecimal: 2cd52d900000001
decimal: 201908650262921217
octal: 13152455440000000001
binary:
000000101100110101010010110110010000000000000000000000000000000
1
crash>
+ readmem(cfs_rq + OFFSET(cfs_rq_nr_running), KVADDR,
+ &nr_running, sizeof(ulong), "cfs_rq nr_running",
+ FAULT_ON_ERROR);
+ if (VALID_MEMBER(cfs_rq_h_nr_running)) {
+ readmem(cfs_rq + OFFSET(cfs_rq_h_nr_running), KVADDR,
+ &h_nr_running, sizeof(ulong), "cfs_rq
h_nr_running",
+ FAULT_ON_ERROR);
+ fprintf(fp, " nr_running: %lu h_nr_running: %lu ", nr_running,
h_nr_running);
+ } else {
+ fprintf(fp, " nr_running: %lu ", nr_running);
+ }
But again, I don't seen any compelling reason to display them at all --
especially
now that your patch displays the cfs_rq from which they come. If you
really
need to see their values, just dump the data structure.
And as I mentioned earlier, the CFS address in the CURRENT: line is
confusing and
redundant. Perhaps you could clarify things by appending "[CURRENT]"
after
the task identifier in the queue, i.e., like:
[120] PID: 9048 TASK: ffff8808b07e4200 COMMAND: "actmain"
[CURRENT]
Thanks,
Dave
--
Crash-utility mailing list
Crash-utility(a)redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility