А разве в линуксе ulimit уже ограничивает malloc, который через mmap делается? Я только видел некие патчи, но все равно, в общем случае RLIMIT_DATA устанавливает ограничения только на brk(2).
> А разве в линуксе ulimit ужеpoigeMay 25 2012, 11:54:11 UTC
«… Use ulimit() for User Processes
With ulimit -v, you can limit the address space a process can allocate with mmap(). When you reach the limit, all mmap(), and hence malloc(), calls will return 0 and the kernel's OOM killer will never start. This is most useful in a multi-user environment where you cannot trust all of the users and want to avoid killing random processes. …»
RLIMIT_AS, ага. В линуксе действует и на brk, и на mmap. С другой стороны в этот лимит еще входят все сегменты shared libraries (как и любая другая shared memory), поэтому точно этот лимит установить довольно сложно. Также если при установленном AS лимите, программа попытается замапить большой файл, то тоже не сможет этого сделать. В общем, именно на malloc лимитов как не было, так и нет.
> поэтому точно этот лимит установить довольно сложно.poigeMay 26 2012, 08:09:55 UTC
Любой RAM лимит непросто точно установить, КМК. Впрочем, в этом случае, особой точности не требуется - я думаю, что 2-3 GiB VSS для процесса Chromium должно быть «за глаза». Кстати, можно и RSS залочить тоже - в связи, так сказать…
Comments 11
А под виндой, на удивление, нет.
Reply
Reply
Reply
Reply
Reply
Reply
Reply
With ulimit -v, you can limit the address space a process can allocate with mmap(). When you reach the limit, all mmap(), and hence malloc(), calls will return 0 and the kernel's OOM killer will never start. This is most useful in a multi-user environment where you cannot trust all of the users and want to avoid killing random processes. …»
- http://linuxdevcenter.com/lpt/a/6808 (2006-й год)
Reply
Reply
Reply
Leave a comment