Forum Linux.général CPU usage per user ...

Posté par  (site web personnel) .
Étiquettes : aucune
0
7
jan.
2008

Bonjour à tous,

Guru Linux dans ma société, je me suis retrouvé comme un con devant une question toute bête d'un utilisateur :

Quel est l'équivalant de `prstat -t` (sous Solaris) pour Linux ?

Pour info prstat est une sorte de "top" pour Solaris et l'option "-t" permet de faire l'affichage par user.

Grossomodo comment agréger par user les infos de la commande top ?
  • # htop

    Posté par  . Évalué à 1.

    (reponse un peu à coté de la plaque)
    La commande htop, en plus d'etre jolie avec tout plein de couleurs, permet de faire un "sort by user".
    • [^] # Re: htop

      Posté par  . Évalué à 1.

      Sinon, avec top, en jouant avec les touches < et >, on doit également pouvoir retrouver ce comportement.
    • [^] # Re: htop

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

      Merci castorpilot,

      Je ne connaissais pas htop, il est un peu plus sympa que top, c'est vrai.
      Malheureusement, il ne me sort pas d'utilisation agrégée.

      http://la-rache.com

    • [^] # Re: htop

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

      Voici la sortie de prstat -t :

      NPROC USERNAME SIZE RSS MEMORY TIME CPU
      184 root 901M 491M 0.8% 5:23.23 0.3%
      5 sysdba 11M 9000K 0.0% 0:00.02 0.0%
      10 oragestp 1666M 1322M 2.4% 0:01.35 0.0%
      21 oraindi 5625M 5128M 9.4% 0:19.03 0.0%
      2 sybportf 9920K 9360K 0.0% 0:00.00 0.0%
      13 orawpepe 2408M 1898M 3.5% 0:02.14 0.0%
      13 orarfp 2285M 1811M 3.3% 0:00.46 0.0%
      9 oramatpe 1197M 877M 1.6% 0:01.51 0.0%
      16 orasib 3607M 2933M 5.4% 0:00.44 0.0%
      18 oraintra 1886M 1488M 2.7% 0:00.55 0.0%
      9 oraharpe 1197M 876M 1.6% 0:00.46 0.0%
      20 oratrane 2903M 2454M 4.5% 0:03.44 0.0%
      13 oraclic 1886M 1412M 2.6% 0:39.36 0.0%
      9 oraevrep 2940M 2745M 5.0% 0:00.27 0.0%
      24 orasiban 4074M 3119M 5.7% 0:01.42 0.0%
      9 oracegct 1206M 878M 1.6% 0:00.48 0.0%
      9 oraclamd 1277M 1071M 2.0% 0:00.24 0.0%
      7 sybidee 15G 15G 29% 0:57.20 0.0%
      1 daemon 2584K 1872K 0.0% 0:00.00 0.0%
      12 oraacent 3162M 2362M 4.3% 0:00.48 0.0%
      10 oraprosl 1858M 1635M 3.0% 0:01.40 0.0%
      10 orabanto 800M 704M 1.3% 0:01.33 0.0%
      14 orabec 2779M 1836M 3.4% 0:20.30 0.0%
      10 orabanfi 768M 672M 1.2% 0:02.51 0.0%
      10 oraagis 1120M 775M 1.4% 1:41.26 0.0%
      11 oracaam 2777M 2412M 4.4% 0:00.50 0.0%

      Cela me permet de trouver immédiatement le user consomateur et de grapher ...

      http://la-rache.com

      • [^] # Re: htop

        Posté par  . Évalué à 1.

        Au temps pour moi, j'avais mal compris le sens de "agréger". En effet, bien pratique ce prstat ...
        Je ne vois pas d'autre moyen qu'une ligne du genre

        ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3} END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f%\t%.2f%\n",num[user], user, $cpu[user], mem[user]) }'

        Si quelqu'un a une meilleure idée (sans script) .
        • [^] # Re: htop

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

          Celle là me convient (tant qu'un copier/coller est possible).

          Merci

          http://la-rache.com

          • [^] # Re: htop

            Posté par  . Évalué à 2.

            Ok, je corrige juste une faute de frappe (un $ en trop)

            ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3} END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f%\t%.2f%\n",num[user], user, cpu[user], mem[user]) }'
      • [^] # Re: htop

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

        Yop,

        je concept m'intéressait aussi j'ai essayé de coller au mieux
        de la sortie de ton exemple:
        http://www.plessis.info/perl/prstat.pl
  • # top

    Posté par  . Évalué à 1.

    Une fois la commande `top` lancee, tu peux afficher que les processus de certains utilisateurs en appuyant sur la touche `u` puis en entrant un nom d'utilisateur. (ne rien mettre comme nom pour revenir a l'affichage normal).

    Ensuite la touche `P` majuscule pour classer selon la consommation CPU ou `M` majuscule pour classer selon la consommation memoire et `R` majuscule pour inverser le classement.

    En esperant que cela reponde a ton probleme.
    • [^] # Re: top

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

      Merci jiyuu,

      En fait je suis à la recherche des informations de consomation cpu et mémoire agrégée par utilisateur.

      ex:
      user cpu mem
      root 25% 200M
      www 15% 80M
      etc ...

      Et non la liste de leurs process.

      Le script de castorpilot le fait :
      ps -eo user,pcpu,pmem | tail -n +2 | awk '{num[$1]++; cpu[$1] += $2; mem[$1] += $3} END{printf("NPROC\tUSER\tCPU\tMEM\n"); for (user in cpu) printf("%d\t%s\t%.2f%\t%.2f%\n",num[user], user, cpu[user], mem[user]) }'

      Si un top -qquechose ou une autre commande le faisait ça serait bien utile ...

      http://la-rache.com

  • # Y'a aussi...

    Posté par  . Évalué à 3.

    ...la commande 'w' qui va peut-être t'aider ?
    • [^] # Re: Y'a aussi...

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

      La commande w ne m'indique que la consomation des users ayant un tty et non tout ceux des démons et autres proccess.

      Mais dans l'idée c'est ce genre d'affichage que je recherche ...

      http://la-rache.com

Suivre le flux des commentaires

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