MacOSX 下設定 ulimit |
2009/10/16 ~ 阿亮 ~ |
最近寫一個 Network Programming 的程式,發現在 Mac 一些預設條件會不夠用,需要調一下。
在 MacOSX 10.5.X 下的 ulimit,可用
sudo launchctl limit
得到一些詳細列表,如下表
cpu unlimited unlimited filesize unlimited unlimited data 6291456 unlimited stack 8388608 67104768 core 0 unlimited rss unlimited unlimited memlock unlimited unlimited maxproc 512 1024 maxfiles 512 unlimited
如果要調,只要用 root 身分改 /etc/launchd.conf 即可,如下
limit maxproc 512 1024
看要調哪個參數,重新開機即可。
但其中 stack 預設 8M 不能用這個來調,若需要,可針對各別程式在 compile 過程給予。
另外 ulimit -p 調 pipe size 的部份,根據此篇 ,是不能調的,因為程式也會依系統 compile 時,有相依性。
一般 Linux 下 pipe size 有 8*512b,但在 MacOSX 下就只有 1*512b 了,如果有那種 200 個 cat 文字 stdout 導到 pipe write end,而很久之後才接收 pipe read end 的話,在 MacOSX 下就很容易"爆"了,因為隨便一個文件都會超過 512b。
當然,實際的應用很少這樣吧,一般都是 pipe read/write 都接通時,才會傳資料的。
20100124 Update.
shmget 是有上限的,可以用下述方法查得
sysctl -a |grep shmmax
這個是可以調的,比如要調成 1G
sudo sysctl -w kern.sysv.shmmax=1073741824 sudo sysctl -w kern.sysv.shmall=1073741824