■Linux
#ulimit -a
/etc/security/limits.conf などで変更可能。
■FreeBSD
#limit
/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
この値はカーネルで指定されている上限値で、これの値以上のメモリをプロセスに割り当て可能にするには、これらの値を変更した上でカーネルを再構築し、再起動する必要がある(もちろん、割り当ての制限を少なくしたい場合も)。
options MAXDSIZ="(1024*1024*1024)"
options MAXSSIZ="(1024*1024*1024)"
options DFLDSIZ="(1024*1024*1024)"
4.5R以降では以下の変数を/boot/loader.confで指定することもできるようだ。
kern.maxdsiz
kern.dfldsiz
kern.maxssiz
余談ですが、limitとunlimitはcsh系のbuilt-in commandであり、sh系の場合は、ulimitになります。