アプリを動作させ続けるために必要なメモリ容量「ワーキングセットサイズ(WSS)」を見積もる方法
サーバーのメモリ容量を選択する際は「メモリはできるだけ多い方が快適」と考えがちですが、実際には必要以上のメモリを搭載しても無駄になってしまいます。Intelのフェローでコンピューティングパフォーマンスの専門家であるブレンダン・グレッグ氏は、アプリケーションが動作し続けるために必要なメモリの容量である「ワーキングセットサイズ(WSS)」の求め方を解説しています。
Working Set Size Estimation
https://www.brendangregg.com/wss.html
WSSを調べるには、現在のシステムで目的のアプリケーションを動作させた状態で「スワップファイルが作成されているか否か」を調べればOK。スワップファイルが常に作成されているようであれば、「WSSは現在のメモリ容量より大きい」ということを示し、スワップファイルがまったく作成されていない場合は、「WSSは現在のメモリ容量より小さい」ということになります。
スワップファイルの作成状況はLinuxやUNIX系OSなら「vmstat」、macOSなら「vm_stat」というコマンドで調査できます。
vmstatやvm_statを実行すると、システム状況が以下のように出力されます。出力のうち、「swap」欄の「si」がディスクからスワップインしているメモリの量、「so」がスワップアウトしている量を示しています。この出力例ではスワップファイルがまったく作成されていないため、「WSSは現在のメモリ容量より小さい」ということが分かります。
# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 7198308 10796 337144 0 0 2374 62 509 796 10 5 77 8 0
グレッグ氏が開発したパフォーマンス測定ツール郡「pmc-cloud-tools」でもWSSの手掛かりをえることができます。例えば、pmc-cloud-toolsに含まれる「pmcarch」を使えば、CPUのLLC(L3キャッシュ)の使用率を確認できます。pmcarchの実行結果は以下のように表示され、右端の「LLC」でLLCの使用率が分かります。下表のワークロードの場合、LLCのキャッシュヒット率であるLLC%がほぼ100%となっているので、ワークロードのWSSはLLCの容量以下と見積もることが可能です。
workload_A# ./pmcarch
K_CYCLES K_INSTR IPC BR_RETIRED BR_MISPRED BMR% LLCREF LLCMISS LLC%
3062544 4218774 1.38 498585136 540218 0.11 455116420 680676 99.85
3053808 4217232 1.38 499144330 524938 0.11 454770567 667970 99.85
3132681 4259505 1.36 515882929 680336 0.13 457656727 980983 99.79
[...]
さらに、pmc-cloud-toolsに含まれる「cpucache」を使えば、L1キャッシュやL2キャッシュの使用状況も確認できます。
# ./cpucache
All counter columns are x 1000
CYCLES INSTR IPC L1DREF L1DMISS L1D% L2REF L2MISS L2% LLCREF LLCMISS LLC%
13652088 5959020 0.44 1552983 12993 99.16 19437 8512 56.20 10224 4306 57.88
7074768 5836783 0.83 1521268 12965 99.15 21182 10380 51.00 13081 4213 67.79
7065207 5826542 0.82 1520193 12905 99.15 19397 8612 55.60 10319 4118 60.09
[...]
なお、グレッグ氏はほかにも様々な手法でWSSを見積もる手順を解説しています。また、Windowsの場合、Microsoftが公開している以下のドキュメントを参考にWSSを検証できます。
メモリ使用量に対する参照セットとシステム全体に対する影響 | Microsoft Learn
https://learn.microsoft.com/ja-jp/windows-hardware/test/wpt/wpa-reference-set
・関連記事
Amazon EC2上のサーバー開発と運用方法をARMORED CORE Vのインフラで学ぶ - GIGAZINE
ドラゴンクエストXは「世界は一つ」を実現するためにどのようなサーバ構成にしているのか? - GIGAZINE
サーバーマシン1台で同時接続者数1万名を実現するにはどうすればいいのかというノウハウと考え方 - GIGAZINE
非ECCメモリを使った結果データが破損したという体験談 - GIGAZINE
・関連コンテンツ
in ソフトウェア, ハードウェア, Posted by log1o_hf
You can read the machine translated English article How to estimate the amount of memory req….