Introduction

L'installation d'un testbed cloud-edge pour une démonstration de vision par ordinateur a révélé un point fondamental sur les systèmes distribués : etcd ne tolère pas les stockages lents. Cette expérience a mis en lumière l'importance de la latence des entrées-sorties (I/O) pour les systèmes de stockage distribués.

Contexte Technique

Le système utilisé est basé sur Karmada comme orchestrateur de continuum, s'appuyant sur des clusters k3s individuels. L'application est une pipeline de vision par ordinateur effectuant une détection d'objets en temps réel. Le matériel utilisé comprend un NUC, un Raspberry Pi et un Jetson AGX Orin. Le démonstrateur utilise des politiques basées sur des données télémétriques pour adapter dynamiquement le déploiement et le comportement d'exécution de l'application sans intervention manuelle. etcd est utilisé par Karmada pour persister son état, et son fonctionnement est très sensible à la latence des I/O.

Analyse et Implications

L'analyse a révélé que les crashes des pods de Karmada étaient causés par des timeouts d'etcd dus à une latence d'I/O élevée. Les pods de Karmada plantaient régulièrement, et les investigations initiales n'ont pas permis d'identifier la cause. Cependant, l'examen approfondi des journaux a finalement pointé vers des problèmes de latence d'I/O liés au stockage partagé des VM sur le NUC. La solution a consisté à optimiser la configuration de ZFS pour améliorer les performances d'I/O, en ajustant les paramètres tels que la compression, la taille des enregistrements et la désactivation des écritures synchrones.

Perspective

Cette expérience souligne l'importance de considérer les performances d'I/O lors de la conception de systèmes distribués. Les systèmes comme etcd nécessitent des latences d'I/O faibles pour fonctionner correctement. Les administrateurs système et les développeurs doivent être conscients de ces exigences et prendre des mesures pour optimiser les performances d'I/O, notamment en ajustant les paramètres de stockage et en utilisant des algorithmes de compression appropriés. La surveillance des performances d'I/O et la mise en place de mécanismes de détection de problèmes devraient également être prioritaires pour assurer la stabilité et la fiabilité des systèmes distribués.