[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-users:05995] Re: 年末持ち越しのORCAの質問



生越です。

> 1)ORCA Ver2のメモリ消費量について
>  弊社開発よりメモリリークを起こしているのではないかという
>  問合せが来ています。
>   512Mb実装マシンにおいて、ORCAが1.3Gbの常駐メモリを消費し
>  実に総量の90%を占めています。厳密には、wfcというプログラム
>  が約1.3Gb消費しています。
> 
>   a)これは正しい状態でしょうか?
>   b)もし障害であれば本来どれくらいを占めるものでしょうか。
> 
>  弊社で行なったメモリ確認方法を記載します。
>   a)端末プログラムを起動
>   b)gtopと端末画面より入力、リターン
>   c)gtopが起動し、ここより、タブより「メモリ使用状態(常駐)」
>    を選択。
>   d)「メモリ使用状態(常駐)」より、メモリを確認。
>    ORCAのモジュールwfcが約1.3Gbのメモリ消費をしています。

  あの〜。psで出て来るメモリの使用量というのは、「そのプロセスがいくら
使っているか」という数値に過ぎません。wfcはmulti threadのプログラムなの
で、スレッド間で共有されている領域についても、「そのプロセスで使ってい
るメモリ」として表示されます。ですから、単純合計では算出出来ません。
wfcの各プロセスは、psあたりで見ると「同じメモリ消費のプロセスがやたら
にある」という状態になると思います。

  Linuxの場合、スレッド間は当然データ共有されますし、プロセス間であっ
ても、共有出来るデータ(主にはコード領域ですが)は共有しようという管理を
します。ですから、psで見た時の個々のプロセスのメモリ消費の総和が、全体
のメモリ消費とは一致しません。

  メモリリークを疑うのなら、処理をさせてからのメモリ消費量の変化を追跡
してみるのがよろしいかと。そのためには、freeあたりでメモリの使用量を見
てみるのが簡単だと思います。まぁそれを見てわかるくらい漏れていたら、し
ばらく使っただけでメモリ不足で死んじゃうはずですけどね。現在こちらのテ
ストでは、1.1.2最終版、1.2.0についてのメモリリークはなさそうです。ない
と断言は難しいですが。

  ただ、pandaのメモリ消費で言えば、wfcが一番消費するはずです。それは、
全ての端末のセションデータを全部保持しなければならないからです。昔です
とこれを減らす工夫をしたものですが、今だとこの手のメモリ消費はswapを増
やすだけで解決する方がスマートなので、そのままにしてあります。また消費
されるメモリのほとんどが、私が書いたコードでもなければ、私の書いたコー
ドの中でアロケートしたものでもないので、コードの工夫によって大幅に減ら
せるものでもないです。

# 私自身は昔からのプログラマなんで、メモリはちまちまと使っているのです
# が、他が結構富豪な使い方をしてくれちゃってるんです。

-- 
ogochan@xxxxxxxxxx                ->  http://www.nurs.or.jp
Masami Ogoshi                     ->  http://www.nurs.or.jp/~ogochan/
KOWA Bldg3. 2F 5-6-12 Sotokanda Chiyoda-ku Tokyo 101-0021 JAPAN