Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Oct 2012 00:15:38 +0200
From:      Jilles Tjoelker <jilles@stack.nl>
To:        John Baldwin <jhb@freebsd.org>
Cc:        Marcel Moolenaar <marcel@xcllnt.net>, freebsd-arch@freebsd.org
Subject:   Re: mmap and resource limits
Message-ID:  <20121012221538.GA96422@stack.nl>
In-Reply-To: <201210121338.28956.jhb@freebsd.org>
References:  <83AE27A6-C844-4720-99E7-A12106F77227@xcllnt.net> <FD8885CC-6E66-435A-A858-82F41B0F239D@xcllnt.net> <201210121338.28956.jhb@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Oct 12, 2012 at 01:38:28PM -0400, John Baldwin wrote:
> On Friday, October 12, 2012 12:04:19 pm Marcel Moolenaar wrote:

> > On Oct 8, 2012, at 10:40 AM, Marcel Moolenaar <marcel@xcllnt.net> wrote:

> > > What's the progress of mmap(2) doing resource accounting and
> > > it respecting resource limits?

> > *silence*

> > Ok, so no new progress. We're still not doing it and we don't
> > have an idea of how we want to do it if or when we're going to
> > want to do it. Consequently: we still need brk()/sbrk().

> > Correct assessment?

> Well.  You can use RLIMIT_AS, but that includes anything you map, not
> just malloc().

This is effective for many applications. I have found it particularly
useful against runaway memory leaks in applications moved from 32-bit to
64-bit systems.

> The problem is that even if you use sbrk() and rely on RLIMIT_DATA,
> any misbehaving app can just use mmap(MAP_ANON) or shm_open() to get
> around that.

As of 8.0 it is possible to enable swap accounting to limit anonymous
memory. This uses the vm.overcommit sysctl and RLIMIT_SWAP rlimit
described in tuning(7). For example:

# sysctl vm.overcommit=2
$ ulimit -w 100000

The rlimit limits the total for the UID (much like RLIMIT_NPROC,
RLIMIT_SBSIZE and RLIMIT_NPTS).

-- 
Jilles Tjoelker



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20121012221538.GA96422>