• Site VEAF
  • Catégories
  • Récent
  • Populaire
  • Utilisateurs
  • Groupes
  • calendar
  • S'inscrire
  • Se connecter
VEAF
  • Site VEAF
  • Catégories
  • Récent
  • Populaire
  • Utilisateurs
  • Groupes
  • calendar
  • S'inscrire
  • Se connecter

Performances du serveur

Gestion du serveur, documentation
7
13
396
Charger plus de messages
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • Z
    Zip Membre VEAF
    dernière édition par 2 juil. 2020, 16:55

    Bonjour à tous,

    Depuis quelques temps, nos serveurs ont des soucis de performance.
    Hier soir, c’était le bouquet, avec des désynchros à foisons, qui nous ont forcés à battre en retraite sur TRAD, beaucoup plus légère et bien plus efficace au niveau CPU.

    Du coup j’ai pris le temps de faire des tests cet après-midi, sur le serveur privé.

    J’ai testé la mission OT (OT), et même lancé toutes les zones de combat et quelques combat missions (OT + all zones), pour voir l’impact.
    Pendant ce temps la mission TRAD de Couby utilise gentiment à peine quelque % de CPU, c’est presque obscène 😉

    221f1d71-d067-4895-9ace-f5a60d4d8259-image.png

    J’ai essayé d’alléger la mission OT en retirant des groupes (light), puis tous les véhicules des zones de combat (light2), puis les vols des combat missions (light3).
    Toujours des pics à 25%, toujours des soucis.
    e6b5ed03-f72c-4a4f-ae4f-9dd182451706-image.png

    Je me suis dit que le coupable était peut-être dans un des scripts VEAF, qui sont dans une version bien plus ancienne dans TRAD.
    Du coup j’ai modifié TRAD (TRAD-1) pour qu’il utilise tous les nouveaux scripts.
    Pas mieux (ou plutôt pas pire) :
    68cd00ca-eb7c-409d-8632-0178307f4631-image.png

    J’ai pensé au Roosevelt, et j’ai fait une version de l’OT sans ce bateau (no-roosevelt)
    Et puis j’ai remarqué que bien souvent, les serveurs se bloquaient et avaient besoin d’un redémarrage pour repartir, sur un message de log émis par LotATC, et j’ai donc désinstallé ce dernier.
    Constatant un mieux, j’ai remis le Roosevelt (std-OT) pour vérifier si c’était lui ou LotATC le coupable.
    8fce9eed-eb5c-4878-bf1b-3c2ddc59263e-image.png

    Là on voit que c’est mieux !
    Du coup j’étais content, et j’ai demandé à Maddog et Dilixo de m’aider à tester.

    Tristesse ! Consternation !
    Dès qu’on se connecte à plusieurs au serveur, il repasse à 25% CPU comme avant.
    Le retrait de LotATC n’a rien réglé.

    Du coup, si on me cherche, je suis dans Elite Dangerous et Sea Of Thieves.
    Adieu !

    Zip

    1 réponse Dernière réponse Répondre Citer 0
    • J
      Jed Membre du bureau
      dernière édition par 2 juil. 2020, 17:14

      Pour mon info, c’est quoi les specs du serveur ? Windows directement installé sur du physique ?

      1 réponse Dernière réponse Répondre Citer 0
      • Z
        Zip Membre VEAF
        dernière édition par 3 juil. 2020, 06:20

        @Jed a dit dans Performances du serveur :

        Pour mon info, c’est quoi les specs du serveur ? Windows directement installé sur du physique ?

        C’est Windows installé sur du virtuel (ESX).

        Serveur E3-SAT-2-32

        • Intel Xeon E3-1231v3 (4c/8th)
        • 32GB DDR3 ECC 1333 MHz
        • SoftRaid 4x2To SATA
        • VMware ESXi 6.5 U3 (64bits)

        Zip

        1 réponse Dernière réponse Répondre Citer 0
        • Z
          Zip Membre VEAF
          dernière édition par 3 juil. 2020, 06:52

          Bon, j’ai trouvé la cause du problème.

          Enfin quand je dis “j’ai” c’est plutôt un travail d’équipe, comme toujours à la VEAF ! @Mitch est venu à mon secours, merci mon pote !

          Attention, c’est long ; intéressant, mais long 😉

          Introduction - explication du contexte

          Il faut comprendre le fonctionnement de cette merde écrite avec le cul ce prodige de la technologie qu’on appelle communément DCS (je crois que ça veut dire “Distributed Crash System”, ou peut-être “Deviant Crap Shit”).

          Le code réseau est synchronisé sur les frames (il est exécuté de manière discrète à chaque calcul d’une image) ; il n’y avait pas de serveur dédié à la base, donc on partait du principe que le jeu devait faire serveur, et donc il fallait bien exécuter du code à un moment.
          Même avec le “serveur dédié” (qui n’est rien d’autre qu’un artifice technique et utilise donc toujours le même vieux code) c’est la même chose.
          Quand la charge CPU monte de trop, et que donc l’exécution du code dure plus longtemps, on en arrive à dépasser le temps alloué pour calculer une frame (60 fps = 16.66ms), ce qui fait que quand le serveur rame il rate des frames.
          Et vu que quand on rate une frame, on rate le code réseau qui y est aussi exécuté, c’est là qu’on a des désynchronisations.
          Elles se traduisent par des déplacements intempestifs des appareils (warp), des blocages en plein vol (freeze) et d’autres joyeusetés (menu radio tronqué).

          Et comme là, dans l’OpenTraining qui est bien complexe, on est déjà pas très loin de la limite de charge CPU, il suffit de peu de chose pour basculer.

          Et c’est le drame

          J’ai failli écrire "Ivre, virgule, " ; j’écoute trop Guillaume Meurice 😉

          Deux phénomènes précipitent notre serveur vers sa désynchro.

          Tout d’abord, le paquet réseau qui contient le menu radio (programmé avec le cul dans les règles du lard) ne peut pas être fractionné ; sa taille maximale est donc limitée à 64kB.
          Et en prime, personne n’est capable de me dire ce qu’il contient (un menu pour un client ? tous les menus ?) ni comment il est structuré (compression ? optimisation ? ah pardon ce mot n’existe pas en russe).
          Résultat, dès qu’on a un peu trop de trucs dans ce menu, bam désynchro !
          Or, avec les nouvelles Combat Missions, on a ajouté des éléments dans le menu. Et paf le chien !

          Ensuite, j’ai il y a quelques temps développé le système qui nous permet d’utiliser le chat avec SLMOD pour lancer des commandes dans le jeu (-veaf login par exemple).
          Pour chaque Combat Mission, le système ajoute automatiquement 4 commandes (start, stop, start-silent et stop-silent).
          Or récemment j’ai modifié le système des Combat Missions pour que, à chaque mission créée par le designer, on crée automatiquement des versions de cette mission en fonction du niveau d’expérience de l’IA (skill) et d’un multiplicateur du nombre d’ennemis (scale).
          Il y a 5 skills et 4 scales, donc pour chaque Combat Mission on en crée en fait 20 !
          Or, il y a 14 missions comme ça dans l’OpenTraining, ce qui nous fait en réalité 14x20 = 280 missions, et donc 280x4 = 1120 commandes.

          Normalement ça ne devrait pas poser de problème ; dans mon code en tout cas, je le gère d’une manière optimisée et donc on pourrait encore en rajouter.
          Mais SLMOD, lui, crée une scheduled task (une fonction qui est appelée toutes les secondes par un minuteur) par commande ! Et du coup on se retrouve avec le minuteur qui doit déclencher toutes les secondes 1120 (plus les quelques autres commandes standard) fonctions !
          Ca explique les pics dans la charge CPU :
          e6b5ed03-f72c-4a4f-ae4f-9dd182451706-image.png
          Et ces pics nous font basculer du côté obscur de la farce…

          Conclusions, actions

          Côté DCS, on ne peut pas faire grand-chose.
          J’ai déjà signalé à maintes reprises tous ces soucis (et je ne suis pas le seul, sauf peut-être pour la limitation du menu radio que personne n’avait même imaginé avant tant elle est ridicule).

          Pour SLMOD, j’ai modifié mon code afin de ne plus créer de commande pour les Combat Mission, et à terme j’irai éditer le code de SLMOD pour corriger ce comportement qui ne nous convient pas.

          Et pour le menu radio, je cherche des solutions pérennes. En attendant j’ai désactivé toutes les missions.

          Voilà, vous pouvez retourner regarder la télé 😉

          Zip

          1 réponse Dernière réponse Répondre Citer 2
          • D
            Dilixo Membre VEAF
            dernière édition par 3 juil. 2020, 07:32

            Merci @Zip. On dirait que je suis au taf en lisant ton rapport.

            Pilote Mirage 2000-C et autres modules en cours…

            Z 1 réponse Dernière réponse 3 juil. 2020, 08:04 Répondre Citer 0
            • Z
              Zip Membre VEAF @Dilixo
              dernière édition par 3 juil. 2020, 08:04

              @Dilixo a dit dans Performances du serveur :

              Merci @Zip. On dirait que je suis au taf en lisant ton rapport.

              Ah ils sont marrants comme moi à ton taf ? 😄

              Zip

              D 1 réponse Dernière réponse 3 juil. 2020, 20:57 Répondre Citer 0
              • M
                Maddog Membre VEAF
                dernière édition par 3 juil. 2020, 08:21

                En tout cas encore merci pour ton TAF! en résumer on ne peut pas faire d’un âne un cheval de course…

                Bouton inconnu touche à ton C… Pilote M2kC à la retraite, F14B pilote &RIO, Mi8 Mi-24 Ka50, futur apprenti AH-64

                Z 1 réponse Dernière réponse 3 juil. 2020, 08:26 Répondre Citer 0
                • Z
                  Zip Membre VEAF @Maddog
                  dernière édition par 3 juil. 2020, 08:26

                  @Maddog a dit dans Performances du serveur :

                  En tout cas encore merci pour ton TAF! en résumer on ne peut pas faire d’un âne un cheval de course…

                  Si on peut, mais ça prend des efforts ^^
                  Mais t’inquiète on est dessus avec @Mitch

                  Zip

                  1 réponse Dernière réponse Répondre Citer 0
                  • T
                    Ti'Rco Membre du bureau
                    dernière édition par 3 juil. 2020, 08:54

                    Merci à vous deux @Zip et @Mitch ! C’était effectivement très intéressant et tout à fait compréhensible pour un étranger de l’informatique 👍

                    Ti'Rco - Pilote F/A-18C à la 14.735 Corsairs, KA-50 à la 99.735 Coyotes, M-2000C à la 10.735 Raptor Cell, RIO F-14 en cours…

                    1 réponse Dernière réponse Répondre Citer 0
                    • Z
                      Zip Membre VEAF
                      dernière édition par Zip 7 avr. 2020, 06:33 3 juil. 2020, 13:55

                      Bon, j’ai fait des progrès et je vais déjà pousser une version sur le serveur.

                      Améliorations dans les commandes “remote”

                      Ce sont les commandes qu’on peut taper dans le chat de SLMOD.

                      Dorénavant les déclencheurs de combat missions ne sont plus gérés par SLMOD (jusqu’à nouvel ordre, mais c’est probablement permanent) et il faut utiliser une commande de marqueur _remote#<mot de passe> <commande à lancer>.
                      Le mot de passe est facultatif, si on est déjà en mode où la mission est authentifiée.

                      Par exemple _remote#PasswordDeLaVEAF -veaf start-training-radar-tu22-FL300/Excellent/4

                      Je précise que la commande SLMOD -veaf login fonctionne toujours. Il est donc possible de faire :

                      • -veaf logindans le chat
                      • _remote# -veaf stop-silent-training-radar-tu22-FL300/Excellent/4 dans un marqueur

                      Améliorations dans le menu radio

                      A la base

                      Le menu radio est configuré au minimum (pas d’aide, pas de listes complexes)

                      • max(veafRadio.radioMenuSize)=6230
                      • nbCommands=6692
                      • nbMenus=144

                      Retrait des veafRadio.USAGE_ForUnit

                      Souvenez vous, dans certains menus il fallait préciser qui on était !
                      Ben c’est plus la peine, on fera juste attention que ça considère la position du leader du groupe.

                      • max(veafRadio.radioMenuSize)=5111
                      • nbCommands=4748
                      • nbMenus=142

                      Limitation des Combat Missions

                      Je limite la génération automatique des missions à 2 skills et 3 scales quand elles sont dans le menu radio.

                      • max(veafRadio.radioMenuSize)=4459
                      • nbCommands=4700
                      • nbMenus=118

                      Conclusion

                      On a diminué de 30% la taille apparente du menu radio (sachant que ces valeurs sont arbitraires, je ne sais pas vraiment ce qui compte ou non), de 30% le nombre de commandes (l’élément final d’une arborescence de menu) et de 20% le nombre de sous-menus.
                      J’espère que ça va suffire.

                      Zip

                      1 réponse Dernière réponse Répondre Citer 2
                      • D
                        Dilixo Membre VEAF @Zip
                        dernière édition par 3 juil. 2020, 20:57

                        @Zip a dit dans Performances du serveur :

                        @Dilixo a dit dans Performances du serveur :

                        Merci @Zip. On dirait que je suis au taf en lisant ton rapport.

                        Ah ils sont marrants comme moi à ton taf ? 😄

                        Oui, mais pas des comme toi ! 😜

                        Pilote Mirage 2000-C et autres modules en cours…

                        1 réponse Dernière réponse Répondre Citer 0
                        • M
                          Magicbra Membre du bureau
                          dernière édition par 3 juil. 2020, 22:25

                          merci pour ce gros boulot. 👍

                          "L'ennemi est bête : il croit que c'est nous l'ennemi alors que c'est lui ! " - P. Desproges

                          1 réponse Dernière réponse Répondre Citer 0
                          • T
                            Trob
                            dernière édition par 3 juil. 2020, 23:30

                            Merci pour ce taf et bravo pour votre persévérance !

                            "A vaincre sans péril, on triomphe sans gloire." Pilote F/A-18C, M2000-C, F14, F16

                            1 réponse Dernière réponse Répondre Citer 0
                            8 sur 13
                            • Premier message
                              8/13
                              Dernier message