Les périphériques d'E / S modernes sont plus rapides que les processeurs. Présentation de l'article


Je veux parler de l'article "Les E / S sont plus rapides que le CPU - Let's Partition Resources
and Eliminate (Most) OS Abstractions " , publié sur la page personnelle de l'un des développeurs de ScyllaDB, Pekka Enberg. Je l'ai découvert grâce à la vidéo .


Les auteurs de cet article étaient censés faire une présentation lors de l' atelier HOTOS17 (Hot Topics in Operating Systems) les 12 et 15 mai 2019. Pour autant que je sache, ils discutent des développements dans les premiers stades de leur vie.


Mon article est une actualité afin d'éveiller les esprits curieux à réfléchir sur ce sujet et à réfléchir dans les commentaires.


Point général


Les E / S sur les serveurs avec des cartes réseau programmables rapides et une mémoire non volatile se rapprochent de la vitesse de la RAM volatile, et la vitesse d'un cœur de processeur reste en place. Les applications ne peuvent pas tirer parti du matériel moderne car forcé d'utiliser des interfaces construites sur des abstractions impliquant des systèmes d'E / S lents.


Les auteurs proposent leur propre structure de système d'exploitation appelée parakernel , elle élimine la plupart des abstractions du système d'exploitation et fournit une interface pour les applications afin qu'elles puissent utiliser le plein potentiel de l'équipement. Parakernel facilite la concurrence au niveau de l'application en partageant en toute sécurité les ressources et en multiplexant les ressources partagées.


L'architecture des systèmes d'exploitation modernes a été inventée lorsque la vitesse d'E / S était beaucoup plus faible et que les applications attendaient les E / S. Actuellement, les périphériques d'E / S peuvent facilement saturer le processeur.


Selon les auteurs, les piles de réseaux modernes font trop de travail par paquet. De plus, les systèmes d'exploitation implémentent généralement l'API de socket POSIX, qui a un coût élevé de commutation de contexte et de pollution du cache du processeur.


Prérequis matériels


Une carte réseau moderne de 40 Gbit / s peut recevoir un paquet proportionnel à la ligne de cache toutes les 5 ns, et le délai d'accès aux processeurs LLC (cache de dernier niveau) est d'environ 15 ns.


Par exemple, Linux a développé l'interface POSIX AIO, qui devrait fournir une interface d'E / S asynchrone simple et efficace. L'implémentation, le support et l'application d'une telle interface avec la préservation de la sémantique POSIX se sont avérés très difficiles et ont été abandonnés au profit de la nouvelle io_uring .


Quelle est la solution proposée


La nouvelle structure du système d'exploitation, que les auteurs appellent parakernel , est conçue pour simplifier la parallélisation des tâches. Les ressources sont allouées aux applications et elles ont un contrôle total sur elles, les ressources qui ne peuvent pas être partagées sont multiplexées par le noyau.


Le partage des ressources dans les systèmes multicœurs nécessite une synchronisation entre les cœurs de processeur, ce qui empêche la concurrence au niveau de l'application. Cet obstacle peut être réduit en répartissant les ressources entre les cœurs de processeur.


Résumé


Certaines abstractions du système d'exploitation limitent les performances d'E / S. Les auteurs présentent une structure de système d'exploitation qui partage des ressources partagées et multiplexe des ressources partagées. Parakernel simplifie la concurrence d' accès au niveau de l'application et complète la conception thread-to-core .


Le prototype du noyau noyau est écrit en Rust et est en cours de développement. Dans l'article, je n'ai pas vu le nom du système d'exploitation, mais j'ai trouvé d'autres documents de l'un des auteurs du système d'exploitation Manticore et je conclus que voici le référentiel de ce développement.


Ce qui est dans le reste du monde


Il s'avère que les fabricants de processeurs ne dorment pas et tentent également de résoudre le problème de la couche lente entre leurs produits et les consommateurs. Tant de gens n'aiment pas le goulot d'étranglement des performances sous la forme du noyau du système d'exploitation.
Innovations intéressantes d'Intel, dont vous trouverez plus sur cet article . En voici un extrait:


  • Intel Volume Management Device (Intel VMD) - vous permet de travailler directement avec les disques NVM Express, "donnant" le périphérique directement au système de stockage. En conséquence, un SSD à part entière remplaçable à chaud, une indication d'état et l'utilisation de la technologie Intel VROC sont devenus possibles.
  • Intel Virtual RAID sur CPU (Intel VROC). Vous permet de créer un RAID à partir de disques NVMe à l'aide du processeur, avec lui, vous pouvez refuser des solutions logicielles ou des adaptateurs supplémentaires pour créer des matrices de SSD PCIe haute vitesse.
  • Protocole RDMA Internet Wide Area (iWARP). L'extension RDMA est désormais prise en charge par les cartes réseau intégrées Intel X722, car le processeur prend en charge quatre ports Ethernet 10 gigabits (ou gigabits). Permettez-moi de vous rappeler que RDMA accède aux données sur le réseau directement à partir de la mémoire, en contournant le noyau et le système d'exploitation.

Il est toujours très intéressant de découvrir de nouveaux concepts dans des systèmes déjà enracinés.


Veuillez écrire sur les bogues et les ajouts nécessaires.


UPD : Cet article est en cours de modification par la communauté.


Merci pour l'aide:



Une ligne de publicité pour le podcast Zinc Prod dans laquelle nous discuterons de cet article sujet par sujet.

Source: https://habr.com/ru/post/fr451966/


All Articles