Kawanet Blog II

アクセスカウンタ

zoom RSS [VPS] Virtuozzoのメモリはfreeやtopでなくてprivvmpagesを見るべし

<<   作成日時 : 2008/12/12 03:33   >>

なるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 2 / コメント 3

Virtuozzo ベースの CPI の VPS スケーラブルプラン を利用していますが、
free や top コマンドで見ると、まだメモリが余っているのに、
Out of memory などのエラーで処理が失敗してしまう事態が頻発。

原因がようやく分かりました。free や top コマンドでなくて、
メモリの利用状況は privvmpages を確認する必要があるのですね。
 

メモリ確保のテストコードを書いてみた

#include <stdio.h>
#include <stdlib.h>

#define BUFSIZE (1024*1024)

int main () {
    int i = 0;
    int j = 0;
    char *p;

    while( 1 ) {
        p = malloc( BUFSIZE );
        if ( ! p ) break;
        printf( "." );
        for( j=0; j<BUFSIZE; j++ ) p[j] = 0;
        i++;
    }

    printf( " %d MB allocated.\n", i*BUFSIZE/1024/1024 );
    getchar();
    exit( i );
}
たぶん、こういう既製ツールはありそうだけど、単純に。
malloc-test.c とpしてコンパイルして、実行してみます。
$ gcc -O -o malloc-test malloc-test.c
$ ./malloc-test
..........................................................................................
.................. 108 MB allocated.
VS-02 プラン(メモリ360MB)では、
稼働中の OS とは別に malloc で 108 MB まで確保できましたが、
free コマンドで確認すると、まだ 160MB ほど残っていました。

VS-03 プラン(メモリ630MB)では、
稼働中の OS とは別に malloc で 443 MB まで確保できましたが、
free コマンドで確認すると、こちらも 160MB ほど残っていました。

free コマンドの値が正しくない!?
 

/proc/user_beancounters の privvmpages を確認する


調べていくと、privvmpages というのがキーワードらしい。

VPSプランってどうよ?3 に情報発見。
このページ↑はもう見れないので、Google のキャッシュ より引用:
beans=`cat /proc/user_beancounters | grep priv`
max=`echo $beans | awk '{ print $4;}'`
use=`echo $beans | awk '{ print $2;}'`
let "per=$use*100/$max"
let "mb=$use/256"
let "mmb=$max/256"
echo "privvmpages usage: $mb MB ($per% of $mmb)"
手元の環境で実行(root 権限)してみると、
VS-02 プラン(メモリ360MB)では
privvmpages usage: 247 MB (70% of 351)
VS-03 プラン(メモリ630MB)では
privvmpages usage: 156 MB (25% of 605)
という結果になりました。
free コマンドで認識していたよりも、メモリを消費していた?

これを踏まえて、VPS スケーラブルプラン
「実質的に使えるメモリ容量」をチェックするのは↓の1行。
# grep privvmpages /proc/user_beancounters | awk '{ print int(($4-$2)*4/1024) }'
VS-02 プラン(メモリ360MB)では『103』、
VS-03 プラン(メモリ630MB)では『448』という結果でした。
概ね、malloc-test.c の実験結果と同じ値です。
(差は、malloc-test 自体が利用しているメモリや、他のプロセスのタイミング?)
 

WebARENA なら 1922MB?


このメモリだと、PostgreSQL もロクに使えそうにないですね。
今は、SQLite を使ってるから良いけど。。。
ちなみに、NTTPC Communications の WebARENA SuitePRO V2 は、
privvmpages が 492168 らしいので、最大 1922MB まで使える模様。

CPI (KDDI) VS-02 プラン(月額3,780円〜)→ 351MB
CPI (KDDI) VS-03 プラン(月額7,980円〜)→ 605MB
WebARENA SuitePRO V2(月額8,820円〜)→ 1922MB

こうメモリ容量を見ると、VS-03 より SuitePRO V2 の方が良いですね。
静的ファイルだけとか、DB を使わないアプリが動いてもアクセス数が
少ないサイトなら、VS-02 で低コスト運用できるかもしれないけど、
SuitePRO V2 の方がメモリに余裕がある分、いろいろ応用できそう。

年間契約している CPI は当面使い続けたいので、
privvmpages 拡張して頂けないでしょうか?>CPI様

(参考記事)
VIRTUOZZO系VPSにおけるメモリの節約方法
VPS(Virtuozzo) リソース消費量モニタリング - Linux
「使えるねっと」vs「WebARENA」システムリソース比較
VPS 環境下で共有メモリ(shmmax=32MB)を増やしてみた
VPS環境で、メモリ不足でgemが使えない? (Segmentation fault)

[追記]
privvmpages の値は、SSH ログインしなくても、
Parallels Power Panel から確認できます。
コンテナ管理 → リソース → メモリ → セカンダリシステムパラメータ

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 2
なるほど(納得、参考になった、ヘー)
ナイス

トラックバック(2件)

タイトル (本文) ブログ名/日時
CPI VPSスケールプランの一番安いやつ
以前月額2000円以下で利用可能なVPSサービスというのを調べておりましたが、その続き。CPI VPSスケールプランはありがたいことに無料のテストサーバーがあるのでこれを申し込んでみました。そもそもレンタルサーバ契約の目的は・DNSサーバを移転したい・メー... ...続きを見る
ぱらめでぃうす
2009/01/30 03:59
ServersMan@VPSはダメかもしれない
 最近発現する症状、Cannot allocate memory。  mallocをシステムにコールした段階でメモリが確保できないと出るエラー。  ServersMan@VPSは見かけ上メモリが豊富に使えるけど、実際にmallocコールするとメモリが確保できない(他のVMが占有している)事があるみたい。  さくらのVPSでは、メモリは実際に使える量で、不足する場合にはスワップが使えるので良いのだが、ServersManだと、子OSで本当に使えるメモリの量が不明、かつ独自のスワップが使えないために... ...続きを見る
開発・設定メモ[ServersMan@V...
2012/02/08 00:01

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(3件)

内 容 ニックネーム/日時
縺。縺ェ縺ソ縺ォVS-01 繝励Λ繝ウ?シ医Γ繝「繝ェ180MB?シ峨↓逋サ骭イ縺励※縺?繧句ヵ縺ッ
privvmpages usage: 148 MB (84% of 175)
縺ァ縺励◆縲ゑシ医し繝シ繝舌?シ蜀崎オキ蜍慕峩蠕鯉シ?

縺薙l縺ッ縺セ縺?繧翫∪縺励◆縲ゅ??
縺舌∈縺医∴縺?
2009/01/02 17:23
privvmpagesの値が拡張されたみたいですー
http://www.scalable.jp/blog/2009/03/post-4.html
noriaki
2009/03/28 06:03
本当だ! MAX値がだいぶ拡張されたみたい。
これである程度はアプリも動かせるようになるかな。
 
VS-02 プラン(メモリ 360MB 契約)privvmpages max: 351MB→585MB
VS-03 プラン(メモリ 630MB 契約)privvmpages max: 605MB→1171MB
kawanet
2009/03/30 18:13

コメントする help

ニックネーム
本 文
[VPS] Virtuozzoのメモリはfreeやtopでなくてprivvmpagesを見るべし Kawanet Blog II/BIGLOBEウェブリブログ
文字サイズ:       閉じる