Ads 468x60px

martes, 14 de mayo de 2013

Script Perl Para Monitorear Consumo Real De Ram

Script Perl Para Monitorear Consumo Real De Ram
Lo siguiente es un script Perl que desarrolle para conocer el consumo de memoria ram fisica real de un proceso o aplicacion que esta ejecutandose. Para los que no lo sepan (Y lo que ya lo sabemos lol) el comando 'ps' no ofrece mucha ayuda sobre esto, porque solo muestra las paginas reservadas en memoria virtual para un proceso, pero no especifica cuanta ram real dicho proceso esta utilizando. (Y no siempre utiliza todas las paginas que reserva en memoria virtual).


 El script esta hecho en Perl, y es el siguiente para quien guste usarlo, copiarlo, mejorarlo, loquesea:

#!/usr/bin/perl -w

    use strict;

    require Linux::Smaps;
    my $numero = 1024;

    print STDOUT "Inserta el PID del proceso que quieres Analizar ::  ";

    chomp (my $pid = );

         my $map=Linux::Smaps->new($pid);

      my @vmas=$map->vmas;

      my $a=$map->private_dirty;

      my $b = $map->shared_dirty;

      my $c = $map->rss;

     print STDOUT "-------------- M A P E O   D E   M E M O R I A -----------\n\n";

    print STDOUT "=============================

=============================\n";
    print "Memoria Privada :: " . $a . " KB " . "\n";

    print STDOUT "Memoria Compartida :: " . $b . " KB" . "\n";

    print STDOUT "Memoria Virtual Reservada  " . ($c/$numero) . "  MB" . "\n";

    print STDOUT "-----------------------------
------------------------------\n";

    my @todo = ( $a, $b );

    my $total = 0;
         for ( my $contador = 0; $contador
          $total = ($todo[$contador]+$total);
        };

    print STDOUT "El consumo total de ram es ::         " . ($total/$numero) .  " MB" . "\n";
    print STDOUT "-----------------------------
---------------------------------\n";
        1; 
 
 Como el script requiere de un modulo (Linux::Smaps) para encontrar estos valores, pueden descargarse el modulo usando la shell de CPAN o pueden ir a la web de CPAN y buscarlo o si quieren, he creado un script pero en sh (compatible con bash y ksh que son Bourne shells) el script inicialmente busca si existe el modulo Perl en el path principal, sino lo encuentra, lo descarga de la web de CPAN (necesitan internet) lo descomprime, lo instala y luego borra las carpetas creadas para ejercer esto. El script es el siguiente:

    #!/bin/sh
    # Buscar el modulo smaps de perl, sino esta descargarlo, descomprimir he instalar, necesitas tener acceso a Internet.


        carpeta="$HOME/Temporal"

       if [ $UID -ne 0 ]; then

      echo "Debes ejecutarme como Root!!";

      exit 1;

    fi

      perl -MLinux::Smaps -e  print 2>/dev/null

       if [ "$?" != '0' ]; then

      mkdir $carpeta && cd $carpeta && wget http://search.cpan.org/CPAN/authors/id/O/OP/OPI/Linux-Smaps-0.09.tar.gz && tar xvzf Linux-Smaps-0.09.tar.gz

      cd $carpeta/Linux-Smaps*; perl Makefile.PL && make && make install

           if [ "$?" == "0" ]; then
          echo "Instalacion del Modulo realizada correctamente";
          cd $HOME && rm -rf $carpeta;
        fi
    fi
      exit 0;
 
Captura de pantalla donde ejecuto mi script:
 
Script Perl Para Monitorear Consumo Real De Ram
 

No hay comentarios:

Publicar un comentario