NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: ulimit -d/-m do not actually work
gdt%lexort.com@localhost (Greg Troxel) writes:
>I suspect that "ulimit -d" does not work correctly, so I wrote a test
>program, which simply allocates 4K chunks and writes an int into each.
>It keeps a count, and prints the amount it was able to allocate in kB.
> data seg size (kbytes, -d) 8388608
> max memory size (kbytes, -m) 32220468
malloc doesn't use the "data segment", so that limit doesn't apply to it.
-d the data segment size of a process (kilobytes)
RLIMIT_DATA The maximum size (in bytes) of the data segment for a
process; this defines how far a program may extend its
break with the sbrk(2) system call.
You can try sbrk(2), it should still obey the data segment size (and
may fail if you use it concurrently with malloc()).
"max memory size" is about physical memory usage and isn't a hard limit.
-m the total physical memory that can be in use by a
process (kilobytes)
RLIMIT_RSS The maximum size (in bytes) to which a process's resident
set size may grow. This imposes a limit on the amount of
physical memory to be given to a process; if memory is
tight, the system will prefer to take memory from
processes that are exceeding their declared resident set
size.
Things were much easier when these limits were invented, in particular
without multithreading and shared libraries, a single heap (the
"data segment") was sufficient for all memory allocations.
Home |
Main Index |
Thread Index |
Old Index