GNU/Linux >> Linux の 問題 >  >> Linux

2 Linux 用メモリ回帰 Perl スクリプト

アプリケーションのパフォーマンス テスト中に、ある種のメモリ回帰テストを実行したい場合があります。この記事には、perl で記述された 2 つのメモリ回帰スクリプトが含まれています。これらは、テストのために、一定時間、特定量のメモリを占有します。

1.基本的なメモリ回帰スクリプト

このスクリプトを実行するには、次の手順を実行します:

$ perl memtest.pl 100

上記の例は 100 MB のメモリを占有し、入力を待ちます。単純な入力でスクリプトが終了し、メモリが解放されます。このようにして、必要なだけの時間、必要な量のメモリをこのスクリプトに占有させることができます。

最初の引数は、占有するメモリの量 (MB 単位) として取得されます。

注: 重要なシステムではこのスクリプトを実行しないでください。このスクリプトの実行中は注意してください。このスクリプトに大きなメモリ値を与えないでください。与えられたメモリの量が膨大であるか利用できない場合、システムがハングする可能性があります。

「vi memtest.pl」を実行し、次の 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.高度なメモリ回帰スクリプト

このスクリプトを実行するには、次の手順を実行します:

$ perl memtest-adv.pl 250

(or)

$ perl memtest-adv.pl 25%

この memtest-adv.pl は基本的なスクリプトと同じように機能しますが、パーセンテージを入力として指定することもできます。システムに合計 2GB の物理メモリがある場合、25% を指定できます。これは、テスト用に 500MB のメモリを占有します。

最初の引数は、MB 単位のメモリ量または占有されるメモリのパーセンテージのいずれかです。パーセンテージは、使用可能なプライマリ メモリの合計に対するパーセンテージを表します。

注: この Perl スクリプトは、指定された量のメモリをほぼ占有します。私たちがテストしたシステムでは、最大で 5MB 以上かかりました。したがって、重要なシステムではこれを使用しないでください。システムがハングする可能性があるため、このスクリプトはテスト システムでのみ使用してください。

「vi memtest-adv.pl」を実行し、次の 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";
}

Linux
  1. Linuxのメモリ使用量

  2. Linux – Rhel6.5のスクリーンキャプチャアプリケーション?

  3. 10 Linux システム初期化スクリプトの insserv コマンドの例

  1. Linux シェル スクリプトまたは変数の日付と時刻の書式設定

  2. Linux でプロセスのヒープ サイズを確認する方法

  3. データベース バックアップ用の Linux シェル スクリプト

  1. Linux シェルの音訳スクリプト

  2. 単一の Linux プロセスのメモリ使用量を制限する

  3. Linux サービスを chkconfig でサポートするには何が必要ですか?