Durante las pruebas de rendimiento de su aplicación, es posible que desee realizar algún tipo de prueba de regresión de memoria. Este artículo contiene dos scripts de regresión de memoria que están escritos en Perl y que ocuparán una cantidad específica de memoria durante un cierto período de tiempo, para su prueba.
1. Script básico de regresión de memoria
Para ejecutar este script, haga lo siguiente:
$ perl memtest.pl 100
El ejemplo anterior ocupará 100 MB de memoria y espera su entrada:una simple entrada finalizará el script y liberará la memoria. De esta manera, puede dejar que este script ocupe la cantidad de memoria que necesita durante el tiempo que necesite.
El primer argumento se toma como la cantidad de memoria que se ocupará (en MB).
Ejecute 'vi memtest.pl' y copie/pegue el siguiente código perl para crear este archivo.
# store and validate the command line parameter $mb = $ARGV[0]; unless ( defined $mb and $mb =~ /^\d+$/ and $mb >= 1) { die "Usage: $0 <occupy MB>\nEx: $0 100 - occupies 100 MB memory\n" } # convert it to bytes. $b = $mb * 1024 * 1024; # open in-memory file, and seek to size specified to get memory from OS. open MEM, '>', \$memfile; seek MEM, $b - 1, 0; print MEM 'A'; close MEM; printf "$mb MB memory is occupied, press ENTER to release: "; <STDIN>; # till here the memory is occupied by this program. undef $memfile; printf "Memory released";
2. Script de regresión de memoria avanzada
Para ejecutar este script, haga lo siguiente:
$ perl memtest-adv.pl 250 (or) $ perl memtest-adv.pl 25%
Este memtest-adv.pl funciona de la misma manera que un script básico, pero también puede especificar un porcentaje como entrada. Cuando su sistema tenga un total de 2 GB de memoria física, puede especificar el 25 %, que ocupará 500 MB de memoria para la prueba.
El primer argumento puede ser la cantidad de memoria en MB o el porcentaje de memoria que se ocupará, donde porcentaje representa el porcentaje contra la memoria principal total disponible.
Ejecute 'vi memtest-adv.pl' y copie y pegue el siguiente código perl para crear este archivo.
# calculate memory to be occupied from percentage given sub find_memto_occupy { $pc = $_[0]; die "Wrong percentage given $pc\n" if ($pc > 100); open MEMINFO, '<', '/proc/meminfo' or die "Unable to open /proc/meminfo to find available memory\n"; my $mem = <MEMINFO>; if ( $mem =~ /^MemTotal:\s+(\d+)\s.*$/ ) { $mem = $1; } else { die "Unable to find the available memory\n"; } $mem = ( $mem / 100 ) * $pc; return int($mem / 1024); } # main script { $num = $ARGV[0]; unless ( defined $num and $num =~ /^\d+%?$/ and $num >= 1) { die "Usage: $0 <occupy MB>\nEx: $0 100 - occupies 100 MB memory\n" } if ( $num =~ /^(\d+)%$/ ) { # convert percentage to bytes. $pc = $1; $mb = find_memto_occupy($pc); } else { $mb = $num; } $b = $mb * 1024 * 1024; open MEM, '>', \$memfile; seek MEM, $b - 1, 0; print MEM chr(0); close MEM; print "$mb MB memory is occupied, press ENTER to release: "; <STDIN>; undef $memfile; print "Memory released"; }