Re: locking hierarchy based on lockdep

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 8 Nov 2006, Ingo Molnar wrote:

> 
> * Jason Baron <[email protected]> wrote:
> 
> > > this would certainly be the simplest thing to do - we could extend 
> > > /proc/lockdep with the list of 'immediately after' locks separated by 
> > > commas. (that list already exists: it's the lock_class.locks_after list)
> >
> > So below is patch that does what you suggest, although i had to add 
> > the concept of 'distance' to the patch since the locks_after list 
> > loses this dependency info afaict. i also wrote a user space program 
> > to sort the locks into cluster of interelated locks and then sorted 
> > within these clusters...the results show one large clump of 
> > locks...perhaps there are a few locks that time them all together like 
> > scheduler locks...but i couldn't figure out which ones to exclude to 
> > make the list look really pretty (also, there could be a bug in my 
> > program :). Anyways i'm including my test program and its output 
> > too...
> 
> nice!
> 
> small detail: i'm wondering why 'distance' is needed explicitly? The 
> dependency graph as it is represented by locks_after should be a full 
> representation of all locking dependencies. What is the intended 
> definition of 'distance' - the distance from the root of the dependency 
> tree? (Maybe i'm misunderstanding what you are trying to achieve.)
> 

'distance' is associated with a link, and is meant to represent the number 
of intervening locks. So a distance of 1 b/w say lock a and b is to say 
there is no intervening lock, whereas 2 would mean there is 1 
intervening lock etc.

The reason i added this was that in my algorithm to order locks, say i 
come to lock a, which has lock b and lock c in its 'after' list. I don't 
know at that point if lock b needs to come before c, or maybe that c has 
to come before b.

You are right though, i think that the data in the locks after lists is 
sufficient to re-create the entire graph, since its acyclic, but by simply 
printing out nodes of distance '1', the algorithm is greatly simplified. 
Otherwise, i'd have to first reconstruct the graph...

Also, i was only looking for a link to be label as distance 1, or not...so 
we only need to associate 1 bit of information with each link, if you are 
concerned about struture bloat.

thanks,

-jason
-
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/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux