Forum Linux.général "load average" et dimensionnement d'un serveur

Posté par  .
Étiquettes : aucune
3
14
oct.
2009
J'administre un serveur Linux sur lequel des traitements de type "batch" sont effectués à intervalles réguliers. En fonction du traitement, l'opération prend entre 1h et 4h. Les contraintes de temps de traitement ne sont pas très importantes : si jamais un batch prend plus de temps que prévu et déborde sur le batch suivant ce n'est pas dramatique. Ce serveur ne sert grosso-modo qu'à cela, sa charge oscile donc entre 0 (quand aucun traitement n'est en cours) et entre 4 et 10 (quand il réalise les traitements).

Je me pose la question de savoir si ce serveur est bien dimensionné pour la situation actuelle, et si non, à partir de quand devrais-je envisager de migrer l'infrastructure (plus gros CPU ou cluster).
Compte tenu de ce mode de travail séquentiel et des faibles contraintes temporelles, est-il utile de monitorer le "load average" ou cet indicateur est-il sans intérêt à partir du moment où les traitements sont réalisés dans des délais acceptables ?
  • # Dimensionnement

    Posté par  (site web personnel) . Évalué à 5.

    Tout d'abord il faut regarder ce qui compte : si tous les traitements sont réalisés dans des délais acceptables alors ton serveur est bien dimensionné.

    Ensuite il est intéressant de monitorer la charge, si tu constate qu'elle augmente il faudra prévoir des upgrade puisque les délais vont augmenter.

    La charge est une mesure des processus en attente à un instant T, ce qui veut dire qu'on mesure deux choses :
    - l'attente d'un processeur
    - l'attente d'io (swap, réseau, disque ...)

    Il faut ensuite analyser un peu plus pour savoir dans quel cas tu es.
    • [^] # Re: Dimensionnement

      Posté par  . Évalué à 2.

      > si tous les traitements sont réalisés dans des délais acceptables
      > alors ton serveur est bien dimensionné.


      OK merci, cela confirme mon analyse.

      on mesure deux choses :
      - l'attente d'un processeur
      - l'attente d'io (swap, réseau, disque ...)


      Tu connais un moyen simple d'identifier si le goulet vient du CPU (ce que je pense) ou de l'I/O (disque ou réseau car il s'agit d'une application réseau - ce n'est définitivement pas le swap) ?
      • [^] # Commentaire supprimé

        Posté par  . Évalué à 2.

        Ce commentaire a été supprimé par l’équipe de modération.

        • [^] # Re: Dimensionnement

          Posté par  . Évalué à 1.

          si lavg >= ncpu // plus de processus que le nombre de cpu (certains attendent soit pour un cpu ou des io)

          Pô vrai !
          Pentium Hyperthreading: lavg >= ncpu physique * (1 + X) !
          UltraSPARC T1: lavg >= (ncpu * nthreads_par_cpu) !
          • [^] # Re: Dimensionnement

            Posté par  . Évalué à 3.

            il n'a pas précisé comment il comptait les cpus :-)

            mais tu as raison, il faut tenir compte des possibilités de traitement parallèle des cpus.

            Sur Intel, il faut compter les cores, ce qui n'est pas lisible dans /proc/cpuinfo si on a des proc multithreadés... moi j'ai tendance a ne pas prendre en compte l'hyperthreading.
            quelqu'un sait ce que vaut l'hyperthreading du nehalem ? est-ce aussi "moche" que le pentium ?


            Autre erreur: si t'as 8 cores et qu'un seul d'entre eux est a 100%, ton appli est probablement en attente de CPU !!
            la solution serait de la ré-écrire ou de lancer plusieurs instances en parallèle, ... ou de changer d'architecture matérielle (core plus rapide mais moins nombreux)
            • [^] # Re: Dimensionnement

              Posté par  . Évalué à 2.

              peux-tu préciser ce que tu entends par "moche" pour l'hyperthreading du pentium-4 et de l'atom ?

              Merci
              • [^] # Re: Dimensionnement

                Posté par  . Évalué à 4.

                l'hyperthreading des pentium-4 ne couvre pas toutes les instructions, par exemple les calculs en flottant ne sont pas parallelisables. En pratique il y a un gain en performance par rapport a un core non hyperthreadé, mais c'est pas simple a prévoir, cela dépend beaucoup des applications utilisées. En multicore hyperthreadés, il faudrait faire des groupes d'applications pouvant tourner sur un même core en même temps sans trop se gêner et demander au scheduleur de respecter ces groupes ...
                Pour certaines applications il a fallu désactiver HT dans le bios pour qu'elles marchent bien.

                Mon point de vue (qui n'engage que moi), c'est que sur des postes utilisateurs, c'est plutot un gain sympa, mais pour du serveur le gain est marginal, d'autant que le cout du hardware intel est souvent faible par rapport au reste du projet (charge de travail pour l'intégration, licences logicielles quand il y en a). De plus quand les licences logicielles se basent sur le nombre d'unités de calcul, il vaut mieux désactiver ces "fausses" unités que sont HT.

                La game de cpu Intel suivant ces pentium-4 HT a été des vrais multicores, bien plus simples à intégrer, et avec des gains prévisibles en performance... quand je vois que les nehalem sont multicore +HT, je me demande si ce sera le même "cirque" que sur le pentium-4 coté serveur.
                • [^] # Re: Dimensionnement

                  Posté par  . Évalué à 2.

                  Merci beaucoup de ton avis, je ne savais en effet pas que les flottants n'étaient pas parallélisés. J'avais également entendu dire que les problèmes de concurrence dans l'accès au cache n'étaient pas bien gérés, ça doit dépendre en effet des applications.
                  Merci pour ton analyse et tes recommandations en tous cas !
      • [^] # Re: Dimensionnement

        Posté par  . Évalué à 1.

        Salut,
        un `top` tout bête te donne déjà pleins d'infos concernant les différents goulets d'étranglement. Par contre c'est vrai que la présentation des différents éléments est un peu indigeste au premier abord, mais ça vient vite ensuite.
      • [^] # Re: Dimensionnement

        Posté par  (site web personnel) . Évalué à 5.

        Top tout simplement.

        Si le %wa (wait) est élevé il s'agit d'io
        Sinon si le %id (idle) est faible il s'agit du cpu
        • [^] # Re: Dimensionnement

          Posté par  . Évalué à 1.

          Merci, j'utilisais mpstats mais sans bien analyser les différentes valeurs. Effectivement je dispose de toutes les infos dont j'ai besoin.
  • # sysstat pour monitorer tout en journalisant

    Posté par  (site web personnel) . Évalué à 5.

    Description-fr: sar, iostat et mpstat : outils de performance système pour Linux
    Le paquet sysstat contient les outils de performance système suivants :
    - sar : collecte d'informations et rapport d'activité système ;
    - iostat : rapport d'utilisation CPU et statistiques d'E/S des disques ;
    - mpstat : rapport de statistiques globales et par processeur ;
    - pidstat : rapport de statistiques des tâches Linux (processus) ;
    - sadf : affichage des données collectées par sar dans divers formats.
    .
    Les statistiques rapportées par sar concernent les taux de transfert
    d'E/S, la pagination, les activités des processus, les interruptions,
    l'activité réseau, l'utilisation de la mémoire et de l'espace d'échange
    (« swap »), l'utilisation du processeur, les activités du noyau, les
    statistiques TTY, etc. Les machines monoprocesseurs et multiprocesseurs
    sont pleinement gérées.

    Système - Réseau - Sécurité Open Source - Ouvert à de nouvelles opportunités

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.