Během testování výkonu vaší aplikace možná budete chtít provést nějaký druh regresního testování paměti. Tento článek obsahuje dva skripty pro regresi paměti, které jsou napsány v perlu a které zaberou určité množství paměti po určitou dobu pro vaše testování.
1. Základní skript regrese paměti
Chcete-li spustit tento skript, proveďte následující:
$ perl memtest.pl 100
Výše uvedený příklad zabere 100 MB paměti a čeká na váš vstup – jednoduchý enter ukončí skript a uvolní paměť. Tímto způsobem můžete nechat tento skript zabírat množství paměti, kterou potřebujete, na tolik času, kolik potřebujete.
První argument se bere jako velikost paměti, která má být obsazena (v MB).
Poznámka: Tento skript nespouštějte na žádném kritickém systému. Buďte opatrní při spouštění tohoto skriptu. Nedávejte tomuto skriptu velkou paměťovou hodnotu. Pokud je množství dané paměti velké nebo není dostupné, váš systém se může zablokovat.
Pro vytvoření tohoto souboru proveďte „vi memtest.pl“ a zkopírujte/vložte následující kód perl.
# 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. Pokročilý skript regrese paměti
Chcete-li spustit tento skript, proveďte následující:
$ perl memtest-adv.pl 250 (or) $ perl memtest-adv.pl 25%
Tento memtest-adv.pl funguje stejným způsobem jako základní skript, ale můžete také zadat procento jako vstup. Když má váš systém celkem 2 GB fyzické paměti, můžete zadat 25 %, což zabere 500 MB paměti pro testování.
První argument může být buď množství paměti v MB nebo procento paměti, které má být obsazeno, kde procento představuje procento vzhledem k celkové dostupné primární paměti.
Poznámka: Tento skript v Perlu zabírá přibližně dané množství paměti. Na námi testovaném systému to trvalo maximálně o 5 MB více. Takže to nepoužívejte v žádném kritickém systému. Tento skript používejte pouze na testovacím systému, protože systém se může zablokovat.
Pro vytvoření tohoto souboru proveďte „vi memtest-adv.pl“ a zkopírujte/vložte následující kód perl.
# 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"; }