2009年10月16日

MacOSX 下設定 ulimit

最近寫一個 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 都接通時,才會傳資料的。



Orignal From: MacOSX 下設定 ulimit