Zero-copy

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

Zero-copy describe operaciones de computadora en las cuales la CPU no realiza la tarea de copiar los datos desde un área hacia otra de la memoria.

Las versiones Zero-Copy de los elementos de sistemas operativos, tales como controladores de dispositivos, sistemas de archivos, y pilas de protocolos de red elevan fuertemente el rendimiento de ciertos programas y utilizan más eficientemente los recursos del sistema. El rendimiento se ve mejorado porque permite a la CPU realizar otras tareas mientras la copia de datos se realiza en paralelo en otra parte de la máquina. Además las operaciones zero-copy reducen el número de cambios de contexto entre el espacio de usuario y el espacio del núcleo. Los recursos del sistema son utilizados con mayor eficiencia ya que al utilizar un CPU sofisticado para realizar operaciones de copia, las cuales son tareas relativamente simples, es un desperdicio si otros componentes de sistema más simples pueden realizar estas operaciones.

Las técnicas para crear software zero-copy incluyen el uso de copiado basado en acceso directo a memoria y mapeo de memoria a través de una unidad de manejo de memoria. Estas características requieren de apoyo de hardware específico y generalmente incluyen requerimientos de configuración de memoria particulares.

Los protocolos zero-copy son especialmente importantes para redes de alta velocidad donde la capacidad de un enlace de red se acerca o excede la capacidad de procesamiento de la CPU. En tales casos, la CPU gasta casi todo su tiempo copiando datos transferidos, y esto se convierte en un cuello de botella que limita la velocidad de comunicación por debajo de la capacidad del enlace. Una regla general usada en la industria es que aproximadamente un ciclo de reloj de CPU es necesario para procesar un bit de datos entrante. Por ejemplo, un procesador de 1GHz puede manejar un enlace de red de 1Gbit/s con copiado de datos convencional, pero el mismo procesador será sobrecargado por un enlace de 10Gbit/s, y en esta situación el software zero-copy se vuelve necesario.

Los enlaces de red por sobre 1Gbit/s, y con ellos el software zero-copy, actualmente tienen aplicaciones limitados en clusters de supercomputación, grandes centros de datos comerciales, etc. Sin embargo, como las tecnologías informáticas avanzan y como las redes de 1 Gbit/s, 10 Gbit/s, y hasta 100 Gbit/s se vuelven más comunes, las soluciones zero-copy también tienen tendencia a volverse más comunes, ya que la capacidad de las redes se está incrementando más rápido que la capacidad de las CPU.

Los protocolos de zero-copy tienen algo de sobrecarga inicial para evitar la entrada/salida programada cuando ocurre la transmisión de mensajes de considerable peso.

Los protocolos de acceso directo a memoria remota dependen profundamente de técnicas de zero-copy. Varios sistemas operativos, incluyendo Linux, soportan el uso de zero-copy para el copiado de archivos a través de APIs específicas, tales como sendfile y sendfile64.


Véase también[editar]

Enlaces externos[editar]