Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Apr 2009 00:03:49 +0200
From:      Miroslav Lachman <000.fbsd@quip.cz>
To:        =?UTF-8?B?0JzQtdC90YzRiNC40LrQvtCyINCa0L7QvdGB0YLQsNC90YLQuNC9?= <k.menshikov@peterhost.ru>
Cc:        freebsd-jail@freebsd.org
Subject:   Re: CPU limit for Jails(patch for ULE scheduler)
Message-ID:  <49EE42C5.3010409@quip.cz>
In-Reply-To: <49EC926D.6020404@peterhost.ru>
References:  <49EC926D.6020404@peterhost.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
Меньшиков Константин 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
> scheduler.
> 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
> program.
> My example jail -S100 /usr/jails/root/ root.kostjn.pht  192.168.0.245
> /bin/csh
> 
> 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.
> 
> Thank.
> Original cdjones  cpu and memory limit patch
> http://wiki.freebsd.org/JailResourceLimits

Hello,
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 
upcoming 7.2).

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 
http://wiki.freebsd.org/Jails

Can you take a look to Memory limits patch and incorporate it in to your 
patch?

Do you have a plan to add jtune?

Thanks for your work, I hope I will have time to test it in few weeks.

Miroslav Lachman



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