KSE system scope vs non system scope threads

Christopher M. Sedore cmsedore at maxwell.syr.edu
Sun Nov 30 06:10:12 PST 2003


 

________________________________

From: Daniel Eischen [mailto:eischen at vigrid.com]
On Sat, 29 Nov 2003, Christopher M. Sedore wrote:

[...]
>>  I ask this because I'm observing some behavior that I don't expect.  When
>> running a threaded program with KSE and non-system-scope threads, I see
>> performance degradation in my network traffic when I'm attempting to connect
>> to remote hosts that are down.  Libthr doesn't see this degradation, and KSE
>> with system-scope threads doesn't perform as well as libthr, but is much
>> closer.
>
>Define what you think is degradation.  Process scope threads run in the
>same KSEG.  They are all kept in the same priority-based run-queue.
>If you have other threads that have equal or higher priority than
>the network threads in question, they will/may run before those
>threads.  All it takes is one thread that doesn't block (CPU-bound)
>to eat away at the time allotment for your other threads.
>
>If a remote host is down and a thread can't connect to it, that thread
>should block allowing other threads to run.  Are you using blocking
>or non-blocking connects?

I'm using blocking connects.  Degradation is I should be moving ~5-7MB/sec (and I do if I don't try to connect to any hosts that are down).  Once I do, I see fluctuations from ~15-20KB/sec (note: KB) to 3-5MB/sec, somewhat associated with when the connects happen.  Running libthr, I move 6-7MB/sec consistently (until everything hangs up showing sigwait as the status in top, anyway).  System scope threads turn in numbers from 5-6MB/sec.  (Note I don't have any hang problems under KSE, only libthr.)
 
On Monday I'm going to try David Xu's suggestion of trying v1.18 of thr_spinlock.c to see if that helps.

-Chris


More information about the freebsd-threads mailing list