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.
    • ZipZ
      Zip Membre VEAF
      dernière édition par

      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
      • JedJ
        Jed Membre du bureau
        dernière édition par

        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
        • ZipZ
          Zip Membre VEAF
          dernière édition par

          @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
          • ZipZ
            Zip Membre VEAF
            dernière édition par

            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
            • DilixoD
              Dilixo Membre VEAF
              dernière édition par

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

              Pilote Mirage 2000-C et autres modules en cours…

              ZipZ 1 réponse Dernière réponse Répondre Citer 0
              • ZipZ
                Zip Membre VEAF @Dilixo
                dernière édition par

                @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

                DilixoD 1 réponse Dernière réponse Répondre Citer 0
                • MaddogM
                  Maddog Membre VEAF
                  dernière édition par

                  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

                  ZipZ 1 réponse Dernière réponse Répondre Citer 0
                  • ZipZ
                    Zip Membre VEAF @Maddog
                    dernière édition par

                    @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
                    • Ti'RcoT
                      Ti'Rco Membre du bureau
                      dernière édition par

                      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
                      • ZipZ
                        Zip Membre VEAF
                        dernière édition par Zip

                        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
                        • DilixoD
                          Dilixo Membre VEAF @Zip
                          dernière édition par

                          @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
                          • MagicbraM
                            Magicbra Membre du bureau
                            dernière édition par

                            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
                            • TrobT
                              Trob
                              dernière édition par

                              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
                              • Premier message
                                Dernier message