Simple Science

La science de pointe expliquée simplement

# Informatique# Informatique distribuée, parallèle et en grappes# Systèmes d'exploitation

Avancées dans l'efficacité du FaaS

Un nouveau système améliore la planification des fonctions et la gestion des ressources dans le computing sans serveur.

― 10 min lire


Innovation du systèmeInnovation du systèmeFaaSperformance.retards de planning et améliore laNouveau design qui s'attaque aux
Table des matières

L'informatique sans serveur, c'est une nouvelle façon d'utiliser les ressources cloud où les utilisateurs n'ont pas à se soucier de gérer des serveurs. Au lieu de ça, ils peuvent se concentrer sur l'écriture de leur code, et le fournisseur de cloud s'occupe du reste. Une des formes les plus populaires de l'informatique sans serveur, c'est le Function as a Service (Faas). Avec le FaaS, les utilisateurs écrivent de petits morceaux de code appelés fonctions qui s'exécutent en réponse à des événements comme des demandes d'utilisateurs, des changements dans la base de données ou des tâches programmées.

Le FaaS a gagné en popularité parce qu'il permet aux développeurs d'exécuter leur code sans avoir à gérer des serveurs ou une infrastructure. Cette simplicité peut être très séduisante, surtout pour ceux qui veulent construire et déployer des applications rapidement. Cependant, cette facilité d'utilisation ne rime pas toujours avec des délais réduits lors de l'exécution des fonctions, surtout quand beaucoup de fonctions sont lancées en même temps.

Défis des plateformes FaaS actuelles

Bien que les plateformes FaaS aient été conçues pour simplifier l'expérience utilisateur, elles peuvent rencontrer des problèmes de délais lors de la Planification des fonctions. Contrairement à l'initialisation des environnements de fonction, qui peut se faire rapidement, le temps pris pour planifier beaucoup de fonctions peut être beaucoup plus long. Ce délai peut poser problème quand plusieurs fonctions doivent s'exécuter simultanément.

Les plateformes FaaS actuelles s'appuient souvent sur des systèmes plus anciens conçus pour gérer des processus de longue durée. Ça les rend moins efficaces pour les fonctions de courte durée qui sont typiques dans les applications FaaS. La façon traditionnelle de gérer ces systèmes peut entraîner des temps d'attente pour les utilisateurs, ce qui n'est pas idéal quand des réponses rapides sont nécessaires.

Besoin d'une meilleure approche

Vu les problèmes que rencontrent les plateformes FaaS existantes, il y a clairement besoin d'une nouvelle façon de gérer ces systèmes. Les principaux problèmes viennent de la façon dont ces systèmes gèrent la planification et la gestion d'état. Quand les fonctions sont lancées par rafales, l'approche actuelle a du mal parce qu'elle est conçue pour des applications qui nécessitent plus de ressources et de temps.

Un système plus efficace pourrait améliorer le processus de planification et réduire les délais que les utilisateurs rencontrent. Ça voudrait dire que les utilisateurs pourraient profiter de réponses plus rapides même quand beaucoup de fonctions sont invoquées simultanément.

Un nouveau design de système pour FaaS

Pour relever les défis des hauts délais de planification dans les plateformes FaaS, un nouveau système est proposé. Ce système est conçu depuis le départ pour répondre spécifiquement aux besoins des applications FaaS. Il a trois principes clés qui l'aident à gérer les fonctions de manière plus efficace.

Gestion simplifiée

Le nouveau système simplifie la gestion des fonctions. Au lieu de s'appuyer sur des hiérarchies compliquées et plusieurs composants, il se concentre sur moins d'abstractions plus compréhensibles. Ça rend la gestion de l'état du système plus facile sans sacrifier la performance.

Planification rapide des fonctions

Un principe important du nouveau système est de minimiser les délais dans la planification des fonctions. Il évite les mises à jour constantes et cherche plutôt des moyens de fonctionner sans avoir besoin de maintenir un état persistant avec chaque appel de fonction. Ça veut dire que quand les fonctions sont appelées, le système peut répondre rapidement sans avoir besoin d'attendre que les mises à jour soient finalisées.

Communication efficace

Le système est conçu pour réduire la quantité de communication nécessaire entre ses composants. En faisant fonctionner certains processus ensemble plutôt que séparément, ça réduit les délais qui viennent du fait que plusieurs composants doivent communiquer entre eux. C'est particulièrement important quand beaucoup de fonctions sont invoquées en même temps.

Comparaison de performance avec les systèmes existants

Pour démontrer les avantages de ce nouveau système, des comparaisons de performance ont été faites par rapport aux plateformes FaaS existantes comme AWS Lambda et Knative. Le nouveau système montre des améliorations significatives dans plusieurs domaines clés, comme la rapidité de planification des fonctions et le nombre de fonctions qu'il peut gérer simultanément.

Latence de planification

En testant le nouveau système, les résultats ont indiqué qu'il pouvait réduire le temps pris pour planifier les fonctions. Spécifiquement, il a été constaté qu'il pouvait gérer beaucoup de fonctions lancées simultanément beaucoup mieux que les plateformes actuelles. Cette réduction du temps de planification peut mener à des réponses plus rapides pour les utilisateurs quand ils invoquent des fonctions.

Débit de création de fonctions

Le nouveau système est capable de créer un grand nombre d'environnements de fonction rapidement. Dans les tests, il a atteint la capacité de créer 2 500 fonctions par seconde, ce qui est bien plus que ce que les plateformes existantes pouvaient gérer. Cette augmentation du débit est cruciale pour les applications qui rencontrent des pics d'utilisation soudains.

Efficacité des ressources

Non seulement le nouveau système améliore la vitesse, mais il utilise également les ressources plus efficacement. En se concentrant sur la minimisation de la charge de travail sur le plan de contrôle, il peut gérer plus de requêtes tout en consommant moins de puissance de calcul. Ça veut dire que les utilisateurs bénéficient de meilleures Performances sans avoir besoin de ressources supplémentaires.

Application dans le monde réel et tests de traces

Pour valider son efficacité dans des conditions réelles, le nouveau système a été testé en utilisant de vraies traces de charges de travail provenant de fonctions Azure. Ce test impliquait de faire fonctionner 70 000 fonctions sur une période de deux semaines pour mesurer combien le système pouvait gérer de vraies tendances d'utilisation.

Résultats des tests dans le monde réel

Pendant les tests, le nouveau système a montré une réduction significative des ralentissements que les utilisateurs ont rencontrés quand les fonctions étaient invoquées. Comparé aux plateformes existantes, il a été capable de gérer les requêtes de manière beaucoup plus fluide et efficace. Notamment, le nouveau système a enregistré un temps moyen de planification des fonctions plus bas, ce qui a conduit à une meilleure performance globale.

Scalabilité et flexibilité

La conception du nouveau système lui permet de s'adapter facilement à la demande croissante. Cette scalabilité est cruciale pour les applications qui pourraient croître ou faire face à des charges variables avec le temps. À mesure que la demande pour les fonctions augmente, le système peut s'ajuster sans délais significatifs ou baisses de performance.

Tolérance aux pannes et fiabilité

Une partie importante de tout système est sa capacité à gérer les pannes. Le nouveau système est conçu avec la tolérance aux pannes en tête, garantissant que la plateforme reste opérationnelle même quand certains composants échouent.

Tolérance aux pannes au niveau des composants

Le nouveau système inclut plusieurs plans de contrôle et de données. Ça veut dire que même si une partie échoue, le système peut continuer à fonctionner parce qu'il y a des sauvegardes prêtes à prendre le relais. Cette conception aide à garantir que les utilisateurs peuvent toujours invoquer des fonctions sans interruptions.

Tolérance aux pannes au niveau des requêtes

Bien que le système excelle à récupérer après des pannes de composants, il doit aussi pouvoir gérer les fonctions qui sont en cours au moment d'une panne. La conception permet une certaine flexibilité pour gérer ces situations, même si elle reconnaît qu'une récupération parfaite n'est pas toujours faisable.

Détails de mise en œuvre

Le nouveau système est construit avec environ 11 300 lignes de code, le rendant relativement léger comparé aux systèmes traditionnels. Il s'appuie sur des technologies modernes comme gRPC pour la communication entre ses différents composants, ce qui permet des réponses plus rapides et moins de surcharge.

Gestion des nœuds de travail

Chaque nœud de travail dans le système peut gérer les requêtes de fonction de manière efficace. En permettant une variété de techniques de sandboxing, le système peut gérer l'exécution des fonctions sans délais significatifs. Cette flexibilité garantit que différents types de charges de travail peuvent être accueillis.

Directions futures

Le potentiel du nouveau système est vaste, et il y a plusieurs domaines pour la recherche et le développement futur. Les améliorations pourraient inclure l'exploration d'une gestion plus efficace des flux de travail de fonction et l'amélioration de la façon dont le système peut gérer les requêtes pour garantir la fiabilité.

Amélioration des politiques de planification

Une possible avenue pour le travail futur serait d'améliorer les politiques de planification qui dictent comment les fonctions sont attribuées aux ressources. En affinant ces politiques, le système pourrait devenir encore plus réactif aux besoins des utilisateurs.

Support pour plus d'environnements d'exécution

À mesure que le paysage des environnements d'exécution de fonction évolue, il y a un besoin de supporter diverses options d'exécution. Cela pourrait inclure l'ajout de support pour de nouveaux langages de programmation ou modèles d'exécution pour mieux servir les développeurs.

Amélioration du caching des images

À mesure que le système se développe, gérer les images de conteneur efficacement sera clé. Les développements futurs pourraient se concentrer sur la recherche de moyens d'améliorer les techniques de mise en cache pour accélérer la fourniture de nouveaux environnements de fonction.

Conclusion

Le nouveau système de gestion du FaaS représente une amélioration significative par rapport aux plateformes existantes. En s'attaquant aux problèmes clés liés aux délais de planification et à la gestion de l'état, il offre aux utilisateurs une manière plus efficace et fiable d'exécuter leurs fonctions dans le cloud. Les avantages en performance et la facilité d'utilisation en font un choix attrayant pour les développeurs cherchant à utiliser l'informatique sans serveur pour leurs applications.

Les avancées en vitesse, scalabilité, et tolérance aux pannes font de ce système une option prometteuse pour l'avenir du FaaS. À mesure que le développement continue, il y aura des opportunités d'étendre ses capacités, garantissant qu'il reste pertinent dans le monde en constante évolution de l'informatique cloud et des architectures sans serveur.

Source originale

Titre: Dirigent: Lightweight Serverless Orchestration

Résumé: While Function as a Service (FaaS) platforms can initialize function sandboxes on worker nodes in 10-100s of milliseconds, the latency to schedule functions in real FaaS clusters can be orders of magnitude higher. The current approach of building FaaS cluster managers on top of legacy orchestration systems (e.g., Kubernetes) leads to high scheduling delays when clusters experience high sandbox churn, which is common for FaaS. Generic cluster managers use many hierarchical abstractions and internal components to manage and reconcile cluster state with frequent persistent updates. This becomes a bottleneck for FaaS since the cluster state frequently changes as sandboxes are created on the critical path of requests. Based on our root cause analysis of performance issues in existing FaaS cluster managers, we propose Dirigent, a clean-slate system architecture for FaaS orchestration with three key principles. First, Dirigent optimizes internal cluster manager abstractions to simplify state management. Second, it eliminates persistent state updates on the critical path of function invocations, leveraging the fact that FaaS abstracts sandbox locations from users to relax exact state reconstruction guarantees. Finally, Dirigent runs monolithic control and data planes to minimize internal communication overheads and maximize throughput. We compare Dirigent to state-of-the-art FaaS platforms and show that Dirigent reduces 99th percentile per-function scheduling latency for a production workload by 2.79x compared to AWS Lambda. Dirigent can spin up 2500 sandboxes per second at low latency, which is 1250x more than Knative.

Auteurs: Lazar Cvetković, François Costa, Mihajlo Djokic, Michal Friedman, Ana Klimovic

Dernière mise à jour: 2024-10-28 00:00:00

Langue: English

Source URL: https://arxiv.org/abs/2404.16393

Source PDF: https://arxiv.org/pdf/2404.16393

Licence: https://creativecommons.org/licenses/by-sa/4.0/

Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.

Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.

Plus d'auteurs

Articles similaires