HP-UX General
1821587 メンバー
3533 オンライン
109633 解決策
新規ポスト

メモリ使用率を高くするには

 
O_Y
時折のコントリビューター

メモリ使用率を高くするには

いつもお世話になっております。

障害の再現試験のため故意にメモリ使用率が高い状態を作り出したいのですが、そのための良い方法をご存知の方がいらっしゃいましたらご教授ください。

当方にC言語の知識がないため、故意にメモリリークを発生させるLMを作成するといった方法ではなく、既存のコマンド等で実現できれば非常にありがたいです。

以上、よろしくお願いいたします。

2件の返信2
nadachi
レギュラーアドバイザー

メモリ使用率を高くするには

プログラムを作らずコマンドのみで、というのがちょっと厄介ですが、shell scriptまでなら認める、とおっしゃるなら。例えば、

#!/usr/bin/sh

while true

do

echo $RANDOM

done | sort -y >/dev/null

という内容のshell script, xxx.sh を作り、

実行させると、while文で乱数の列を作り、パイプで"sort"コマンドに渡すことになります。"sort"コマンドは on-memory でソートを行おうとしてだんだんサイズが大きくなっていきます。最後はシステムで決められた"プロセスデータの上限" に行き着いて、メモリが割付できません、のエラーで停止してしまうでしょうが。出力はいらないので /dev/nullにリダイレクトしておきます。

 こういうのを複数、連続して走らせるようにさらにshell scriptを作れば、”メモリ使用率が高い状況" (ただしユーザーが使うメモリであって、カーネルが使うメモリではない) は擬似的に作れるか、と思いますが、こんなものではお役に立ちませんか。

 sort の -y オプションは、

"引き数なしで -y を指定すると、通常、最大のメモリから実行が開始されます。"

とあります。

nadachi
レギュラーアドバイザー

メモリ使用率を高くするには

一応、C言語を使ってよいなら。

#include

#include

main()

{

unsigned char *ptr;

while (1) {

ptr = malloc(4096);

if (ptr == (unsigned char *)NULL) break;

*ptr = 1;

}

/* memory is fully allocated for this process.*/

sleep(10);

exit(0);

}

みたいなプログラムを作って、多重に、繰り返し走らせれば "メモリ使用率が高い状態" を作れます。

これも参考まで。