[Armadillo:00742] Re: Armadillo-Jのメモリ管理について

Fumito Morishima email@hidden
2005年 12月 16日 (金) 17:19:22 JST


森島です。

同じ環境で動作させてみました。

結果から言うと、cgiを連続で稼働させた場合、
メモリが消費されていきました。

ただ、ls や mallocを行うプログラム、また通常のhtmlファイルの
ブラウズではメモリが消費されなかったので、
どこか環境に異なる部分があるのかもしれません。

以上の状況から推測すると、thttpd の cgiを動作させる部分に
何か問題があるように思われるので、ちょっと調べてみます。

メモリ消費を調べた方法を記載しておきます。

[cgi(html)の調査]
1. Armadillo-Jにhelloと表示するだけのcgiを容易
2. PCに、以下のスクリプトを用意してAJのcgiを連続起動
 #!/bin/sh
 while [ 1 ]
 do
    wget http://ipaddress_of_AJ/cgi-bin/cgi_or_html_file -O > /dev/null
    wget http://ipaddress_of_AJ/cgi-bin/cgi_or_html_file -O > /dev/null
    wget http://ipaddress_of_AJ/cgi-bin/cgi_or_html_file -O > /dev/null
    sleep 1
 done

3. Armadillo-J上で、以下のスクリプトを実行してメモリ使用量をチェック
 #!/bin/sh
 while [ 1 ]
 do
    cat /proc/meminfo
    sleep 1
 done

[ls や、mallocするプログラムの調査]
以下のようなスクリプトをArmadillo-J上で実行して確認しました。
 #!/bin/sh
 while [ 1 ]
 do
    cat /proc/meminfo
    ./program_to_check
    ./program_to_check
    ./program_to_check
    sleep 1
 done


Makoto Nakamura wrote:
> いつもお世話になっています。中村です。
> 
> 先日問い合わせたCGIのテストを行っていたのですが、
> メモリ管理について不明点があります。
> 
> 自作のCGIを動作させてみたのですが、
> メモリが200kb程消費されている事がわかり
> 調査を行っていました。
> 
> プログラム上異常な箇所が見当たらなかった為、
> cgi_genericをそのまま動作させてみた所
> 同じく200kb程消費されています。
> 
> 同じCGIをいくつか複製し動作させてみた所、
> thttpdにアクセスしたタイミングで500エラーが返ってきたり
> 空白ページが表示されたりします。
> また、http://xxx.xxx.xxx.xxx/cgi-bin/
> とブラウザから入力してファイルリストを見ようとしても
> 同じく500エラーが返ってきたり、空白ページ
> または、以下のような中途半端なHTMLを取得してしまいます。
> ---------------------------------------
> <HTML><HEAD><TITLE>Index of /cgi-bin/</TITLE></HEAD>
> <BODY>
> <H2>Index of /cgi-bin/</H2>
> <PRE>
> mode  links  bytes  last-changed  name
> <HR>
> ---------------------------------------
> ※通常時はファイルリストも参照可能となっています。
> 
> このメモリ量は「cat /proc/meminfo」を実行して
> MemFreeを見て判断しています。
> 
> この消費されたメモリはいつ開放されるのでしょうか?
> 
> 連続稼動が出来ないため非常に困っています。
> 
> 動作環境は以下の通りです。
> AJ020
> atmark-dist-20051017.tar.gz
> linux-2.4.22-uc0-aj3.tar.gz
> +Etherドライバ修正版
> +thttpd 2.04 of 10aug98
> 
> ちなみにAJ010の時にはこのエラーは発生していません。
> 
> この問題に関して以下のような調査を行いましたので
> 念のため添付します。
> ----------------------------------------
> ・lsコマンド等を実行してもメモリが減り、戻らない
> ・単純なmalloc→freeを行うアプリを動作させると、
>  確保した分のメモリ量が減り、freeしても戻らない
> ・「cat /proc/kmsg &」を実行しておくと以下のメッセージが出る事がある。
>    <4>Allocation of length 413696 from process 104 failed
>    <4>Buffer memory:      460kB
>    <4>Cache memory:      432kB
>    <4>Free pages:         584kB (     0kB HighMem)
>    <4>Zone:DMA freepages:     0kB min:     0kB low:     0kB high:     0kB
>    <4>Zone:Normal freepages:   584kB min:    80kB low:   160kB high:   240kB
>    <4>Zone:HighMem freepages:     0kB min:     0kB low:     0kB high:     0kB
>    <4>( Active: 149, inactive: 74, free: 146 )
>    <4>= 0kB)
>    <4>56*4kB 5*8kB 0*16kB 0*32kB 1*64kB 0*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB = 584kB)
>    <4>= 0kB)
>    
>    ※process 104とはCGIのプロセスIDのようです。
> ・まれに「SIGSEGV」と表示される。
> ・まれに「fault-common.c 61」と表示されっぱなしになる。
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/armadillo



armadillo メーリングリストの案内