Estoy buscando algunos artículos/documentos sobre el impacto de mover una implementación de protocolo decir pila de TCP/IP desde el kernel al espacio de usuario. Obviamente tendrá un impacto, pero ¿cuánto? O hay literatura sobre cuánto cuesta el cambio de contexto. Me doy cuenta de que puede que no haya respuestas precisas porque dependerán de la aplicación. Asumiendo que es una pila de red, será genial si alguien puede proporcionar algunas entradas. Busqué en Google pero no puedo encontrar nada bueno excepto este User space Vs Kernel space program performance difference pero que no arroja suficiente luz.Implementación de protocolos en espacio de usuario versus espacio de kernel - implicación de rendimiento
6
A
Respuesta
0
Como sé que podría ver para las comparaciones del sistema de archivos, hay muchas implementaciones diferentes, como módulos del kernel y como módulos de fusibles. Puede ser que pueda encontrar información interesante en este tipo de componentes.
También en el campo de la red puedo mencionar que algunos controladores utilizan la capacidad de las tarjetas de red para calcular los hash para los marcos de Ethernet, y hay algo de eso. Si trabaja en el espacio de usuario, no puede usar ese truco. En resultado, puede obtener la compasión del rendimiento en el uso de tal truco como límite superior de la pena de rendimiento.
Cuestiones relacionadas
- 1. Netlink espacio de usuario y comunicación kernel-espacio
- 2. en kernel y espacio de usuario
- 3. Del kernel al espacio de usuario (DMA)
- 4. Manejo de interrupción de Linux en el espacio de usuario
- 5. Cambiar marcadores de protección de memoria de espacio de usuario del módulo kernel
- 6. ¿Cómo acceder al espacio del kernel desde el espacio del usuario?
- 7. ¿Cómo usar kernel libcrc32c (o las mismas funciones) en programas de espacio de usuario?
- 8. ¿Cómo acceder a la memoria de espacio de usuario desde el kernel de Linux?
- 9. Pobre rendimiento memcpy en el espacio de usuario para memoria física mmap'ed en Linux
- 10. std :: threads se gestionan en el espacio de usuario o kernel?
- 11. Cómo mapear un buffer del kernel de Linux al espacio del usuario?
- 12. Espacio libre del dispositivo y espacio de espacio aislado usado
- 13. Implementando syscalls cancelables en el espacio de usuario
- 14. Cómo usar ioctl() desde el espacio del kernel en Linux?
- 15. ¿Barreras de memoria en el espacio de usuario? (Linux, x86-64)
- 16. Asignación de búferes DMA al espacio de usuario
- 17. cómo encontrar el uso de espacio de disco por usuario?
- 18. ¿Rendimiento del enlazador relacionado con el espacio de intercambio?
- 19. Protocolos de comunicación de implementación en C/C++
- 20. ¿Cómo remap_pfn_range reasigna la memoria del kernel al espacio del usuario?
- 21. Pruebas de rendimiento Versus Unidad de Pruebas
- 22. ¿Se pueden utilizar macros probables/improbables en el código de espacio de usuario?
- 23. ¿Cómo se lee el búfer de anillo dentro del espacio del kernel de Linux?
- 24. Tabla de símbolos del kernel mapeada en el espacio de direcciones virtuales - ¿por qué?
- 25. Implementación de señales de reloj de hardware en Linux Kernel
- 26. espacio de memoria preasignación de programas utilizan
- 27. mmap: asignación en el espacio de usuario un búfer de núcleo asignado con kmalloc
- 28. prefijo de espacio en C#
- 29. Fugas de espacio en Haskell
- 30. espacio de nombre anónimo
La pregunta, tal como está, está fuera de tema para SO, ya que está pidiendo un recurso externo en lugar de una respuesta a una pregunta de programación. AFAIK, la pila TCP en el espacio de usuario puede funcionar mejor que en el espacio del kernel siempre que la aplicación en la parte superior de la pila esté en el mismo proceso que la pila misma. Si desea una arquitectura tipo "micro-kernel" donde la pila es su propio proceso, pagará por otro conmutador de contexto, por lo que sería necesario diseñar algún tipo de sistema de notificación por lotes eficiente. – jxh
Bueno, debe haber algo que valga la pena para gente como Solarflare/Mellanox para producir tarjetas y pilas que pasan por alto el kernel y se ejecutan prácticamente en su totalidad en el espacio de usuario (siempre y cuando esté en proceso). Imagine sin algún soporte de hardware, estas cosas son notoriamente difíciles de implementar. – Nim