2010-06-04 14 views
6

He estado experimentando con sockets de red Async Linux (aio_read y otros en aio.h/librt), y una cosa que he estado tratando de averiguar es si estos son cero-copia o no. Casi todo lo que he leído hasta ahora discute archivos E/S, mientras que su red de E/S estoy interesado.Sockets de red AIO y copia cero en Linux

AIO es un poco molesto de usar y sospecho que no es portátil, por lo que me pregunto si es vale la pena perseverar con eso. Copia cero es casi la única ventaja (aunque situado una de las principales para mis propósitos) que tendría más (no-bloqueo) Seleccionar/epoll ..

+0

AIO parece ser parte de POSIX.1-2001, por lo que debe ser portátil. –

+0

POSIX/glibc AIO (funciones '-lrt' y' aio_ * ') y Linux AIO (' -laio' con funciones 'io_ *') son dos cosas diferentes. El primero es portátil, pero el último no. Consulte [Guía de usuario AIO de Google] (http://code.google.com/p/kernel/wiki/AIOUserGuide). –

Respuesta

2

En GLIBC, AIO se implementa utilizando hilos POSIX y un habitual pread - llamada. Por lo tanto, es más caro que select o epoll y usted mismo puede hacer read o recv.

+0

Me sorprende que, aunque supongo que con el hardware actual (y algunos trucos de paginación), las velocidades de los cables se convierten en un cuello de botella antes de que el memcopy-ancho de banda de las llamadas al kernel lo haga. – Remy

Cuestiones relacionadas