CPU limit for Jails(patch for ULE scheduler)
000.fbsd at quip.cz
Tue Apr 21 22:03:54 UTC 2009
Меньшиков Константин wrote:
> Hello all!
> Many users want have limits on resourse for jail, for examle cpu and
> memory limit.
> I`m rewrire original cdjones patch for cpu limit for jail under ULE
> So, this work simple.
> We count cpu usage for all jails, and if jail use cpu more than have
> shared cpu, we move his threads to IDLE queue and return to TIMESHARE in
> reverse case.
> Jailed thread can use all avaliable cpu time, if system has avaliable cpu.
> If system under heavy load, jailed thread can`t use cpu long as ratio
> (shared cpu for jail/ all shared cpu) < (estimate usage cpu for jail /
> all usage cpu) .
> Unjailed thread and interactive thread are not subject to this regime.
> Add 2 sysctl
> kern.sched.total_sched_shares - total count shares cpu in system,
> increase if we have more cpu
> kern.sched.flush_estcpu_interval - flush estcpu interval in ticks,
> default is 2560 = 2 * 128 * 10, NCPU*stathz*sec, increase if we have
> more cpu
> For use cpu limit, you need use flag -S NSharedCPU in /usr/sbin/jail
> My example jail -S100 /usr/jails/root/ root.kostjn.pht 192.168.0.245
> I`m tested this under 10 simultaneous process in jail and in main
> system. test program is infinity cycle an 8 core xeon, use RELENG_7.
> First run process in jail, and after in main system.
> This one process tracking cpu usage
> So we see, that after run in main system, jailed process can`t usage cpu.
> Please communicate me about all problem in this patch.
> This is initial version, without tune jail parameter in runtime.
> So, this work. But i`m not sure, that is best way.
> Attempt increase priority for jailed thread not work, because non
> interactive thread (that utilize many cpu) already have small
> prioriry(numerical high).
> Attempt decrease number ticks in cpu time slice, also not good idea,
> because, this increase number context switching on high load.
> May be you see other way for do this?
> Share you idea.
> Original cdjones cpu and memory limit patch
I can't judge your work / patch as I am not developer nor C programmer.
But it is nice to see that someone is working on the resource limits. I
am waiting for this feature for a years without success. The original
SoC project was never done (not production ready). There were attempts
by others to update cdjones patch to newer versions of FreeBSD, but
still with some minor problems. The last I remember is "Memory limits on
7.0" by Christopher Thunes (e-mail in archive of this list from
2008-06-24). Unfortunately I had not time to test his patch in times of
7.0 and I am not aware of any newer version of this patch (for 7.1 or
It would be nice if independent developers can work together on this
subject and do this work production / commit ready.
May be you should open PR with you patch, so anybody can find it, test
it and help to make it better. Or if you have own web page with this
patch + some documentation, I can put the link to
Can you take a look to Memory limits patch and incorporate it in to your
Do you have a plan to add jtune?
Thanks for your work, I hope I will have time to test it in few weeks.
More information about the freebsd-jail