X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=python%2Fvserver.py;h=e5d9d2f7d60f4bf18a055125eff1b03a9d375182;hb=6170fcb2124da90c01d8df5213321c1eacda7d7d;hp=bfc5c935d9196216d0dc7b77e2289ab4f125b925;hpb=e059b363cf337734098e0b06408fea9712d14997;p=util-vserver.git diff --git a/python/vserver.py b/python/vserver.py index bfc5c93..e5d9d2f 100644 --- a/python/vserver.py +++ b/python/vserver.py @@ -13,6 +13,7 @@ import linuxcaps import passfdimpl import utmp import vserverimpl, vduimpl +import cpulimit from util_vserver_vars import * @@ -110,25 +111,38 @@ class VServer: return blocktotal def set_sched(self, shares, besteffort = True): - global SCHED_TOKENS_MIN, SCHED_TOKENS_MAX - tokensmin = SCHED_TOKENS_MIN - tokensmax = SCHED_TOKENS_MAX - - if besteffort is True: - # magic "interval" value for Andy's scheduler to denote besteffort - interval = 1000 - fillrate = shares - else: - interval = 1001 - fillrate = shares + # for the old CKRM scheduler + if cpulimit.checkckrm() is True: + cpulimit.cpuinit() + cpulimit.vs2ckrm_on(self.name) + try: + cpulimit.cpulimit(self.name,shares) + except OSError, ex: + if ex.errno == 22: + print "invalid shares argument" + # should re-raise exception?! - try: - vserverimpl.setsched(self.ctx,fillrate,interval,tokensmin,tokensmax) - except OSError, ex: - if ex.errno == 22: - print "kernel does not support vserver scheduler" + # for the new vserver scheduler + else: + global SCHED_TOKENS_MIN, SCHED_TOKENS_MAX + tokensmin = SCHED_TOKENS_MIN + tokensmax = SCHED_TOKENS_MAX + + if besteffort is True: + # magic "interval" value for Andy's scheduler to denote besteffort + interval = 1000 + fillrate = shares else: - raise ex + interval = 1001 + fillrate = shares + + try: + vserverimpl.setsched(self.ctx,fillrate,interval,tokensmin,tokensmax) + except OSError, ex: + if ex.errno == 22: + print "kernel does not support vserver scheduler" + else: + raise ex def get_sched(self): # have no way of querying scheduler right now on a per vserver basis