On 10/27/07, Blue Swirl wrote: > I changed Slirp output to use vectored IO to avoid the slowdown from > memcpy (see the patch for the work in progress, gives a small > performance improvement). But then I got the idea that using AIO would > be nice at the outgoing end of the network IO processing. In fact, > vectored AIO model could even be used for the generic DMA! The benefit > is that no buffering or copying should be needed. I made a sketch of the API, please have a look at the patch. > Each stage would translate the IO list and callback as needed and only > the final stage would perform the IO or memcpy. This would be used in > each stage of the chain memory<->IOMMU<->device<->SLIRP<->host network > device. Of course some kind of host support for vectored AIO for these > devices is required. On target side, devices that can do > scatter/gather DMA would benefit most. Inside Qemu the vectors would use target physical addresses (struct qemu_iovec), but at some point the addresses would change to host pointers suitable for real AIO.