system management
1753500 メンバー
4470 オンライン
108794 解決策
新規ポスト

あるプロセス群が起動できる数の目安を算出する方法

 
W_Ha
時折のアドバイザー

あるプロセス群が起動できる数の目安を算出する方法

現在、ある試験環境で、あるプロセスが複数起動しているのですが、

そのプロセスの現在の常駐メモリ使用量(RSS?)の平均値を調べておいて、

それを元に(1)この環境であと幾つくらい、同じプロセスを起動させられるか

というのを算出しようと考えています。

また(2)そのプロセスを目標数起動するのに必要なメモリ(もしくはリソース)を

幾ら追加しないといけない?という目安を算出したいと考えています。

ですが、常駐メモリ使用量(RSS?)は、プロセスが沢山起動すればする程、

常駐サイズもそれに連動して小さくなると思うので、いくら現在の

値を算出しても、目安にはならないとかもしれないとも思っています。

(1)(2)共に、レスポンス的にも通常(現在)の状態で使用できる

ようにしたいと考えています(レスポンスが悪すぎるという事態は

避けたいという意味です)。

このような要件の場合、常駐メモリ使用量(RSS?)だけを目安にするのでは、

不足な気がするのですが、なにかセオリーのようなものはあるのでしょうか?

目安にするべき数値などは他にもあるのでしょうか?

ご意見頂けると助かります。

よろしくお願いします。

5件の返信5
hazelwood
信頼あるコントリビューター

あるプロセス群が起動できる数の目安を算出する方法

大雑把に、単独で起動させたときのRSSを求めて、それをN倍するのではだめですか?

RSSはメモリ不足(ページアウト)が発生しないかぎり、小さくはならないので、上記でおおよその見積もりには使えると思うのですが。

厳密にやろうとすると、各regionをタイプごとに分類して、タイプに合わせて集計しなければなりませんが、それをやっても計測時と実稼動では誤差が出ると思うので。
masaakio65
レギュラーアドバイザー

あるプロセス群が起動できる数の目安を算出する方法

一個ずつそのプロセスをあげてみて、どのくらいフリーメモリーが減るか出してみたらどうですかね?

topかvmstatでフリーをみれば、一個一個のRSSを見るよりマクロ的にみれると思いますが。

glanceとかで厳密にプロセスの使用しているメモリー量をだしてもいいんですが、上記の方が簡単じゃない?

W_Ha
時折のアドバイザー

あるプロセス群が起動できる数の目安を算出する方法

hazelwoodさん、masaakio65さん

ご意見ありがとうございます。

残念ながら、24時間連続稼動の試験を行っていて、

多数稼動している全てのプロセスを停止させること

は到底出来ない状況です(その条件にムリがある

かもしれませんが…)。

まぁ、大雑把でも良いけど、ある程度の目安になる

ものを出したいと思っています。現状の多数の

プロセスが起動している状況で計測したRSSでも、

目安になるものか?と疑問に感じています。

oops
貴重なコントリビューター

あるプロセス群が起動できる数の目安を算出する方法

glance はお持ちですか?

glance は、各プロセスの Memory Region が見れます。プロセスの仮想アドレス空間には Shared と Private があり、例えば、テキスト(コード)は Shared で、データやスタックはプライベートになります。他に共有メモリや共有ライブラリのテキストコードなどは、その名の通り Shared です。

同じプロセスであれば、共有している部分は何個あげても増えないでしょうし、逆にプライベート部分はあげた分だけ増えますよね?

一度 glance で常駐しているプロセスの Memory Region をご覧になっては如何ですか?それで大体の試算はできるのではないでしょうか?’

hazelwood
信頼あるコントリビューター

あるプロセス群が起動できる数の目安を算出する方法

現状を変更しない前提で測定するとなると、以下の方法が考えられます。

もし、glanceがあるなら、/var/opt/perf/parmファイルで、目的のプロセスだけを含むグループ(Application)を作って、そのグループのRSS合計を測定し、現在動作しているプロセス数で割って平均を出す。

glanceが無いなら、上記の処理を行うプログラムを作って実行する。(pstat(2)を利用。「HP-UX一般」の方で質問されている共有ライブラリの使用メモリの調べ方が参考になると思います。)

結果の信頼度ですが、各プロセスが過去に獲得した物理メモリをどれだけ手放しているかに依存します。大体、以下の3パターンになるのではないでしょうか?

1. メモリが潤沢にあり、これまでメモリ不足を起こしていなければ、測定結果の信頼度は高い。(=開放したメモリはない)

2. 過去にメモリ不足を起こしたことがあるが、今はメモリ不測ではないのであれば、信頼度は少し落ちる。(=最低限動作に必要なメモリは確保したまま。)

3. 今、メモリ不足の状態にある場合、測定結果は信頼が置けない。(=メモリの取り合いになっているので、RSSの値は必要なメモリ量以下)