Robert Watson wrote:
On Sat, 9 Oct 2010, David Xu wrote:

 Create a global thread hash table to speed up thread lookup, use
 rwlock to protect the table. In old code, thread lookup is done with
 process lock held, to find a thread, kernel has to iterate through
 process and thread list, this is quite inefficient.
 With this change, test shows in extreme case performance is
 dramatically improved.

Could you say a little more about which workloads this helps with? Obviously, things that look up thread IDs, but since I'm less familiar with the threading code, a hand-wave would give me useful intuitions!

BTW, my experience with switching to read-write locking in the pcbinfo hash lookup is that it made a huge difference, and that I experience only fairly incremental performance changes on <= 8 cores by trying to go to more refined models (such as encouraging CPU affinity for table entries, etc).

Robert

I have tested it with my  simple benchmark program:
http://people.freebsd.org/~davidxu/tidhash/sigperf.c

run it with following command:
/usr/bin/time ./sigperf 150 20000

result before the  change:
http://people.freebsd.org/~davidxu/tidhash/thread_find.txt
after the change:
http://people.freebsd.org/~davidxu/tidhash/tfind.txt

_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to