Windowsで負荷テスト（メモリ負荷）

Testlimit v5.24
https://docs.microsoft.com/ja-jp/sysinternals/downloads/testlimit
~~~test:コマンドラインツール
Microsoft Windows [Version 10.0.19044.1766]
(c) Microsoft Corporation. All rights reserved.

C:\Users\hoge\Downloads\Testlimit>Testlimit64.exe
~~~
コマンドラインツールなので、パラメータを調べます。
~~~text:コマンド プロンプト
Testlimit v5.24 - test Windows limits
Copyright (C) 2012-2015 Mark Russinovich
Sysinternals - www.sysinternals.com

Process ID: 14328

usage: testlimit [[-h [-u]] | [-p [-n]] | [-t [-n [KB]]] | [-u [-i]] | [-g [object size]] | [-a|-d|-l|-m|-r|-s|-v [MB]] | [-w]] [-c [count]] [-e [seconds]]
  -a       Leak Address Windowing Extensions (AWE) memory in
           specified MBs (default is 1).
  -c       Count of number of objects to allocate (default is as many as
           possible). This must be the last option specified.
  -d       Leak and touch memory in specified MBs (default is 1).
  -e       Seconds elapsed between allocations (default is 0).
  -g       Create GDI handles of specified size (default 1 byte).
           Specify a size of 0 to cause GDI object exhaustion.
  -h       Create handles. Specify -u to also allocate file objects.
  -i       Exhaust USER desktop heap.
  -l       Allocate the specified amount of large pages (rounded to large
           size multiple.
  -m       Leak memory in specified MBs (default is 1).
  -p       Create processes - add -n to set min working set. Add -n to
           set min working set of processes to smallest.
  -r       Reserve memory in specified MBs (default is 1).
  -s       Leak shared memory in specified MBs (default is 1).
  -t       Create threads - add -n to specify minimum stack reserve (in KB).
  -u       Create USER handles to menus.
  -v       VirtualLock memory in specified MBs (default is 1).
  -w       Reset working set minimum to highest possible value.
~~~
コピーライトのマーク・ルシノビッチさんは、Windows Sysinternals を作った方ですね。
~~~text:HELP
-a      指定されたMBのリークアドレスウィンドウ化拡張（AWE）メモリ（デフォルトは1）。
-c      割り当てるオブジェクトの数（デフォルトは可能な限り多く）。これは、指定された最後のオプションである必要があります。
-d      指定されたMBのリークおよびタッチメモリ（​​デフォルトは1）。
-e      割り当ての間に経過した秒数（デフォルトは0）。
-g      指定されたサイズ（デフォルトは1バイト）のGDIハンドルを作成します。サイズを0に指定すると、GDIオブジェクトが使い果たされます。
-h      ハンドルを作成します。 -uを指定して、ファイルオブジェクトも割り当てます。
-i      USERデスクトップヒープを使い果たします。
-l      指定された量の大きなページを割り当てます（大きなサイズの倍数に丸められます）。
-m      指定されたMBのリークメモリ（デフォルトは1）。
-p      プロセスを作成します-最小ワーキングセットを設定するために-nを追加します。 -nを追加して、プロセスの最小ワーキングセットを最小に設定します。
-r      指定されたMBでメモリを予約します（デフォルトは1）。
-s      指定されたMBの共有メモリをリークします（デフォルトは1）。
-t      スレッドを作成します-最小スタック予約（KB単位）を指定するには、-nを追加します。
-u      メニューへのUSERハンドルを作成します。
-v      指定されたMBのVirtualLockメモリ（デフォルトは1）。
-w      ワーキングセットの最小値を可能な限り高い値にリセットします。
~~~
とりあえずメモリ負荷を高くしてストレスを与えたいのですが・・・
~~~text:コマンド プロンプト
C:\Users\Hoge\Downloads\Testlimit>Testlimit64.exe -u -i

Testlimit v5.24 - test Windows limits
Copyright (C) 2012-2015 Mark Russinovich
Sysinternals - www.sysinternals.com

Process ID: 26576

Exhausting desktop heap...
Allocated 18303 KB of desktop heap. Lasterror: 0
この操作を正しく終了しました。
^C
~~~
Ctrl+C で中断するまで動作が続くようです。
~~~text:コマンド プロンプト
C:\Users\Hoge\Downloads\Testlimit>Testlimit64.exe -g 0

Testlimit v5.24 - test Windows limits
Copyright (C) 2012-2015 Mark Russinovich
Sysinternals - www.sysinternals.com

Process ID: 21812

Creating GDI objects...
GDI handles: 4188 (94208 KB)^C
~~~
GDIハンドルを作成します、サイズを0に指定すると、GDIオブジェクトが使えるところまで作成します。

~~~text:コマンド プロンプト
C:\Users\Hoge\Downloads\Testlimit>Testlimit64.exe -d -c 3000

Testlimit v5.24 - test Windows limits
Copyright (C) 2012-2015 Mark Russinovich
Sysinternals - www.sysinternals.com

Process ID: 24692

Leaking private bytes with touch (MB)...
Leaked 3000 MB of private memory (3000 MB total leaked). Lasterror: 0
この操作を正しく終了しました。
^C
~~~
1MBメモリを3000 (1MB×3000) 作成します。3GBです。
**-d 3000 -c1** (3000MB×1)
としても 3GB ですが、大きなメモリを一度に確保すると OS に監視されているですぐに仮想メモリに退避されます。

便利なツールですが、パラメータが多いため目的の負荷が得られるように試行錯誤が必要です。