最近気がついたのですが、いつのころからか、FreeBSDは、unlimit datasizeしても、512MBまでしか割り当てられないようになっていました。
% limit
cputime unlimited
filesize unlimited
datasize 524288 kbytes
stacksize 65536 kbytes
coredumpsize 0 kbytes
memoryuse unlimited
vmemoryuse unlimited
descriptors 11095
memorylocked unlimited
maxproc 5547
sbsize unlimited
% unlimit datasize
% limit datasize
datasize 524288 kbytes
% limit datasize 512m
% limit datasize 513m
limit: datasize: Can't set limit (Operation not permitted)
余談ですが、limitとunlimitはcsh系のbuilt-in commandであり、sh系の場合は、ulimitになります。
以前は2GBくらいまでできていたので、どこかで制限がかけられるようになったんだろうな、という予想は立ちます。というわけで見つけたのが、これ。
limit datasize
http://lists.freebsd.org/pipermail/freebsd-questions/2006-April/119717.html
これだっ!、と思ったら、なんと、変数名が間違ってるじゃないですか。
/boot/loader.confに書くのは正しいのですが、kern.maxdsizeじゃなくて、kern.maxdsizが正解。同じく、kern.maxssizeではなくkern.maxssizです。
/boot/defaults/loader.confより
#kern.maxdsiz="" # Set the max data size
#kern.maxssiz="" # Set the max stack size
というわけで、/boot/loader.confに
kern.maxdsiz="2G"
と書けば、2GBまで割り当て可能になります。
GとかMとか単位を書いていいのかな?と気になったので、一応、ソースコードを追いかけてみました(マニュアルなどのドキュメントが見つからない…)。
src/sys/kern/kern_environment.c
の中の、getenv_quadという関数で、GとかMとかの解釈をしているので大丈夫でした。
調子にのって、"3G"とか指定すると、ブートしなくなりますので注意!
initがこけてpanic rebootします。
single userモードでも起動しなくなります。
もしやってしまった場合は~~~ようするに、やってしまったんですが(笑)~~~、ブート時に、ブートメニューから、コマンドライン形式のブートローダに抜けて、直接パラメータを変更します。たしか、
set kern.maxdsiz=512M
とかしてから、とりあえずOSをブートさせたあとに、/boot/loader.confを書き直せばよかったと思います
☆ ☆ ☆
風邪が治らないなぁ
0 件のコメント:
コメントを投稿