Facebook propose une suite d'outils noyau open source pour gérer les flottes de machines Linux

Facebook administre au quotidien des dizaines de milliers de serveurs tournant sous Linux dans ses centres de données, et a pour cela besoin d'outils spécifiques. Facebook vient d'ouvrir le code de quelques-uns de ces outils, que le réseau social utilise déjà en production dans ses centres de données. En voici quelques-uns :

BPF est un moteur d’exécution au noyau Linux, qui permet l’exécution de bytecode à divers points de raccordement, ce qui permet de modifier les comportements du noyau avec du code personnalisé. Bien qu'il soit largement utilisé pour le filtrage de paquets, le jeu d'instructions de BPF est générique et suffisamment flexible pour prendre en charge et permettre une grande variété de cas d'utilisation autres que la mise en réseau, tels que le traçage et la sécurité (par exemple, le sandboxing).

Btrfs est un système de fichiers de nouvelle génération conçu pour les centres de données actuels. Il s'agit d'un système de fichiers de copie sur écriture (CoW) axé sur la mise en œuvre de fonctionnalités avancées, la tolérance aux pannes, la réparation et la facilité d'administration. Btrfs est conçu pour traiter et gérer des sous-systèmes de stockage volumineux et prend en charge des fonctionnalités telles que les instantanés, la défragmentation en ligne, le regroupement et la prise en charge intégrée de plusieurs périphériques.

Netconsd est un démon netconsole basé sur UDP qui fournit un transport léger pour les messages Linux netconsole. Il reçoit et traite les données de journal du noyau Linux et les transmet sous forme de données structurées de manière à aider les ingénieurs de production à identifier rapidement les problèmes de la flotte.

Cgroup2 est le mécanisme de noyau Linux pour regrouper et structurer les charges de travail et pour contrôler la quantité de ressources système affectées à chaque groupe. Il possède des contrôleurs pour la mémoire, les E / S, l’unité centrale de traitement, etc. Il vous permet également d'isoler les charges de travail, de définir des priorités et de configurer la distribution des ressources pour chacune d'entre elles.

Oomd est un tueur de processus OOM (Out-of-MEmory) espace utilisateur qui agit en fonction du contexte et de la priorité des processus exécutés sur un système. Il vous permet de configurer les réponses aux conditions du MOO, telles que suspendre ou supprimer des éléments non essentiels, réaffecter de la mémoire dans le système ou d’autres actions.