Répandues dans les grands systèmes d'infrastructure au niveau matériel (serveurs, mémoire, processeurs...), les corruptions de données silencieuses - également appelées silent data corruption pour SDC - sont des erreurs assez fréquentes. Lorsqu'elles passent sous le radar de la DSI, elles peuvent déboucher sur des pertes de données et aussi se propager au niveau applicatif avec à la clé des impacts. « Dans un cycle de fabrication typique, un serveur ou un processeur est testé chez le fournisseur pendant quelques heures, puis chez l'intégrateur pendant quelques jours », a expliqué Facebook qui a enquêté sur le sujet. « Une fois que les composants sont passés en production, il devient vraiment difficile de mettre en œuvre des tests à grande échelle. Par conséquent, nous avons besoin de nouvelles approches de détection pour préserver le fonctionnement des applications et la résilience de ces matériels en détectant les erreurs et en les atténuant à grande échelle ».

D'après le géant des réseaux sociaux les sources d'erreurs sont variées et concernent aussi bien les dépendances de chemin de données, la variation de température, la vétusté matérielle... Or elles ne laissent pas de logs ou de trace dans les journaux système. D'où leur qualification d'erreurs silencieuses qui ne sont pas détectées dans les workloads et peuvent se propager sur plusieurs services différents. Pour répondre à cette problématique, Facebook a présenté dans sa recherche deux types de tests pour les détecter et les atténuer : à savoir une méthode opportuniste (hors production) et d'entraînement (en production).

« Les tests opportunistes sont en place depuis environ 3 ans. Cependant, en évaluant les compromis de l'une à l'autre, nous avons déterminé que les deux approches sont tout aussi importantes pour détecter les SDC, et nous recommandons d'utiliser et de déployer les deux à grande échelle », indique Facebook. « Nous avons observé que les tests en production peuvent, en 15 jours, détecter 70 % des corruptions de données que les tests opportunistes peuvent prendre environ 6 mois à détecter. Cependant, les derniers 30 % des défauts ne sont détectables qu'avec des tests opportunistes, ce qui rend les deux méthodes tout aussi importantes ».

Les tests opportunistes (hors production)

Dans une infrastructure à grande échelle, les machines subissent généralement plusieurs événements de maintenance, qu'elles soient planifiées ou non. Pour réaliser ces tests, Facebook s'appuie sur des événements de maintenance pour les utiliser et les exécuter. Tout est alors passé au crible : redémarrages du système, les mises à niveau du noyau, du micrologiciel, les ré-images de périphérique, le provisionnement de l'hôte, la ré-allocation et les réparations de l'espace de noms sont quelques exemples d'événements de maintenance pour lesquels les tests opportunistes sont activés. « Nous mettons en œuvre ce mécanisme à l'aide de Fleetscanner, un outil interne pour tester les SDC de manière opportuniste », explique Meta.

Les tests opportunités ont des durées d'exécution plus longues (de l'ordre de quelques minutes), ce qui entraîne une détection plus intrusive. Cependant, l'architecture inhérente de ce type de test signifie qu'il est possible d'avoir des corruptions entre deux intervalles de contrôle sur une machine ou un processeur suspect. « Nous avons mesuré la cadence de test pour en évaluer l'efficacité. Nous avons actuellement observé qu'à travers tous les mécanismes décrits ci-dessus, une machine passe par des tests opportunistes en moyenne une fois tous les 180 jours. Ce nombre est une combinaison de la population de la flotte et des cadences de mise à niveau et varie en fonction du type de machine. Il existe des contrôles précis pour permettre des cadences de test opportunistes plus fréquentes sur les niveaux et les services sensibles », fait savoir le groupe.

Grâce à ce mécanisme, Facebook indique avoir réalisé plus de 68 millions d'audit au sein de son infrastructure, avec un temps de test total de plus d'1 million d'heures.

Facebook

Modèle de tests opportunistes (hors production) utilisé par Facebook. (crédit : Facebook)

Les tests d'entraînement (en production)

Si les tests opportunistes lutte contre de nombreuses corruptions silencieuses de données ils ne cernent pas précisément ceux qui se déroulent en production. Meta a donc travaillé sur ce sujet en élaborant des tests d'entrainement qui surveillent de façon très précise la nature des workloads en fonctionnement et d'activer des contrôles granulaires à une cadence prédéterminée.

« Ces durées de test sont 1 000 fois inférieures à celles des séquences opportunistes. Les audits d'ondulation sont généralement de l'ordre de centaines de millisecondes et sont planifiés en fonction du comportement de la charge de travail et peuvent être activés et désactivés pour chacune d'entre elles », indique Facebook. « Nous sommes en mesure de détecter des défaillances à distance qui ne pourraient se manifester qu'avec des milliers d'itérations du test. Grâce à ce mécanisme, nous exécutons environ 2,5 milliards de tests uniques chaque mois. Ce framework est en ligne depuis quelques années au sein de l'architecture et a atteint un temps de test total de près de 100 millions de secondes en colocation avec les charges de travail », explique Meta.

Facebook 

Modèle de tests d'entraînement (en production) utilisé par Facebook. (crédit : Facebook)

Des appels à contributions rémunérés

Facebook indique avoir réalisé tous ses tests sur plusieurs années et a compilé quelques uns des résultats les plus saillants dans un tableau. « Nous observons que pour les types de défauts classés dans ce document, environ 70 % de la détection de couverture commune pourrait être effectuée dans les 15 jours. Les tests opportunistes pourraient rattraper les 23 % restants des processeurs uniques défectueux pendant 6 mois, et les 7 % restants résultent d'instances d'ondulation répétées. Les deux modèles de test présentent des avantages. Nous réexaminons et évaluons également en permanence ces mesures de couverture pour informer et mettre à jour nos stratégies de test à l'échelle autour des vecteurs de test, des cadences de test et des durées d'exécution des tests. Nous prévoyons qu'avec différents types de défauts, la répartition de la couverture peut varier », note Facebook.

Facebook

Comparatif des tests opportunistes et d'entraînement. (crédit : Facebook)

Pour favoriser l'innovation dans ce domaine de recherche et approfondir sa collaboration avec le milieu universitaire, Meta indique par ailleurs avoir lancé auprès des chercheurs un appel à propositions. « Nous prévoyons d'attribuer jusqu'à cinq prix, chacun dans la fourchette de 50 000 $. Le paiement sera versé à l'université d'accueil du proposant sous forme de don sans restriction. Les candidatures sont ouvertes jusqu'au 22 mars ». Pour y accéder, rendez-vous à cette adresse.