lock_stat &rq->lock/1 class name meaning
Hi,
I'm trying to collect contention statistics through /proc/lock_stat about scheduler data structures.
What I obtain if a do "cat /proc/lock_stat" is something like:
...&rq->lock: 13128 13128 0.43 190.53
103881.26 97454 3453404 0.00
401.11 13224683.11
---------
&rq->lock 645 [<ffffffff8103bfc4>] task_rq_lock+0x43/0x75 &rq->lock 297 [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a &rq->lock 360 [<ffffffff8103c4c5>] select_task_rq_fair+0x1f0/0x74a &rq->lock 428 [<ffffffff81045f98>] scheduler_tick+0x46/0x1fb --------- &rq->lock 77 [<ffffffff8103bfc4>] task_rq_lock+0x43/0x75 &rq->lock 174 [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a &rq->lock 4715 [<ffffffff8103ed4b>] double_rq_lock+0x42/0x54 &rq->lock 893 [<ffffffff81340524>] schedule+0x157/0x7b8
.
.
.
...
&rq->lock/1: 11526 11488 0.33 388.73
136294.31 21461 38404 0.00
37.93 109388.53
-----------
&rq->lock/1 11526 [<ffffffff8103ed58>] double_rq_lock+0x4f/0x54
-----------
&rq->lock/1 5645 [<ffffffff8103ed4b>] double_rq_lock+0x42/0x54 &rq->lock/1 1224 [<ffffffff81340524>] schedule+0x157/0x7b8 &rq->lock/1 4336 [<ffffffff8103ed58>] double_rq_lock+0x4f/0x54 &rq->lock/1 181 [<ffffffff8104ba65>] try_to_wake_up+0x127/0x25a
I guess the first one is about the per-rq (per-CPU) spinlock, but what about the second? What the "/1" stands for? Since every rq has a different spinlock, does &rq->lock group numbers from all the runqueues?
Thanks a lot,
Juri
Quoted 46 lines · Juri Lelli
Hi,
I'm trying to collect contention statistics through/proc/lock_statabout scheduler data structures.What I obtain if a do "cat
/proc/lock_stat" is something like:
...&rq->lock: 13128 13128 0.43
190.53 103881.26 97454 3453404 0.00
401.11 13224683.11
---------&rq->lock645 [<ffffffff8103bfc4>]task_rq_lock+0x43/0x75&rq->lock297 [<ffffffff8104ba65>]try_to_wake_up+0x127/0x25a&rq->lock360 [<ffffffff8103c4c5>]select_task_rq_fair+0x1f0/0x74a&rq->lock428 [<ffffffff81045f98>]scheduler_tick+0x46/0x1fb
---------&rq->lock77 [<ffffffff8103bfc4>]task_rq_lock+0x43/0x75&rq->lock174 [<ffffffff8104ba65>]try_to_wake_up+0x127/0x25a&rq->lock4715 [<ffffffff8103ed4b>]double_rq_lock+0x42/0x54 &rq->lock 893 [<ffffffff81340524>] schedule+0x157/0x7b8.
.
.
...
&rq->lock/1: 11526 11488 0.33
388.73 136294.31 21461 38404 0.00
37.93 109388.53
-----------
&rq->lock/1 11526 [<ffffffff8103ed58>]double_rq_lock+0x4f/0x54 -----------&rq->lock/1 5645 [<
ffffffff8103ed4b>]double_rq_lock+0x42/0x54
&rq->lock/1 1224 [<ffffffff81340524>]schedule+0x157/0x7b8
&rq->lock/1 4336 [<ffffffff8103ed58>]double_rq_lock+0x4f/0x54
&rq->lock/1 181 [<ffffffff8104ba65>]try_to_wake_up+0x127/0x25a
Quoted 2 lines
I guess the first one is about the per-rq (per-CPU) spinlock, but what about the second? What the "/1" stands for?
It is also rq but it's subclass is 1.
Take a look at raw_spin_lock_nested(&this_rq->lock, SINGLE_DEPTH_NESTING); in _double_lock_balance()
Quoted 2 lines
Since every rq has a different spinlock, does
&rq->lockgroup numbers from all the runqueues?
Yup.
Thanks,
Yong
Quoted 8 lines
Thanks a lot,
Juri
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Thanks!
Quoted 10 lines · Yong Zhang
Quoted 9 lines · Juri Lelli
Hi,
I'm trying to collect contention statistics through/proc/lock_statabout scheduler data structures.What I obtain if a do "cat
/proc/lock_stat" is something like:
...&rq->lock: 13128 13128 0.43
[...]
Quoted 7 lines
Quoted 2 lines
I guess the first one is about the per-rq (per-CPU) spinlock, but what about the second? What the "/1" stands for?
It is also rq but it's subclass is 1.
Take a look at
raw_spin_lock_nested(&this_rq->lock, SINGLE_DEPTH_NESTING); in_double_lock_balance()
Ok, I've put more light on this also looking at lockdep.h comments and lockdep-design documentation.
Since I'm probably not the only one having troubles undestanding lock_stat output, maybe could be useful to add something on this inside lockstat documentation (I can try to do this). What you think?
Juri
Quoted 21 lines · Juri Lelli
Thanks!
Quoted 10 lines · Yong Zhang
Quoted 9 lines · Juri Lelli
Hi,
I'm trying to collect contention statistics through/proc/lock_statabout scheduler data structures.What I obtain if a do "cat
/proc/lock_stat" is something like:
...&rq->lock: 13128 13128 0.43
[...]Quoted 7 lines
Quoted 2 lines
I guess the first one is about the per-rq (per-CPU) spinlock, but what about the second? What the "/1" stands for?
It is also rq but it's subclass is 1.
Take a look at
raw_spin_lock_nested(&this_rq->lock, SINGLE_DEPTH_NESTING); in_double_lock_balance()
Quoted 7 lines
Ok, I've put more light on this also looking at
lockdep.hcomments and lockdep-design documentation.Since I'm probably not the only one having troubles undestanding
lock_statoutput, maybe could be useful to add something on this inside lockstat documentation (I can try to do this). What you think?
Any improvement will be good :)
Cc'ing PeterZ and Ingo.
Thanks,
Yong
Quoted 25 lines · Yong Zhang
Quoted 24 lines · Juri Lelli
Thanks!
Quoted 10 lines · Yong Zhang
Quoted 9 lines · Juri Lelli
Hi,
I'm trying to collect contention statistics through/proc/lock_statabout scheduler data structures.What I obtain if a do "cat
/proc/lock_stat" is something like:
...&rq->lock: 13128 13128 0.43 [...]Quoted 7 lines
Quoted 2 lines
I guess the first one is about the per-rq (per-CPU) spinlock, but what about the second? What the "/1" stands for?
It is also rq but it's subclass is 1.
Take a look at
raw_spin_lock_nested(&this_rq->lock, SINGLE_DEPTH_NESTING); in_double_lock_balance()Ok, I've put more light on this also looking at
lockdep.hcomments and lockdep-design documentation.
Quoted 6 lines
Quoted 4 lines
Since I'm probably not the only one having troubles undestanding
lock_statoutput, maybe could be useful to add something on this inside lockstat documentation (I can try to do this). What you think?Any improvement will be good :)
I think Documentation/lockstat.txt is out of date, the last change of this file can be back to Thu Nov 19 13:54:05 2009.