メモリテストメモ

使えるねっとVPSシルバーによると使用メモリは256M、最大メモリは512Mとなっています。

ここで稼動している商品メタ検索であるプロキオン通販案内通販商品ナビ・Flashバージョンでも検索ヒット数の上限を十分にを考慮しておかないと、メモリ上限値に引っ掛かる可能性があります。

説明では最大メモリは512Mになっているが、実際はどこまで使えるのだろうか?
早速メモリ上限値に達したらどうなるか実験してみました。

テストプログラムはみかログさんにある計算プログラム(100万要素で0.4秒くらい.1000万要素にしたらスワップが入ってしまい...)を改造して実験しました。

#!/usr/bin/perl
use strict;
use Time::HiRes;

my @data = map { rand(10) } (1..1000000);

my $t0 = [Time::HiRes::gettimeofday];
my $sum = 0;
foreach my $data (@data) {
    $sum += $data;
}
print $sum, "\n";

print Time::HiRes::tv_interval($t0), " Second\n";

まずは100万要素で実行!

-bash-3.1$ ./sumtest.pl
4997783.51318483
0.253154 Second

Tasks:  62 total,   2 running,  60 sleeping,   0 stopped,   0 zombie
Cpu(s): 11.8% us,  0.5% sy,  0.0% ni, 87.7% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    524288k total,   327220k used,   197068k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND              
30477 ode       25   0  172m 148m 1728 R   98 29.1   0:03.37 sumtest.pl           

172Mのメモリを使用しています。残りは197Mあります。
実行速度も0.25秒なので悪くないですね。
これなら200万要素でもたぶん大丈夫でしょう。

-bash-3.1$ ./sumtest.pl
10003166.9464646
0.506678 Second

Tasks:  62 total,   2 running,  60 sleeping,   0 stopped,   0 zombie
Cpu(s): 12.3% us,  0.0% sy,  0.0% ni, 87.6% id,  0.0% wa,  0.0% hi,  0.0% si
Mem:    524288k total,   477204k used,    47084k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND              
11351 ode       25   0  318m 295m 1728 R   99 57.6   0:06.35 sumtest.pl           

318M使用、残りは47Mです。
スワップサイズが0なので、300万要素では確実にメモリ不足になりそうです。
では実行します。

-bash-3.1$ ./sumtest.pl
Out of memory!
終了しました

予想通りメモリ不足で強制終了しました。

使えるねっとVPSシルバーでは最大メモリの512Mまで使用できることが確認できました。