Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^2: Why are people not using POE?

by kscaldef (Pilgrim)
on Jun 10, 2005 at 18:04 UTC ( [id://465623]=note: print w/replies, xml ) Need Help??


in reply to Re: Why are people not using POE?
in thread Why are people not using POE?

Really high-performance server applications will generally prefer cooperative multi-(task|thread)ing. You might look at http://pl.atyp.us/content/tech/servers.html for an idea of why. (Specifically the sections on context switches).

However, of course you won't limit yourself to only a single process. Multi-(CPU|core) machines are the norm, so you have to have multiple processes (or threads) to take advantage of that. I'm not really sure how easy or hard it is to have multiple POE processes running at once, but that is what you would want to do in general, both to address the blocking issue and the multi-processor issue.

Replies are listed 'Best First'.
Re^3: Why are people not using POE?
by samtregar (Abbot) on Jun 10, 2005 at 19:54 UTC
    Really high-performance server applications will generally prefer cooperative multi-(task|thread)ing.

    That statement is indefensibly broad and, in my experience, incorrect. First, I don't know of a single system which uses cooperative multi-threading (I would say there's never been one, but I'm no CS historian). In all the systems I've seen multi-threading is preemptive, not cooperative, for obvious reasons. Second "really high-performance server applications" come in so many different shapes and flavors that stating that any one technology will be "generally preferred" is just dumb.

    For my "really high-performance server applications" I use a pool of pre-forked processes, and it works quite well! That doesn't mean it's right for all tasks but it does suggest that cooperative multi-tasking might not be the undisputed king of silver bullet land!

    -sam

      A Design Framework for Highly Concurrent Systems (PDF) compares threaded and event driven servers (and their performance degradation patterns) before it goes on to explain how the authors' hybrid system can outperform either.

      I'm passing it on because it seems relevant, and I thought it was a good read.

      I don't know of a single system which uses cooperative multi-threading

      well, what happens is that "cooperative multi-threading" is not the usual name for this kind of aplications, but I am sure you will know about squid, qmail or the X server just to name a few.

        You're telling me those applications use non-preemptive threading systems? I highly doubt that. They might be select()-based or polling, but that doesn't make them multi-threaded just because they handle multiple tasks simultaneously.

        Let's not play semantic games here - threads and tasks are not the same things!

        -sam

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://465623]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others goofing around in the Monastery: (6)
As of 2024-03-29 09:56 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found