Les centres de données fonctionnent comme des réseaux distribués, hébergeant de nombreuses applications web et mobiles sur un seul serveur. Lorsqu'un utilisateur envoie une requête à une application, des fragments de données stockées sont récupérés auprès de centaines, voire de milliers de services répartis sur ces serveurs. Avant d'envoyer une réponse, l'application doit attendre que le service le plus lent ait traité les données. Ce délai est appelé latence de file d'attente.
Les méthodes actuelles de réduction de la latence des files d'attente laissent un grand nombre de cœurs de processeur disponibles sur un serveur pour traiter rapidement les requêtes entrantes. Cependant, cela signifie que ces cœurs restent inactifs la majeure partie du temps, tandis que les serveurs continuent de consommer de l'énergie simplement pour rester sous tension. Les centres de données pouvant contenir des centaines de milliers de serveurs, même de légères améliorations de l'efficacité de chaque serveur peuvent permettre d'économiser des millions de dollars.
Certains systèmes réallouent les cœurs aux applications en fonction de la charge de travail. Cependant, cette opération s'effectue en quelques millisecondes, soit environ un millième de la vitesse requise pour les requêtes accélérées actuelles. Un délai trop long peut également dégrader les performances d'une application, car les informations non traitées dans un délai prédéterminé ne sont pas transmises à l'utilisateur.
Lors d'une conférence USENIX sur la conception de systèmes en réseau, des chercheurs ont développé Shenango, un système d'allocation de cœurs plus rapide qui réduit les latences d'attente tout en optimisant l'efficacité. Ce système repose sur un nouvel algorithme qui détecte les applications rencontrant des difficultés de traitement des données. Un composant logiciel alloue ensuite les cœurs inactifs pour prendre en charge la charge de travail de ces applications.
« Dans les centres de données, il existe un compromis entre efficacité et latence, et il est essentiel de réallouer les cœurs avec une précision bien supérieure à la milliseconde », explique Amy Ousterhout, doctorante au Laboratoire d'informatique et d'intelligence artificielle (CSAIL) et première auteure de l'étude. Shenango permet aux serveurs de « gérer efficacement les opérations qui s'effectuent sur des échelles de temps très courtes ».
Les économies d'énergie et de coûts varieront d'un centre de données à l'autre, en fonction de sa taille et de sa charge de travail. L'objectif principal est d'améliorer l'utilisation du processeur afin d'optimiser l'utilisation de chaque cœur. Les meilleurs taux d'utilisation actuels du processeur avoisinent les 60 %, mais les chercheurs affirment que leur système pourrait atteindre les 100 %.
« Le taux d'utilisation des centres de données est aujourd'hui assez faible », explique Adam Belay, co-auteur de l'étude, professeur adjoint de génie électrique et d'informatique et chercheur au CSAIL. « Il s'agit d'un problème très sérieux qui ne peut être résolu en un seul endroit au sein du centre de données. Mais ce système est un élément essentiel pour améliorer ce taux. »
Détection efficace des congestions.
Dans un centre de données réel, Shenango (algorithme et logiciel) serait exécuté sur chaque serveur. Tous les serveurs pourraient communiquer entre eux.
La première innovation du système réside dans un nouvel algorithme de détection de congestion. Toutes les cinq microsecondes, cet algorithme vérifie les paquets de données en attente de traitement par chaque application. Si un paquet est toujours en attente de la dernière vérification, l'algorithme signale un délai d'au moins cinq microsecondes. Il vérifie également si un processus de calcul, appelé sous-processus, est en attente d'exécution. Le cas échéant, le système considère l'application comme « congestionnée ».
Cela paraît simple. Pourtant, la structure de la file d'attente est cruciale pour une détection de congestion à la microseconde près. L'approche traditionnelle impliquait de vérifier l'horodatage de chaque paquet de données dans la file, une opération beaucoup trop longue.
Les chercheurs mettent en œuvre des files d'attente dans des structures efficaces appelées « tampons annulaires ». Ces structures peuvent être visualisées comme différents emplacements autour d'un anneau. Le premier paquet de données reçu est placé dans un emplacement initial. À mesure que de nouvelles données arrivent, elles sont placées dans les emplacements suivants de l'anneau. Généralement, ces structures sont utilisées pour le traitement des données selon le principe du premier entré, premier sorti (FIFO), en retirant les données de l'emplacement initial et en progressant vers l'emplacement final.
Le système des chercheurs, cependant, ne stocke les paquets de données que brièvement dans les structures, le temps qu'une application puisse les traiter. Entre-temps, les paquets stockés peuvent servir à vérifier la congestion. L'algorithme compare simplement deux points dans la file d'attente (la position du premier paquet et celle du dernier paquet cinq microsecondes auparavant) pour déterminer si les paquets subissent un retard.
« On peut observer ces deux points et suivre leur évolution toutes les cinq microsecondes pour voir la quantité de données traitées », explique Fried. Grâce à la simplicité des structures, « il suffit de le faire une seule fois par cœur. Avec 24 cœurs, on effectue 24 vérifications en cinq microsecondes, ce qui est très performant. »
Allocation intelligente :
La seconde innovation, IOKernel, est un hub logiciel central qui achemine les paquets de données vers les applications appropriées. IOKernel utilise également un algorithme de détection de congestion pour allouer rapidement des ressources aux applications congestionnées, et ce, beaucoup plus rapidement que les approches traditionnelles.
Par exemple, IOKernel peut détecter un paquet de données entrant destiné à une application exigeant une vitesse de traitement de l'ordre de la microseconde. Si l'application est saturée par manque de cœurs, IOKernel lui alloue immédiatement un cœur disponible. S'il détecte également une autre application utilisant des cœurs pour des données moins critiques, il en réaffectera certains à l'application saturée. Les applications contribuent également à cette optimisation : si une application ne traite pas de données, elle signale à IOKernel que ses cœurs peuvent être réalloués. Les données traitées sont ensuite renvoyées à IOKernel pour envoi de la réponse.
« IOKernel cible les applications qui ont besoin de cœurs mais qui n'en possèdent pas », explique Behrens. « Il s'agit d'identifier les applications surchargées qui nécessitent davantage de cœurs et de leur en fournir le plus rapidement possible afin d'éviter tout retard et toute latence importante. »
La communication étroite entre IOKernel, l'algorithme, les applications et le matériel serveur est « unique dans les centres de données » et permet à Shenango de fonctionner de manière transparente, selon Belay : « Le système bénéficie d'une visibilité globale sur l'activité de chaque serveur. Il observe le matériel qui fournit les paquets, les processus exécutés sur chaque cœur et la charge de chaque application. Et ce, à l'échelle de la microseconde. »
La prochaine étape consiste pour les chercheurs à optimiser Shenango pour un déploiement en conditions réelles dans les centres de données. Pour ce faire, ils veillent à ce que le logiciel puisse gérer des débits de données très élevés et qu'il dispose des fonctionnalités de sécurité appropriées.
###
Article rédigé par Rob Matheson, service de presse du MIT
