On Fri, 19 May 2006, Ivan Voras wrote:

If I was working on a project such as Apache I know I wouldn't be concentrating of performance with prefork in this day when threaded modes are where Apache has been aiming for modern high performance web serving for a fair while now.

Did you miss discussions about how FreeBSD's threading sucks? Ok, "sucks" is maybe a too strong strong word, but if you look for recent discussions about MySQL, you'll see that the difference between Linux and FreeBSD performance is huge.

BTW, there seems to be a fundamental misunderstanding of the benefits of threading in the application developer community. Threading is actually worse for performance for a number of application cases. These tend to be cases where the kernel data structures shared across threads are accessed intensely across a pool of threads that actually could operate with greater independence. For example, pre-forked web servers vs pre-threaded web servers. If relatively little computation takes place, and it's all a series of accept()/send()/sendfile()/close() operations in many threads, you pound the locks protecting file descriptor state in the process. If it were different processes, the file descriptor state wouldn't be shared, so performance would be greater, even though the context switch cost is greater. I've observed this in micro-benchmarks on a number of OS platforms.

Threading is good for application performance where a high level of sharing is absolutely necessary -- worker threads working on shared data in a shared address space, passing file descriptors between them, lots of synchronization, etc. In many other cases, it's not only not a benefit, but a significant overhead.

Robert N M Watson
_______________________________________________
freebsd-performance@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to