testlimitの使用例について記載します。
メモリ負荷をかけた状態でOS、ミドルウェア、開発アプリの動作を見るために使用することが多いと思います。
はじめにサーバのメモリについて、調べます。
管理ツールからシステム情報を起動します。
物理メモリ8GB。合計仮想メモリ20GBなので、12GBのページファイル(ディスクメモリ)が利用できる設定になっています。
仕様上、合計仮想メモリはメモリ+ディスクになります。
テストの設計
メモリ負荷の状況を考えます。
メモリ使用率80%状況下での開発アプリケーションの処理時間とした場合、メモリ全体が80%の使用状況なのか、物理メモリが75%使用状況を作りたいのかで環境は異なります。
負荷コマンド
Testlimitはコマンドラインツールです。testlimit.exe(32bit OS)かtestlimit64.exe(64bit OS)を実行することで起動します。
コマンドで負荷をかける
20GBの80%なので、16GMをMBに変換して実施します。
testlomit64.exe -d -c 16384
運良く1回でうまくいきました。testlimit実施前のメモリ使用量は無視したため偶然です。
実際には容量を変えて何回か繰り返したり、コマンドプロンプトをもう一つ起動して、多重プロセスでtestlimitを実施して調整するケースが多いので、サーバ台数が多いと時間がかかります。また、物理メモリからスワップメモリに書き込む待ち時間は、OSが操作を受け付けなくなり数分は緊張します。特にリモートデスクトップしか接続方法がないときは不安になります。本環境でおおよそ3分くらい固まっていました。
ただこの方法は現実的な負荷環境を作成していると思います。
次にスワップメモリを100%使用させてから、物理メモリを80%にする方法について記載します。
スワップメモリは12GBなので以下のコマンドを実施します。
testlimit64.exe -m -c 12288
次にメモリに負荷をかけます。
8GBの80%は6.4GBになります。1.2GBを使用しているので、6.4-1.2で5.2GBの負荷をかけます。
testlimit64.exe -d -c 5324
この方法では負荷環境作成が速く、OSがロックされる時間もありません。但し、先の方法と比較するとスワップメモリの差が1GB多く使用しています。それでも使えない負荷環境ではないと思います。
Testlimitですが、容量(MB)を指定しないと無限になるようなので、OSが落ちるかプログラムが落ちるか確認してみました。
Testlimitが落ちますので、安心して使用できると思います。
同時にCPUも高負荷にしたケースが多いと思いますが、 Testlimitから先に実施してください。Testlimit実行時にCPUがそれなりに使用されますので、CPUSTRESやCPU負荷用のバッチファイルが実行されていると危険です。