Linuxでの、ちょっとした試験作業です。
メモリーを食い潰す試験
Linux上のメモリを食い潰した時のOS挙動を確認する試験です。
参考:メモリを食いまくるプロセスがメモリ使用量に与える影響をtopで追う (←非常に分かりやすい!)
1.1秒毎にメモリを10MBずつ消費するプログラムを用意する。
$ cat mem_eat.pl
#!/usr/bin/perl
# 1秒毎にメモリを10MB単位で消費
use strict;
use warnings;
# 空の配列を作成
my @mem_push = ();
while(1){
sleep 1;
# 配列に追加
push(@mem_push , 1 x 1024 x 1024 x 10);
}
$
2.別画面で以下の画面を表示しておく。
- top -d 1 (top画面表示中に Shiftキー + o を押下した後に、nを押下すると、メモリ使用量でソートできる)
- tail -f /var/log/messages
3.用意したスクリプトを実行する
$ perl mem_eat.pl
topコマンド画面で、徐々にこのperlプロセスがメモリを消費していく事が分かる。
OSが認識している空メモリ量によるが、スクリプトを実行してからしばらくするとスクリプトが強制終了される。
$ perl mem_eat.pl
強制終了
$
4.開いていたtopコマンド画面とmessagesログ画面を確認する。
topコマンド画面では、該当のperlプロセスが消費していたメモリが開放された事が分かる。
/var/log/messagesには、「kernel: Out of memory」メッセージが表示される。これはLinuxに実装されている「OOM Killer」によるプロセスの強制終了の結果である。
簡単に巨大ファイルを作成する
ddコマンドでnullを書き込んだ巨大ファイルを一気に作成する。
$ dd if=/dev/zero of=testfile1 bs=1M count=10
ディスクI/O試験やトラフィック測定などにも利用できる。