Re: [patch 00/13] Syslets, "Threadlets", generic AIO support, v3

Evgeniy Polyakov
2007-03-01T13:28:11Z

On Thu, Mar 01, 2007 at 01:34:23PM +0100, Ingo Molnar (mingo@elte.hu) wrote:
>
> * Evgeniy Polyakov <johnpol@2ka.mipt.ru> wrote:
>
> > Document Length: 3521 bytes
>
> > Concurrency Level: 8000
> > Time taken for tests: 16.686737 seconds
> > Complete requests: 80000
> > Failed requests: 0
> > Write errors: 0
> > Total transferred: 309760000 bytes
> > HTML transferred: 281680000 bytes
> > Requests per second: 4794.23 [#/sec] (mean)
>
> > Concurrency Level: 8000
> > Time taken for tests: 12.366775 seconds
> > Complete requests: 80000
> > Failed requests: 0
> > Write errors: 0
> > Total transferred: 317047104 bytes
> > HTML transferred: 288306522 bytes
> > Requests per second: 6468.95 [#/sec] (mean)
>
> i'm wondering - how can the 'Total transferred' and 'HTML transferred'
> numbers be different?
>
> Since document length is 3521, and the number of requests is 80000, the
> correct 'HTML transferred' is 281680000 - which is the epoll result. The
> kevent result shows more bytes transferred, which suggests that the
> kevent loop is probably incorrect somewhere.
>
> this might be some benign thing, but the /first/ thing you /have to/ do
> before claiming that 'kevent is 25% faster than epoll' is to make sure
> the results are totally reliable.

Kevent sent additional 525 pages ((311792800-309760000)/3872) - that is why
number for kevent is higher - it uses edge-triggered handler (which you
asked to remove from epoll), which can produce false-positives, for
absolute result in that case ret_data must be checked where poll flags
were stored (before). 'ab' does not count additional data as new requests
and does not count them in 'requests per second'.
Even if it could do so, additional 500 requests can not provide 35%
higher rate.

For example, lighttpd results are the same for kevent and epoll and
'Total transferred' and 'HTML transferred' numbers change between runs both
for epoll and kevent.

> Ingo

--
Evgeniy Polyakov