Amanda Waite | 27 Nov 14:25

event-handler in opensolaris



I think you are right in all of the points that you make. Poll should be fine for a small number of connections, as you scale up though /dev/poll comes into its own.  I always recommend using /dev/poll really because there's never been a reason not to until now. I  should probably add the caveat that it depends on how many connections you want to support. I have done a lot of testing on the UltraSPARC-T1 and T2 systems and I gave up on poll very early on, as it just didn't scale anywhere near as well as /dev/poll when it came to thousands of concurrent users. We are also working on putting back a Solaris Event Ports implementation which may scale even better for very high numbers of connections, although the tests I've done so far only hint at this.

I'd join you in recommending to not use sendfilev with Solaris 10 currently, with OpenSolaris though you should be ok because as you say the bug(s) have been fixed there. We are trying to get the fixes back ported to Solaris 10. I'd really like to do some testing with sendfilev on OpenSolaris and see how it performs in terms of both raw performance and stability. I'm also recommending using writev as the network-backend for now and we actually chose that for the Coolstack distribution of Lighttpd.

Your config and data are really interesting, can I ask what your average response size is? and how many connections?

Amanda


On 27/11/2007, Carlo Marcelo Arenas Belon <carenas <at> sajinet.com.pe> wrote:
On Tue, Nov 27, 2007 at 12:44:06AM +0000, Amanda Waite wrote:
>    You can then use "solaris-devpoll" as the
>    event-handler which is the recommended option for Solaris. This is a
>    better option than falling back to using "poll" as the event-handler.

if you have 1 single worker (the default) or a few of them, poll and devpoll
should be equivalent IMHO; do you have any data to back up the benefits of
devpoll over poll in solaris for 1 or a low number of filehandles?

I am running lighttpd in Solaris 10 SPARC (v490, 8 x 1350Mhz) with
server.max-worker = 128 and doing 900 QPS using poll and 60% CPU idle.

for Solaris 10 I would warn against using server.network-backend = sendfilev
as there is a bug on it which will lock some of transactions in the kernel and
that hasn't been yet fixed AFAIK (I think it was fixed already in OpenSolaris
but haven't tested it); server.network-backend = "writev" could be used
instead even if it is not the "preferred" method.

Carlo


Gmane