system management
1748179 メンバー
4081 オンライン
108758 解決策
新規ポスト

メモリ使用率を上げる方法

 
K_Ok
時折のコントリビューター

メモリ使用率を上げる方法



OS:HP-UX11.00



上記OSにて、メモリ使用率を可能な限り上げた状態で、正常にダンプが吐かれるかの検証を実施する予定でいます。

メモリ使用率を100%近くまで上げる必要があります。

但し、対象マシンは商用機である為、

Cの開発環境がインストールされておりません。(Cのmalloc関数を使用することは出来ません。)



Cプログラム以外でメモリ使用率を上げる良い方法をご教授下さい。

すみませんが、ご協力下さい。

3件の返信3
uhyo
貴重なコントリビューター

メモリ使用率を上げる方法

実機が近くにないので確認できないですが、

開発環境がないとmalloc()って使えませんでしたか?

OSにはカーネルコンパイル用にバンドルされたCコンパイラがあるので、かなり制限はありますが、ちょっとしたものなら作成できると思いますけど。

もしくはほかで作成してそのバイナリをもってくるのはNGですか? こちらもそれほど特別なライブラリを

使っていなければバイナリ互換は可能かと思います。

malloc()はたしかにメモリを確保しますが、実際には

memcpy()などでデータをセットしないと単に仮想空間上にメモリ領域を確保しただけでメモリは使われません。もし実メモリに圧迫をかけるのであれば、malloc()のあとにデータを配置すること、およびswapを使わないようにplock()などを使うといいのではないでしょうか?
nadachi
レギュラーアドバイザー

メモリ使用率を上げる方法

 uhyoさんのおっしゃるように、"開発環境"がなくてもC コンパイラは入っていたと思います。但し、-O のような最適化機能は使えませんが。

 メモリ使用率を上げるテストをするだけなら、

#include

#include

main()

{

unsigned char *ptr;

int i;

while (1) {

ptr = malloc(4096*100);

if (ptr != (unsigned char *)-1) {

for (i=0; i<100; i++) {

*ptr = 1;

ptr += 4096;

}

} else {

sleep(100);

exit(0);

}

}

}

みたいなプログラムを、例えば、"mem.c"として、

$ cc mem.c -o mem

としてコンパイルして、

$ cat memload.sh

./mem &

./mem &

./mem &

./mem

 みたいなshell scriptでたくさん走らせればよいのでは。但し上のプログラムでは100秒経過すると止まってしまいますが。

(uhyoさんが書いているように、上のプログラムの、for文は物理メモリ割り当てを行わせるのに必要です。また、上のプログラムでは、maxdsiz を超えてデータの割付は出来ませんから、

カーネルパラメータであるmaxdsizを大きくしておくか、プロセスをたくさん走らせるか、すればたくさんメモリを使えます。)
のり君
アドバイザー

メモリ使用率を上げる方法

別に、メモリ使用率を上げる必要は無い、と思います。

実施されたい事は、「メモリダンプ排出時、物理メモリ容量全てが、ダンプファイルとして吐かれたら良い」のですよね。

記憶が定かでは無いのですが、11.0は、デフォルトが、

実装されてるメモリー全部をdumpするのではなく

実際使用している(動いている)OS関連部分のみの採

取となっている、はずですので、その設定を一時的に

でも変更してあげれば、基本Full Dump になるはずで

すね。(結果、メモリ使用率も上げる必要が無い)

■関連カーネルパラメータ

 alwaysdump :

  ダンプに含めるカーネル・メモリ・ページの

  ビット・マスク

 dontdump  :

  ダンプから除外するカーネル・メモリ・ペー

  ジのビット・マスク

 値がビットマスクですので 実際変更する際は

 samで変更するのが分かりやすいはずです。