Blake wrote:

I did some reading on this. Nagle was originally trying to stem the flood of 'tinygrams' sent during lightweight network sessions such as telnet (where single bytes (keystrokes) were being given their own packet, and generating lots of overhead). It's my impression that since many of us are using iSCSI to move large files, we aren't likely to see the algorithm affect us in the way previously described. Is this perhaps why the algorithm is enabled by default?


Please take a look at the node where the iSCSI Initiator is running and determine if the following parameter is being set.

[ /kernel/drv/iscsi.conf ] add the following:
#
# Disable Nagle within the iSCSI Initiator
#
tcp-nodelay=1;

The tcp-nodelay setting, alters the iSCSI Initiators socket options by setting the well-known option TCP_NODELAY, or more specifically turning off the "Nagel Algorithm". For performance reasons, this setting is hard-coded in the iSCSI Target and also Availability Suite's SNDR, both being TCP/IP based data movers of disk blocks.

For both iSCSI and SNDR, the Nagel algorithm interacts badly when using TCP delayed acknowledgments, of which both iSCSI and SNDR relies upon. These performance issues have been noted by many others, including the author John Nagel. See link at bottom of this page: http://en.wikipedia.org/wiki/Nagle's_algorithm

Jim



Blake

On 10/24/07, Jonathan Edwards <[EMAIL PROTECTED]> wrote:

On Oct 24, 2007, at 14:07, Patrick Sullivan wrote:

> I recently posted about a serious performance issue when running a
> single thread against my Solaris iSCSI Software Initiator connected
> volume.  The cause of this performance issue is due to the Nagle
> algorithm being used for the network traffic sent to and from the
> iSCSI target.  Simply disabling the Nagle algorithm solved the
> problem.
>
> Easy enough fix, but it raised a question.  If having the Nagle
> algorithm enabled could cause this serious a performance
> degradation (300k/sec I get with it enabled, 40MB/sec with it
> disabled), should it be disabled by default?
>
> I guess I would be curious as to the reason it is enabled by
> default.  Does the performance advantage on some targets outweigh
> the performance degradation seen when it is enabled for other
> targets?  300k/sec is pretty dreadful performance, and for most
> applications it could be considered unusable.  Granted my testing
> was to the raw device, but any application that accesses the raw
> device directly is also affected by this (think Solaris Volume
> Manager, and I wonder how ZFS would fair, I can test if necessary).
>
> How would I go about filing a request to change the default to not
> use the Nagle algorithm?

File an RFE here:
http://www.opensolaris.org/bug/report.jspa

pick the latest nevada release

---
.je

_______________________________________________
storage-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/storage-discuss

_______________________________________________
storage-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/storage-discuss


_______________________________________________
storage-discuss mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/storage-discuss

Reply via email to