Dell recommends that delayed ack be disabled for most, if not all of their iscsi devices.
Below is a message that was a sent to me for a performance ticket I had open with dell.
I've disabled delayed ack on the whole iscsi initiator level as i didnt want to have to do it for each connection.
Tcp Delayed Ack
We recommend disabling tcp delayed ack for most iscsi SAN configurations.
It helps tremendously with read performance in most cases.
WINDOWS:
On windows the setting is called TCPAckFrequency and it is a Windows registry key.
Use these steps to adjust Delayed Acknowledgements in Windows on an iSCSI interface:
1. Start Registry Editor.
2. Locate and then click the following registry subkey:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\<Interface GUID>
Verify you have the correct interface by matching the ip address in the interface table.
3. On the Edit menu, point to New, and then click DWORD Value.
4. Name the new value TcpAckFrequency, and assign it a value of 1.
5. Quit Registry Editor.
6. Restart Windows for this change to take effect.
http://support.microsoft.com/kb/328890
http://support.microsoft.com/kb/823764/EN-US (Method 3)
http://support.microsoft.com/kb/2020559
---------------------------------------------------------------------------------------------------------------------
ESX
For ESX it can be set in 3 places and is actually called Tcp Delayed Ack. It can be set in 3 ways:
1. on the discovery address for iscsi (recommended)
2. specific target
3. globally
Configuring Delayed Ack in ESX 4.0, 4.1, and 5.x
To implement this workaround in ESX 4.0, 4.1, and 5.x use the vSphere Client to disable delayed ACK.
Disabling Delayed Ack in ESX 4.0, 4.1, and 5.x
1. Log in to the vSphere Client and select the host.
2. Navigate to the Configuration tab.
3. Select Storage Adapters.
4. Select the iSCSI vmhba to be modified.
5. Click Properties.
6. Modify the delayed Ack setting using the option that best matches your site's needs, as follows:
Modify the delayed Ack setting on a discovery address (recommended).
A. On a discovery address, select the Dynamic Discovery tab.
B. Select the Server Address tab.
C. Click Settings.
D. Click Advanced.
Modify the delayed Ack setting on a specific target.
A. Select the Static Discovery tab.
B. Select the target.
C. Click Settings.
D. Click Advanced.
Modify the delayed Ack setting globally.
A. Select the General tab.
B. Click Advanced.
(Note: if setting globally you can also use vmkiscsi-tool
# vmkiscsi-tool vmhba41 -W -a delayed_ack=0)
7. In the Advanced Settings dialog box, scroll down to the delayed Ack setting.
8. Uncheck Inherit From parent. (Does not apply for Global modification of delayed Ack)
9. Uncheck DelayedAck.
10. Reboot the ESX host.
Re-enabling Delayed ACK in ESX 4.0, 4.1, and 5.x
1. Log in to the vSphere Client and select the host.
2. Navigate to the Advanced Settings page as described in the preceding task "Disabling Delayed Ack in ESX 4.0, 4.1, and 5.x"
3. Check Inherit From parent.
4. Check DelayedAck.
5. Reboot the ESX host.
Checking the Current Setting of Delayed ACK in ESX 4.0, 4.1, and 5.x
1. Log in to the vSphere Client and select the host.
2. Navigate to the Advanced Settings page as described in the preceding task "Disabling Delayed Ack in ESX 4.0, 4.1, and 5.x."
3. Observe the setting for DelayedAck.
If the DelayedAck setting is checked, this option is enabled.
If you perform this check after you change the delayed ACK setting but before you reboot the host, the result shows the new setting rather than the setting currently in effect.
Source Material:
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1002598
http://www.vmware.com/support/vsphere4/doc/vsp_esx40_vc40_rel_notes.html
http://www.vmware.com/support/vsphere4/doc/vsp_esx40_u2_rel_notes.html
http://virtualgeek.typepad.com/virtual_geek/2009/09/a-multivendor-post-on-using-iscsi-with-vmware-vsphere.html