GNU/Linux >> Belajar Linux >  >> Linux

2 Skrip Perl Regresi Memori untuk Linux

Selama pengujian kinerja aplikasi Anda, Anda mungkin ingin melakukan semacam pengujian regresi memori. Artikel ini berisi dua skrip regresi memori yang ditulis dalam perl yang akan menempati jumlah memori tertentu untuk jangka waktu tertentu, untuk pengujian Anda.

1. Skrip Regresi Memori Dasar

Untuk menjalankan skrip ini, lakukan hal berikut:

$ perl memtest.pl 100

Contoh di atas akan menempati 100 MB memori, dan menunggu masukan Anda – sebuah enter sederhana akan menghentikan skrip dan melepaskan memori. Dengan cara ini Anda dapat membiarkan skrip ini menempati jumlah memori yang Anda perlukan selama yang Anda butuhkan.

Argumen pertama diambil sebagai jumlah memori yang akan digunakan ( dalam MB ).

Catatan: Jangan jalankan skrip ini pada sistem kritis apa pun. Hati-hati saat menjalankan skrip ini. Jangan memberikan nilai memori yang besar untuk skrip ini. Jika jumlah memori yang diberikan sangat besar atau tidak tersedia, sistem Anda mungkin hang.

Lakukan 'vi memtest.pl' dan salin/tempel kode perl berikut untuk membuat file ini.

# 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. Skrip Regresi Memori Tingkat Lanjut

Untuk menjalankan skrip ini, lakukan hal berikut:

$ perl memtest-adv.pl 250

(or)

$ perl memtest-adv.pl 25%

Memtest-adv.pl ini bekerja dengan cara yang sama seperti skrip dasar, tetapi Anda juga dapat menentukan persentase sebagai input. Ketika sistem Anda memiliki total 2GB memori fisik, Anda dapat menentukan 25%, yang akan menempati 500MB memori untuk pengujian.

Argumen pertama dapat berupa jumlah memori dalam MB atau persentase memori yang akan digunakan, di mana persentase mewakili persentase terhadap total memori utama yang tersedia.

Catatan: Skrip Perl ini menempati kira-kira jumlah memori yang diberikan. Pada sistem yang kami uji, butuh maksimal 5MB lebih. Jadi, jangan gunakan ini pada sistem kritis apa pun. Gunakan skrip ini hanya pada sistem pengujian, karena sistem dapat hang.

Lakukan ‘vi memtest-adv.pl’ dan salin/tempel kode perl berikut untuk membuat file ini.

# 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. Bagaimana menjalankan perintah bash Linux dalam skrip PERL?

  2. Gunakan Ekstensi .sh Atau .bash Untuk Skrip Bash?

  3. Linux – Aplikasi Tangkapan Layar Untuk Rhel6.5?

  1. Cara memeriksa ukuran heap untuk suatu proses di Linux

  2. Skrip transliterasi untuk shell linux

  3. Memori tidak aktif Linux

  1. Penggunaan Memori Linux

  2. Linux – Batasi Penggunaan Memori Untuk Proses Linux Tunggal?

  3. Apa yang diperlukan agar layanan linux didukung oleh chkconfig?