Pas de maintenance - Encore une fois ! | EVE Online

Pas de maintenance - Encore une fois !

2021-09-06 - Publié par CCP Explorer

Tous les jours, je pense à la maintenance, j'attends qu'elle passe, puis j'enregistre le résultat.

La dernière fois que j'ai écrit ces mots (vous avez lu le blog de dév ? Il vaut le détour, je vous le promets), le redémarrage automatique de Tranquility, le weekend, durait environ 4 minutes et 20 à 40 secondes, pile le temps de se faire une petite tasse de thé. Aujourd'hui, un an et demi plus tard, le redémarrage automatique était de 3 minutes et 34 secondes, pile le temps de se faire une tasse de thé encore plus rapide (j'ai chronométré en écrivant ce blog de dév). Compte tenu des améliorations que nous avons apportées depuis 2019, un redémarrage automatique lors de la maintenance d'une durée de 3 minutes et 30 à 40 secondes est relativement répandu ces jours-ci.

Je pourrais m'attarder sur cette amélioration de 50 à 60 secondes, soit une amélioration de 22,5 % entre le 3 décembre 2019 et le 3 juillet 2021, et prédire la fin des maintenances le 19 décembre 2026 en me basant sur ce graphique hyper scientifique... mais la réalité est plus complexe que cela.

Il y a un temps minimum incompressible (souple) d'environ 3 minutes compte tenu des trois activités différentes qui se produisent pendant les maintenances (l'arrêt, les tâches de la base de données et le démarrage) qui durent environ 1 minute chacune, à moins de modifications fondamentales, et la plus fondamentale serait encore qu'il n'y ait pas de maintenance du tout. La maintenance pourra difficilement durer moins de 160-200 secondes ; en revanche, les maintenances seront de moins en moins fréquentes avant de disparaître totalement. Toutefois, je voulais commencer ce blog en vous donnant un exemple concret des progrès réalisés en terme de réduction du temps de maintenance depuis la dernière fois. Une autre expérience sur l'absence de maintenance est prévue pour le 9 septembre.

Cette deuxième expérience "sans maintenance" a au moins quatre buts :

  • Vérifier les corrections apportées aux problèmes identifiés lors de la précédente expérience dans l'environnement de production réel
  • Vérifier qu'il n'y a aucune autre régression de code ou de fonctionnalité depuis la dernière fois, et chercher d'autres problèmes, de façon générale
  • Surveiller l'utilisation de mémoire
  • Vérifier que notre plate-forme technologique (dont nous vous parlerons davantage plus loin) ne présume pas la présence de la maintenance

Alors, qu'avons-nous découvert la dernière fois, je vous entends demander ?

Tout d'abord, nous avons découvert que certains éléments comptaient sur la maintenance comme événement pour marquer le début du cycle quotidien, ainsi que sur le démarrage quotidien, donnant par exemple des situations avec des structures n'arrivant pas au terme de compteurs supérieurs à 24 heures et des corporations ne rejoignant pas la guerre de factions. Nous avons réglé tous les problèmes que nous avons identifiés et ceux que vous nous avez signalés. Désormais, nous voulons les vérifier plus en profondeur (bien entendu, ils ont été testés, mais nos environnements de test n'ont pas la même ampleur que Tranquility) et chercher d'autres problèmes.

Nous avons également observé des désynchronisations temporelles (que nous avons réglées), et une utilisation de mémoire importante (qui a été améliorée dans une certaine mesure).

La désynchronisation temporelle était un problème connu, mais la dernière fois nous observions seulement si les joueurs la remarquaient à la fin du deuxième jour. Notre objectif de désynchronisation temporelle était un maximum de ±0,5 seconde. Mais avec un matériel plus récent, nous avons constaté une désynchronisation de 2,25 secondes à la fin du cycle et - comme nous nous y attendions - 4,5 secondes à la fin du deuxième jour lors de la première expérience sans maintenance, en 2019.

Les joueurs commençaient à remarquer la désynchronisation lorsque celle-ci dépassait les 3 secondes, percevant surtout comme un lag ou une latence des modules lorsque leur client et le nœud hébergeant leur système solaire étaient en désaccord conséquent au sujet des cycles des modules. La désynchronisation temporelle est désormais en général de ±1/100 d'une seconde, bien en dessous du maximum de ±0,5 seconde.

Tranquility a toujours été gourmand en matière de mémoire. Pour de meilleures performances, par le passé, nous avons toujours choisi de précalculer les valeurs, traiter les données et stocker les résultats à titre de référence ultérieure, plutôt que de recalculer ces valeurs par la suite. Par exemple, les projets Brain in a Box (intelligence compartimentée) et de réécriture de Dogma en 2015 reposaient sur le calcul et le stockage des compétences et de leurs effets (les "cerveaux" des personnages) ainsi que sur le transfert du résultat calculé entre les systèmes solaires au lieu de recalculer le cerveau à chaque entrée dans un nouveau système solaire. Nous n'effaçons jamais la mémoire non plus, puisque la mémoire du nœud de la galaxie est réinitialisée tous les jours de toute façon, point pour lequel nous dépendons du redémarrage quotidien (remarque : nous n'effaçons évidemment pas notre mémoire cache de la base de données ni notre mémoire cache Redis, mais la mémoire cache de simulation principale est vidée au redémarrage, à chaque maintenance).

Les nœuds consommant le plus de mémoire de la galaxie de Tranquility, les nœuds des services de personnage stockant les "cerveaux" que j'ai mentionnés précédemment (entre autres), étaient à 75 % de charge de mémoire à la fin de la deuxième journée la dernière fois, ce qui est juste en dessous de notre tolérance de fonctionnement de 80 %. À en croire les chiffres de 2019, nous pourrions faire fonctionner Tranquility 3 jours (et peut-être 7 heures de plus) si nous faisions fonctionner la galaxie avec une utilisation mémoire du premier nœud à 100 %. En 2019, la charge de mémoire du premier jour était à 55 %, mais ces jours-ci elle est aux alentours de 35 %. Nous voulons donc revoir nos observations.

La suppression de la maintenance est un objectif à long terme et tous nos progrès technologiques vont dans ce sens. Cela fait quelques années que nous travaillons sur une plate-forme technologique de microservice et bus message pour EVE, et nous avons commencé à employer cette plate-forme pour diverses fonctionnalités. Nous voulons maintenant observer comment cet écosystème se comporte sans maintenance de la galaxie principale du jeu, en nous assurant que rien ne présume une maintenance quotidienne.

Rendez-vous le jeudi 9 septembre, à l'occasion du lancement du deuxième opus de « Pas de maintenance ». Et, comme la dernière fois, une vidéo sera bientôt disponible. Il en faut des efforts et de la puissance pour réaliser un tel exploit.