In order to evaluate the performance gain of a zero copy send interface in the TCP/IP stack, we ran a modified version of AFPA on Linux that does not use the AFPA zero copy cache architecture. In this version, network buffers are allocated through the standard Linux sock_wmalloc() primitive; file data is copied from the AFPA cache into network buffers and checksummed before being sent. Figure 4 summarizes the performance of these two implementations plus Zeus on Linux (which does not use zero copy sends) and IIS on Windows 2000 (which does zero copy sends through the TransmitFile() API).
As expected, the performance advantage of a zero copy send interface increased with the file size. It is important to note, however, that the benefits of a zero copy interface can be seen for relatively small files. For 4 kB files the performance difference is 25% and then grows to 111% for 32 kB files.
For full efficiency, a zero copy send interface also requires a network adapter with outbound packet checksumming capability (such as the Alteon adapter used in our test bed) in order to avoid reading the data to checksum it.