21 messages in org.apache.httpd.devRe: Is async the answer
FromSent OnAttachments
Akins, BrianJan 18, 2008 10:51 am 
Justin ErenkrantzJan 18, 2008 11:16 am 
Colm MacCarthaighJan 18, 2008 11:20 am 
Akins, BrianJan 18, 2008 11:26 am 
Akins, BrianJan 18, 2008 11:30 am 
Colm MacCarthaighJan 18, 2008 12:07 pm 
Akins, BrianJan 18, 2008 1:16 pm 
Colm MacCarthaighJan 18, 2008 1:28 pm 
Ruediger PluemJan 18, 2008 2:30 pm 
Justin ErenkrantzJan 18, 2008 4:33 pm 
Niklas EdmundssonJan 19, 2008 3:53 am 
Graham LeggettJan 19, 2008 4:45 am 
Davi ArnautJan 19, 2008 6:57 am 
Jim JagielskiJan 19, 2008 7:04 am 
Graham LeggettJan 19, 2008 8:01 am 
Henrik NordströmJan 19, 2008 1:14 pm 
Henrik NordströmJan 19, 2008 1:19 pm 
Davi ArnautJan 19, 2008 3:29 pm 
Graham LeggettJan 20, 2008 7:44 am 
Akins, BrianJan 22, 2008 10:03 am 
Akins, BrianJan 22, 2008 10:07 am 
Actions with this message:
Paste this link in email or IM:
Paste this link in email or IM:
Atom feed for this thread
Paste this URL into your reader:
Subject:Re: Is async the answerActions...
From:Henrik Nordström (hen@henriknordstrom.net)
Date:Jan 19, 2008 1:14:22 pm
List:org.apache.httpd.dev

fre 2008-01-18 klockan 16:17 -0500 skrev Akins, Brian:

Paul Q and I have been kicking around the idea that even if we go to a completely async core, etc. that modules could mark some hooks as "blocking" and they would run basically how they do today. (One day, Paul, I'll actually think about this more...)

In the end you need a bit of mixture between the models to work out. threads or even processes for complex processing or libraries outside your control, and async for the basic core to keep it lightweight in resources/request/connection.

There is quite a bit of research in programming models supporting mixed async/threaded/tasklet scheduling without forcing the programmer to know all details. Quite interesting reading if you haven't read those papers yet.

For example the tame approach (C++ preprocessor using libasync) used by OKWS and it's related cousin tamer (more lightweight library) is quite fun to work with, at least in theory.

Regarding CPU performance then you need a more complex workload than pure sendfile() shuffling of data to see much of a difference between threaded or async models. Especially if you look at smaller requests where the two almost diverge to the same model.. (N threads doing fast successive batch processing one request at a time with no wait time, or a event loop doing pretty much the same batching..).

Regards Henrik