On Wed, 13 Feb 2013 16:06:37 -0800, markspace wrote:
> However, 100 to 300 threads is trivial for most modern system. Since
> most tasks will be IO-bound, it make sense to have lots of threads so
> some can be running while others wait for data to be returned. (Sorry
> to contradict Mr. Meier but I'm pretty sure he's off base.) Given a
Obviously, you can pretty much have Integer.MAX_VALUE threads if all of
them are waiting without negatively impacting your waiting performance -
that's not really a sensible way to look at that question
I said, and stand by, that context switching is not free and is the cost of
having too many threads. Threads that sleep or otherwise wait, such as for
IO, don't typically cause much context switching.
That being said, I would expect the case of 100s of threads waiting for IO
probably an edge case (for use cases such as web servers), and the majority
of cases would have IO restricted to a small number of the threads. YMMV.
> 3000 is probably approaching some sort of upper limit on most "average"
> servers. Don't neglect to measure actual running performance, but I
> don't think commodity hardware can handle that many practically.
We once ran (by accident) something that triggered 100,000 threads (+ GC
and whatever) on a normal Linux server with a quad core CPU and it still
worked (although much slower than with the intended 100). As far as I know,
neither Linux nor the hardware was anything unusual.
Liebe Gruesse,
Joerg
--
Ich lese meine Emails nicht, replies to Email bleiben also leider
ungelesen.