import vserverimpl
import cpulimit, bwlimit
-from vserverimpl import VS_SCHED_CPU_GUARANTEED as SCHED_CPU_GUARANTEED
from vserverimpl import DLIMIT_INF
from vserverimpl import VC_LIM_KEEP
from vserverimpl import VLIMIT_NSOCK
return block_limit
- def set_sched_config(self, cpu_share, sched_flags):
+ def set_sched_config(self, cpu_min, cpu_share):
""" Write current CPU scheduler parameters to the vserver
configuration file. This method does not modify the kernel CPU
scheduling parameters for this context. """
- if sched_flags & SCHED_CPU_GUARANTEED:
- cpu_guaranteed = cpu_share
- else:
- cpu_guaranteed = 0
+ self.config.update('sched/fill-rate', cpu_min)
self.config.update('sched/fill-rate2', cpu_share)
- self.config.update('sched/fill-rate', cpu_guaranteed)
-
- if self.vm_running:
- self.set_sched(cpu_share, sched_flags)
+ if cpu_share == 0:
+ self.config.unset('sched/idle-time')
+
+ if self.is_running():
+ self.set_sched(cpu_min, cpu_share)
- def set_sched(self, cpu_share, sched_flags = 0):
+ def set_sched(self, cpu_min, cpu_share):
""" Update kernel CPU scheduling parameters for this context. """
- vserverimpl.setsched(self.ctx, cpu_share, sched_flags)
+ vserverimpl.setsched(self.ctx, cpu_min, cpu_share)
def get_sched(self):
# have no way of querying scheduler right now on a per vserver basis
self.set_resources()
vserverimpl.setup_done(self.ctx)
- def __prep(self, runlevel, log):
+ def __prep(self, runlevel):
""" Perform all the crap that the vserver script does before
actually executing the startup scripts. """
if fd != 0:
os.dup2(fd, 0)
os.close(fd)
+
+ # perform pre-init cleanup
+ self.__prep(runlevel)
+
self.config.cache_it()
self.__do_chroot()
log = open("/var/log/boot.log", "a", 0)
print >>log, ("%s: starting the virtual server %s" %
(time.asctime(time.gmtime()), self.name))
-
- # perform pre-init cleanup
- self.__prep(runlevel, log)
-
# execute each init script in turn
# XXX - we don't support all scripts that vserver script does
self.__do_chcontext(state_file)