Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 19 Jul 2008 23:33:02 -1000 (HST)
From:      Jeff Roberson <jroberson@jroberson.net>
To:        Attilio Rao <attilio@freebsd.org>
Cc:        arch@freebsd.org, ivmaykov@gmail.com
Subject:   Re: witness performance improvements
Message-ID:  <20080719233219.O954@desktop>
In-Reply-To: <3bbf2fe10807190525y65facf80uad2a974619198186@mail.gmail.com>
References:  <20080718163231.B954@desktop> <3bbf2fe10807190525y65facf80uad2a974619198186@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 19 Jul 2008, Attilio Rao wrote:

> 2008/7/19, Jeff Roberson <jroberson@jroberson.net>:
>> Hello,
>>
>>  I have a patch that improves witness performance available at:
>>
>>  http://people.freebsd.org/~jeff/witness.diff
>>
>>  This improvement comes at the cost of some significant space overhead.  It
>> changes the witness graph from a linked tree to a matrix based approach.
>> Relationships can be quickly resolved with a table lookup.  The table size
>> is WITNESS_COUNT^2, or 1MB with the current count of 1024.
>>
>>  This patch also makes struct witness objects persistent even after the last
>> lock using this name has been removed.  This is helpful for short lived
>> objects which may be created frequently.
>>
>>  To reduce lock contention on SMP witness_checkorder() now runs without the
>> w_mtx when there are no lock violations.  I also cache a lock_list_entry in
>> each thread as allocating these requires the w_mtx.  The entry is disposed
>> of at thread_exit().
>>
>>  There is also a new sysctl that produces dot output which graphs lock order
>> relationships with the graphviz program.
>
> As I alredy said, I don't like this.
> I mostly prefer the current approach (comma separated stuff) that one
> can shape as its need.
> If you also think there are some informations the current sysctl
> doesn't export and it should we could fix it, but IMHO we should axe
> this part of the patch (I have still to look at this patch, but I
> remind in the Isilon's version it was a good amount of structures and
> modifies just to handle that part).

Can you estimate how much effort it would take to port your previous graph 
solution to the current witness code?


>
>>  Most of this work was done by Ilya Maykov while he was at Isilon systems.
>> The locking work and some cleanup/porting/refinement was done by me on
>> behalf of Nokia.
>>
>>  The performance improvement can be significant.  It is only on the order of
>> 10-20% for buildkernel but on a packet forwarding test at nokia it sped
>> things up by 5x putting a witness enabled kernel within about 50% of the
>> performance of a kernel without.  I believe buildworld isn't helped as much
>> because forking and exiting a lot would then contend on the witness lock.
>>
>>  I'm mostly interested in hearing what people have to say about the space
>> bloat.  I believe it is in a commit ready state.
>
> This should not be a big problem, it is a debugging kernel after all
> if it has WITNESS.
>
> I hope I will have more time for a detailed revision in the day.

I would appreciate that.

Thanks,
Jeff

>
> Thanks,
> Attilio
>
>
> -- 
> Peace can only be achieved by understanding - A. Einstein
>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080719233219.O954>