GNU/Linux >> LINUX-Kenntnisse >  >> Linux

2 Perl-Skripte zur Speicherregression für Linux

Während des Leistungstests Ihrer Anwendung möchten Sie möglicherweise eine Art Speicherregressionstest durchführen. Dieser Artikel enthält zwei in Perl geschriebene Speicherregressionsskripte, die zu Testzwecken eine bestimmte Menge an Speicher für eine bestimmte Zeit belegen.

1. Grundlegendes Speicherregressionsskript

Gehen Sie wie folgt vor, um dieses Skript auszuführen:

$ perl memtest.pl 100

Das obige Beispiel belegt 100 MB Speicher und wartet auf Ihre Eingabe – eine einfache Eingabe beendet das Skript und gibt den Speicher frei. Auf diese Weise können Sie diesem Skript so viel Speicherplatz belegen lassen, wie Sie benötigen.

Als erstes Argument wird die Menge des zu belegenden Speichers genommen (in MB).

Hinweis: Führen Sie dieses Skript nicht auf einem kritischen System aus. Seien Sie vorsichtig, während Sie dieses Skript ausführen. Geben Sie diesem Skript keinen großen Speicherwert. Wenn die angegebene Speichermenge sehr groß oder nicht verfügbar ist, hängt sich Ihr System möglicherweise auf.

Führen Sie „vi memtest.pl“ aus und kopieren/fügen Sie den folgenden Perl-Code ein, um diese Datei zu erstellen.

# 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. Erweitertes Speicherregressionsskript

Gehen Sie wie folgt vor, um dieses Skript auszuführen:

$ perl memtest-adv.pl 250

(or)

$ perl memtest-adv.pl 25%

Dieses memtest-adv.pl funktioniert genauso wie ein einfaches Skript, aber Sie können auch einen Prozentsatz als Eingabe angeben. Wenn Ihr System über insgesamt 2 GB physischen Arbeitsspeicher verfügt, können Sie 25 % angeben, wodurch 500 MB Arbeitsspeicher für Testzwecke belegt werden.

Das erste Argument kann entweder die Speichermenge in MB oder der Prozentsatz des zu belegenden Speichers sein, wobei der Prozentsatz den Prozentsatz des gesamten verfügbaren Primärspeichers darstellt.

Hinweis: Dieses Perl-Skript belegt ungefähr den angegebenen Speicherplatz. Auf dem von uns getesteten System dauerte es maximal 5 MB mehr. Verwenden Sie dies also nicht auf einem kritischen System. Verwenden Sie dieses Skript nur auf einem Testsystem, da das System hängen bleiben könnte.

Führen Sie „vi memtest-adv.pl“ aus und kopieren/fügen Sie den folgenden Perl-Code ein, um diese Datei zu erstellen.

# 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";
}

Linux
  1. Wie führe ich Linux-Bash-Befehle in einem PERL-Skript aus?

  2. Verwenden Sie die Erweiterung .sh oder .bash für Bash-Skripte?

  3. Linux – Bildschirmaufnahmeanwendung für Rhel6.5?

  4. 10 insserv-Befehlsbeispiele für Linux-System-Init-Skripte

  5. Formatieren Sie Datum und Uhrzeit für Linux-Shell-Skript oder -Variable

Shell-Scripting für Anfänger – So schreiben Sie Bash-Scripts unter Linux

Linux – Speichernutzung für einen einzelnen Linux-Prozess begrenzen?

20 Killer-Perl-Programmiertipps für Anfänger unter UNIX / Linux OS

Top 15+ der besten Skripterstellungssoftware für Linux-Desktop

So überprüfen Sie die Heap-Größe, die jvm von Linux zugewiesen wurde

Was ist erforderlich, damit ein Linux-Dienst von chkconfig unterstützt wird?