lkml.org 
[lkml]   [2010]   [Apr]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: Question about lock sequence
On 04/10/10 22:07, Frederic Weisbecker wrote:
> On Sat, Apr 10, 2010 at 07:44:07PM +0900, Hitoshi Mitake wrote:
>>
>> Hi,
>>
>> I found that my understand about lockdep is completely wrong :( ,
>> so state machine of perf lock should be fixed before optimization.
>>
>> And I found that behaviour related to some of spin locks are strange.
>> The concrete example is lock sequences targeting dcache_lock (defined in
>> head of fs/dcache.c).
>>
>> I made a little (and not essential) change to perf lock, and observe
>> lock sequence targeting it.
>> Changed perf lock shows sequence of locks in time order,
>> and I grepped the output of it with dcache, like this:
>>
>> % sudo ./perf lock report | grep dcache
>>
>> The head part of result is this:
>> #<name>-<pid> <time (in u64)> <action> <address of lockdep>
<name of lock>
>> perf-3238 92430534170 acquire: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92430536714 acquire: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92431444481 acquire: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92431446061 acquired: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92431448157 acquire: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92431449670 acquired: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92432371136 acquire: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92432372712 acquired: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92432374718 acquire: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92432376173 acquired: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92433315563 acquire: 0xffffffff81a4b398 dcache_lock
>> perf-3238 92433317173 acquired: 0xffffffff81a4b398 dcache_lock
>>
>> There are too many acquire and acquired without corresponding release
>> (or contended).
>> If dcache_lock is rwlock and these acquires mean read locks, this is not
>> so strange.
>> But, for me, this is a pattern of dead lock.
>> Of course perf lock finished its work, so there is no actual dead lock.
>>
>> If you know something about this behaviour of lock, could you tell me?
>
>
> If you can see nesting acquires on an rwlock, it's normal, because it can
> be recursively acquired.
>
> What wouldn't be normal is an unbalanced stacking of acquire - release.
>
> If you see:
>
> acquire
> acquire
> acquire
>
> You should find the symetric releases:
>
> release
> release
> release

Yes. All acquire must have their corresponding release.
According to my result, some of ordinary spin locks
make the not symmetric pattern.


>
> Otherwise we have something wrong.

I'm considering it. But I cannot find something wrong now :(
There should be some cause...

>
> Also I wonder about the fact you seem to have acquire without acquired
> in your trace.

Yeah, if acquire is trylock, it isn't strange.
But these acquires are not trylock.

>
> I'm going to look at this, hopefully I'll survive after looking in
all these
> rwlock_* _rwlock_* __rwlock_* arch_* raw* _raw* __raw* do_raw* mess... :)
>
>

Oh thanks :) I'll continue my quest the cause.
Hitoshi


\
 
 \ /
  Last update: 2010-04-10 17:15    [W:0.098 / U:0.696 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site