users@grizzly.java.net

Re: grizzly-sendfile and Comparison of Blocking and NonBlocking IO

From: Igor Minar <iiminar_at_gmail.com>
Date: Wed, 13 May 2009 07:23:42 -0700

On May 12, 2009, at 6:14 PM, Oleksiy Stashok wrote:

>>> Those results look strange, I mean difference between sendfile and
>>> regular Grizzly adapter.
>>
>> oh come on, you didn't expect grizzly to be better than grizzly-
>> sendfile. or did you? ;-)
> Haha... No, I'm pretty sure grizzly-sendfile performing good. And I
> believe it could be faster... just the big difference in bm numbers
> looks suspicious :)

I know, I know, that's why I'm asking if I'm doing something wrong.
All I know is that grizzly-sendfile can pass those tests without an
error and with good throughput. There isn't anything special about the
test that would make it harder for grizzly to pass them without errors.

In order to make sure that my tests are not flawed, I also used ab:

grizzly:
$ ab -c 200 -n 1000 http://localhost:7700/20m.file
....

Test aborted after 10 failures

apr_socket_connect(): Invalid argument (22)
Total of 199 requests completed


grizzly-sendfile:
$ ab -c 200 -n 1000 http://localhost:7700/20m.file
....
Requests per second: 9.92 [#/sec] (mean)
Time per request: 20164.071 [ms] (mean)
Time per request: 100.820 [ms] (mean, across all concurrent
requests)
Transfer rate: 203135.98 [Kbytes/sec] received
....

>>> Most of them (may be all) are fixed on trunk, so if you'll have
>>> chances to retry it again with latest sources - will appreciate
>>> that.
>>
>> The tests I ran yesterday evening (PT) were against the trunk. I
>> can rerun the tests if you want me to, but I observed similar
>> issues with 1.9.15
> I expect those exceptions have to be already fixed on trunk.

I just ran a batch of tests against r3181 and saw fewer exceptions,
but there were still some: http://pastie.org/476793

The throughput numbers and number of failures are not any better
except when async writes are enabled:

not throttled:
1KB Download 462 1
200KB Download 456 1
500KB Download 477 0
1MB Download 409 1
20MB Download 458 0
100MB Download 454 0
total throughput: 95.910 MB/s (grizzly-sendfile's best: 208.59 MB/s &&
0 failures)

throttled at 1MB/s:
1KB Download 20 150
200KB Download 21 161
500KB Download 13 188
1MB Download 20 172
20MB Download 17 163
100MB Download 18 158
total throughput: 3.088 MB/s (grizzly-sendfile's best: 156.59 MB/s &&
0 failures)

throttled at 1MB/s with async writes on:
1KB Download 679 0
200KB Download 683 0
500KB Download 728 0
1MB Download 706 0
20MB Download 650 0
100MB Download 543 0
total throughput: 119.017 MB/s (grizzly-sendfile's best: 156.59 MB/s
&& 0 failures)

cheers,
Igor