Re: Comments on the KSE option

From: Alexandre \ <Alex.Kovalenko_at_verizon.net>
Date: Mon, 30 Oct 2006 22:36:50 -0500
On Tue, 2006-10-31 at 07:54 +1100, Peter Ross wrote:
> On Mon, 30 Oct 2006, Massimo Lusetti wrote:
> 
> > On Sat, 2006-10-28 at 20:47 +0100, Robert Watson wrote:
> > 
> > > significantly slower than multi-process ones.  Many programmers believe that 
> > > threading is necessarily faster than using multiple processors, so I think 
> > > we're fundamentally forced to deal with the way they do use them, rather than 
> > > how they should use them.
> > 
> > I'm in sync with your opinion but speaking from the point of view of a
> > programmer which use FreeBSD i would like to say that enforcing (or at
> > least try to) good understanding of issues and good programming practice
> > is a good thing(TM), so if FreeBSD as an O.S. and as a community try to
> > enforce me to have good programming attitudes i really would like to
> > follow that.
> 
> I'm not a kernel developer, and not even a 'real' developer, I am just a 
> sys admin who hopes to get the best from the OS. At the moment I am 
> responsible for a bunch of servers to run a homegrown Java application. So 
> sorry if my thoughts here sound a bit naive.
> 
> The way the JVM exposes the threads to the OS just seems as a "natural" 
> way to me, especially if you are program for more then one OS. I 
> understand it as "leave it to the OS to sort things out. It should know 
> how to use the resources".
> 
> I administrate SMP servers running a resource-hungry Java/tomcat app. The 
> JVM has several hundred threads, e.g. 100 for every DB connection in a 
> connection pool.
> 
> It is difficult to imagine that a thread, a "light-weight process" causes 
> more kernel congestion than a process. I doubt it is the programmer's 
> fault, I would think there is something wrong withg the implementation.

It really is not that hard to imagine -- just think of what needs to be
done when multiple threads of the same process executing on multiple CPU
are trying to do sbrk(2), open(2) or mmap(2) -- apart from usual
activity for the single threaded process you have to make sure that
characteristics of the process as the whole (break value, first
available file descriptor or available virtual address in the process
space) stay consistent. Then you have my all-time favorite -- signal
delivery to the threaded process. And then multithreaded process does
fork(2)...

> What means fairness in this context? (Simplification here) I don't hope 
> that the sshd gets half of the CPU if I login. I just hope that I get a 
> share to type a kill command if necessary;-)

It might be presumptious of me to speak on the subject I don't
necessarily completely understand myself, but an impression I got from
this E-mail thread is that concept of "fairness" would differ
dramatically between application programmer trying to wring every drop
of performance from the single-purpose multi-CPU box and sysadmin
supporting multi-user/multi-application environment. What seem to be
perfectly "fair" to the former is completely "unfair" to the latter.

Conversely, I think it is unfair to make me break my single-process
multi-threaded application into multiple communicating processes to
achieve performance gain (true story, not FreeBSD though ;)

-- 
Alexandre "Sunny" Kovalenko
Received on Tue Oct 31 2006 - 02:37:35 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:39:02 UTC