我想限制通过linux上的ulimit命令启动的过程使用的内存。我想知道使用哪种OS机制来支持Ulimit。特别是基于cgroups?
获得和设置限制的Linux API方法是GetRlimit(2)和SetRlimit(2)
限制在过程空间内进行管理。子过程将继承其父母的限制。极限是POSIX标准的一部分,因此所有符合POSIX的操作系统都支持它们(Linux,BSD,OSX)。
cgroups是特定于Linux的,在Linux安装中甚至不需要。我不确定是否可以使用cgroups管理限制,但这绝对不是标准的。
" ulimit"基本上是一种过时的。如果您需要资源,则不应有任何实际限制,如果您想限制资源,则有更好的方法来建立报价。
这是一个很好的概述:
- http://www.gnu.org/software/libc/manual/html_node/limits-on-resources.html
几个人要查看的页面包括:
-
Man 2 Getrlimit
-
Man 2 Setrlimit
-
男人3 ulimit过时!
我使用djb的daemontools
软件包的一部分SoftLimit。
例如,通过指定softlimit -m 1048576 nautilus
之类的内容,程序(Nautilus)将永远不会超过1MIB的内存使用情况(在这种情况下,这也会立即导致它立即失败)。