[libdispatch-dev] Experimental Pthread Work Queue Support for FreeBSD
Robert Watson
rwatson at FreeBSD.org
Thu Dec 24 11:25:34 PST 2009
On Tue, 15 Dec 2009, David Leimbach wrote:
> Thanks for clarifying! That's very exciting! I really like some things
> about libdispatch and am glad to see it being embraced for more than just
> Mac OS X.
There appear to be lots of technical upsides to adopting this approach, but as
the pthread work queue API is non-public in Mac OS X, we should think fairly
hard about the forward API considerations. On the other hand, this is a great
chance for Apple to get feedback on how well it works via second independent
implementation :-). From chatting with Stacey offline, I know he's considered
a number of variations on the Apple approach, so it inspires some amount of
confidence that he's concluded the Apple one was the best one.
I'm in the process of doing a bit of application work that will allow me to do
some performance measurement on a popular threaded application. This will
alow me to make some comparisons along a number of dimensions: FreeBSD<->Mac
OS X, GCD<->pthread worker pool, and also now the internal GCD thread pool vs
pthread work queue approaches. It will probably be a couple of weeks before I
have anything to present, but will follow up to the list once there's
something real to report.
Robert N M Watson
Computer Laboratory
University of Cambridge
>
> Dave
>
> On Tue, Dec 15, 2009 at 12:40 PM, Stacey Son <sson at freebsd.org> wrote:
> Hi,
>
> Robert was the one that asked me if I could look into this so
> hopefully he has not already done this... :)
>
> Currently the GCD port for FreeBSD uses the user-level thread worker
> code in libdispatch and not the pthread_workqueue_*_np() calls like
> darwin. The pthread work queue code below pretty much follows the
> same idea that darwin uses. It is a kernel assisted thread pool
> implementation. The kernel manages the creation and destruction of
> threads in the work pool based on if it sees lots of the worker
> threads blocking, being idle for a (relatively) long time, etc. I
> don't know if it performs any better than the user-level thread pool
> since I have not yet done any performance testing.
>
> Best Regards,
>
> -stacey.
>
>
> On Dec 15, 2009, at 1:26 PM, David Leimbach wrote:
>
> I think Robert Watson has already done this?
> My understanding is that 8-STABLE supports this.
>
> Am I wrong?
>
> Dave
>
> On Tue, Dec 15, 2009 at 8:09 AM, Stacey Son <sson at freebsd.org>
> wrote:
> Hi All,
>
> Just in time for the holidays I have created a
> couple of patches for FreeBSD-Current to add
> apple-like pthread workqueues. You can find the
> patches at:
>
> http://people.freebsd.org/~sson/thrworkq/
>
> The first patch (kern_thrworkq_*.diff) adds the
> kernel support and thr_workq() system call. To
> compile it into the kernel "options THRWORKQ" needs
> to be added to the kernel config file. The second
> patch (pthread_workqueue_*.diff) is for the libthr
> code and adds the pthread_workqueue_*_np()
> functions. (See
> http://people.freebsd.org/~sson/thrworkq/pthread_workqueue.3.txt
> for the man page.) I have only done a limited
> amount of testing so I am sure there are bugs. Any
> questions, comments, bug reports, and/or patches are
> welcomed.
>
> Thanks,
>
> -stacey.
> _______________________________________________
> libdispatch-dev mailing list
> libdispatch-dev at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/libdispatch-dev
>
>
>
>
>
>
More information about the libdispatch-dev
mailing list