« タキシード | メイン | freeradiusのFail Over »

スタックサイズと仮想メモリー

freeradiusのスレッド数を512まで増やせるようにソースを直した。
コンパイルもすんなりいき、起動してみた。
でも、293スレッド作ったところでメモリー不足になって落ちてしまう。

なんでだろ~

と思ったら、freeradiusの各スレッドに割り当てるスタックサイズが大きすぎたみたい。
それでメモリー不足になっていた。
どうやら、Linux の場合だと、ulimit -a (bashの場合)で表示されるスタックサイズを使用するらしい。
(一方、mysqlは設定できる)
デフォルトの状態で、10Mになっていた。(環境によるかもしれないけど)でか!
ulimit -s コマンドで4Mくらいに設定したら512スレッドで動くようになった。

でも、なんで293スレッドだったのか?

どうやら、293スレッド x 10,240KB = 3,000,320KB で、3GB近い仮想メモリー。

32ビットOSの場合、仮想メモリーの上限は4GB。
Linux kernelは1Gを仮想メモリーに使うので、残り3GBがユーザが使用可能な仮想メモリー。
ということで、293スレッド目でメモリー不足になっていたみたい。

基本的なことだったf(^^;

トラックバック

このエントリーのトラックバックURL:
http://hagyroom.sakura.ne.jp/mt/mt-tb.cgi/659

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2007年02月27日 00:00に投稿されたエントリーのページです。

ひとつ前の投稿は「タキシード」です。

次の投稿は「freeradiusのFail Over」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

アーカイブ

お薦めショップ

  • HagyShop   ボクの大好きな作品だけ、
      お薦めの本と映画をご紹介。