
Quiero hablar sobre el artículo "La E / S es más rápida que la CPU - Particionemos los recursos
y Eliminar (la mayoría) abstracciones del sistema operativo " , publicado en la página personal de uno de los desarrolladores de ScyllaDB, Pekka Enberg. Me enteré por el video .
Se suponía que los autores de este artículo debían hacer una presentación en el taller HOTOS17 (Temas de actualidad en sistemas operativos) del 12 al 15 de mayo de 2019. Hasta donde yo entiendo, están discutiendo los desarrollos allí en las primeras etapas de sus vidas.
Mi artículo es una novedad para despertar mentes curiosas para pensar sobre este tema y pensar en los comentarios.
Punto general
La E / S en servidores con tarjetas de red programables rápidas y memoria no volátil se acerca a la velocidad de la RAM volátil, y la velocidad del núcleo de un procesador permanece en su lugar. Las aplicaciones no pueden aprovechar el hardware moderno porque obligado a utilizar interfaces basadas en abstracciones que involucran sistemas de E / S lentos.
Los autores proponen su propia estructura del sistema operativo llamada parakernel , que elimina la mayoría de las abstracciones del sistema operativo y proporciona una interfaz para las aplicaciones para que puedan utilizar todo el potencial del equipo. Parakernel facilita la concurrencia a nivel de aplicación al compartir de forma segura recursos y multiplexar recursos compartidos.
La arquitectura de los sistemas operativos modernos se inventó cuando la velocidad de E / S era mucho menor y las aplicaciones esperaban E / S. Actualmente, los dispositivos de E / S pueden saturar fácilmente el procesador.
Según los autores, las pilas de red modernas hacen demasiado trabajo por paquete. Además, los sistemas operativos suelen implementar la API de socket POSIX, que tiene el alto costo de cambio de contexto y la contaminación de la memoria caché de la CPU.
Prerrequisitos de hardware
Una tarjeta de red moderna de 40 Gbps puede recibir un paquete acorde con la línea de caché cada 5 ns, y el retraso en el acceso a los procesadores LLC (caché de último nivel) es de aproximadamente 15 ns.
Por ejemplo, Linux desarrolló la interfaz POSIX AIO, que debería proporcionar una interfaz de E / S asíncrona simple y eficiente. La implementación, el soporte y la aplicación de dicha interfaz con la preservación de la semántica POSIX resultó ser muy difícil y se abandonó a favor de la nueva io_uring .
¿Cuál es la solución propuesta?
La nueva estructura del sistema operativo, que los autores llaman parakernel , está diseñada para simplificar la paralelización de tareas. Los recursos se asignan a las aplicaciones y tienen control total sobre ellas, los recursos que no se pueden compartir se multiplexan por el núcleo.
El intercambio de recursos en sistemas de múltiples núcleos requiere sincronización entre núcleos de procesador, lo que evita la concurrencia a nivel de aplicación. Este obstáculo puede reducirse dividiendo recursos entre núcleos de procesador.
Resumen
Algunas abstracciones del sistema operativo limitan el rendimiento de E / S. Los autores presentan una estructura de sistema operativo que comparte recursos compartidos y multiplexa recursos compartidos. Parakernel simplifica la concurrencia a nivel de aplicación y complementa el diseño de hilo a núcleo .
El prototipo de parakernel está escrito en Rust y actualmente se encuentra en desarrollo. En el artículo no vi el nombre del sistema operativo, pero encontré otro material de uno de los autores del Sistema Operativo Manticore y concluyo que aquí está el repositorio de este desarrollo.
¿Qué hay en el resto del mundo?
Como resultado, los fabricantes de procesadores no están durmiendo y también están tratando de resolver el problema de la capa lenta entre sus productos y los consumidores. A mucha gente no le gusta el cuello de botella del rendimiento en forma de núcleo del sistema operativo.
Innovaciones interesantes de Intel, más sobre las cuales se pueden encontrar en este artículo . Aquí hay un extracto:
- Dispositivo de gestión de volumen Intel (Intel VMD): le permite trabajar directamente con unidades NVM Express, "entregando" el dispositivo directamente al sistema de almacenamiento. Como resultado, se hizo posible un SSD de intercambio activo completo, indicación de estado y el uso de la tecnología Intel VROC.
- Intel Virtual RAID en CPU (Intel VROC). Le permite crear RAID a partir de unidades NVMe utilizando el procesador, con el que puede rechazar soluciones de software o adaptadores adicionales para crear conjuntos de SSD PCIe de alta velocidad.
- Protocolo RDMA de área amplia de Internet (iWARP). La extensión RDMA ahora es compatible con los adaptadores de red integrados Intel X722, porque el procesador admite cuatro puertos Ethernet de 10 gigabits (o gigabits). Permítame recordarle que RDMA obtiene acceso a los datos a través de la red directamente desde la memoria, sin pasar por el núcleo y el sistema operativo.
Siempre es muy interesante aprender sobre nuevos conceptos en sistemas ya enraizados.
Por favor escriba sobre errores y adiciones necesarias.
UPD : Este artículo está siendo modificado por la comunidad.
Gracias por la ayuda
Una línea de publicidad para el podcast Zinc Prod en la que discutiremos este artículo tema por tema.