witness performance improvements
Julian Elischer
julian at elischer.org
Sat Jul 19 07:42:57 UTC 2008
Jeff Roberson wrote:
> 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.
>
cool... got sample output?
> 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.
Since witness is not usually on production systems, I don't see a
problem with giving it 1 MB.
kjfnb7
>
> Thanks,
> Jeff
> _______________________________________________
> freebsd-arch at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-arch
> To unsubscribe, send any mail to "freebsd-arch-unsubscribe at freebsd.org"
More information about the freebsd-arch
mailing list