Jails as a VPS

Andrew Snow andrew at modulus.org
Tue Jan 8 17:20:35 PST 2008


Hi Guys,

I am running a hoster providing "VPS" using FreeBSD Jails on 6.2

FYI, I have patched my kernel in several places to make it work for me:
  * jails have their own SYSV shared memory and semaphores
  * per-jail number of processes limit
  * jail ability to be bound to a given CPU core
  * jails have a limited range of nice values (10 to -10) compared to 
the host environment

and last but not least:
  * memory usage measurement and limiting.

It is this last one that is causing me the most problems.  I modified 
obreak() to deny requests for more memory when memory limit is exceeded, 
and that works OK.

But measuring the jail memory usage in the first place is proving to be 
a pain, and I wonder if you guys have any ideas.

I am doing something similar to the Google SoC, by measuring the 
resident page count of every VM map held by every process in the jail.

This does not measure memory fairly - it counts shared memory too many 
times. To see this in action, I can allocate a jail with 500mb memory 
limit then try to start 10 or 20 large apache HTTPD processes.  While 
using only a small amount of actual system ram (under 100mb probably), 
it measures it to be much larger.

I am now looking at adding fields to VM memory maps and tagging them so 
I can ensure I don't count them twice, but this is starting to get 
non-trivial.

Anyone else been able to solve this problem or have any better knowledge?


Thanks,

- Andrew



More information about the freebsd-jail mailing list