Asynchronous Mode NBDSSL

As of vSphere 6.7, asynchronous I/O for NBDSSL transport mode is available. Performance of NBDSSL mode data transfer can be improved with this option.

To implement asynchronous NBDSSL, use the new functions VixDiskLib_ReadAsync and VixDiskLib_WriteAsync in a callback, followed by VixDiskLib_Wait, to replace the VixDiskLib read and write functions. In the development kit, see vixDiskLibSample.cpp for code examples, following logic for the -readasyncbench and -writeasyncbench options.

VDDK has had non-public asynchronous APIs since VDDK 6.0, but behavior is different in earlier releases. File transport mode is synchronous in all releases.

Table 1. Asynchronous read and write
VDDK 6.0 VDDK 6.5 6.7
VixDiskLib_ReadAsync

Always synchronous.

Same as 6.0.

For HotAdd and SAN modes, same as 6.0 and 6.5.

NBDSSL mode is asynchronous if the ESXi host supports asynchronous NBD.

VixDiskLib_WriteAsync

For HotAdd and NBDSSL modes, always synchronous.

For SAN mode, the API is asynchronous. A thread handles writes one by one in the back-end, so outstanding I/O is always 1.

Same as 6.0.

For HotAdd and SAN modes, same as 6.0 and 6.5.

NBDSSL mode is asynchronous if the ESXi host supports asynchronous NBD, as does ESXi 6.7.