【LEDE】x86軟路由之路-15-關於nr_open、ulimit -n、nofile

nr_open

This denotes the maximum number of file-handles a process can allocate. Default value is 1024*1024 (1048576) which should be enough for most machines. Actual limit depends on RLIMIT_NOFILE resource limit.

  • 如何設置
  1. echo 2097152 > /proc/sys/fs/nr_open
  2. sysctl -w fs.nr_open=2097152

ulimit

主要用來限制普通過shell啓動的普通進程的最大文件描述符數量。

  • 如何設置
  1. ulimit -n 2097152

procd中的nofile

用來控制通過procd啓動的進程的fd數量

  • 如何設置
  1. procd_set_param limits nofile="2097152 2097152"

優先級

nr_open >= ulimit = nofile
nr_open的默認值爲1024*1024,因此如果想把ulimit或nofile提高到一個小於此值的新值時,不需要提高nr_open值;否則需要先提高nr_open的值。

疑問

在procd的源碼中,有這樣一段代碼:
在這裏插入圖片描述
第179行,如果使用procd_set_param limits nofile="unlimited"來擴大nofile,會使setrlimit方法的rlim參數變得很大,甚至突破nr_open的限制,導致nofile設置失敗,回退到1024(soft) 4096(hard)的狀態。不知道是自己的操作姿勢不對還是源碼問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章