From 117f3864335ac652bfecb5efc33e95bc9a908741 Mon Sep 17 00:00:00 2001 From: Faiyaz Ahmed Date: Thu, 24 Apr 2008 20:23:57 +0000 Subject: [PATCH] Fixed bug where vps was causing slice info to dict was failing. Updated to use new vserver.py. --- swapmon.py | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/swapmon.py b/swapmon.py index ced0cab..b25d57f 100755 --- a/swapmon.py +++ b/swapmon.py @@ -198,6 +198,9 @@ class Reset: print "Slice %s is being killed." % self.name vserver = VServer(self.name) vserver.stop() + # ignore initscripts. Don't run anything at start. + vserver.INITSCRIPTS = [] + vserver.start() os._exit(0) else: os.waitpid(pid,0) @@ -235,7 +238,7 @@ class Reset: print "Resetting slice " + self.name vserver = VServer(self.name) vserver.stop() - vserver.start(wait = False) + vserver.start() os._exit(0) else: os.waitpid(pid,0) @@ -269,10 +272,10 @@ def slicestat(names = None): """ Get status of specified slices (if names is None or empty, all slices). vsize, sz, and rss are in KiB. Returns - + PID CONTEXT VSZ SZ RSS %MEM CMD {xid: {'xid': slice_id, 'name': slice_name, - 'procs': [{'pid': pid, 'xid': slice_id, 'user', username, 'cmd': command, + 'procs': [{'pid': pid, 'xid': slice_id, 'cmd': command, 'vsize': virtual_kib, 'sz': potential_kib, 'rss': physical_kib, 'pcpu': cpu_percent, 'pmem': mem_percent}] 'vsize': total_virtual_kib, @@ -283,7 +286,7 @@ def slicestat(names = None): # Mandatory fields. xid is a virtual field inserted by vps. Make # sure cmd is last so that it does not get truncated # automatically. - fields = ['pid', 'xid', 'user', 'vsize', 'sz', 'rss', 'pcpu', 'pmem', 'cmd'] + fields = ['pid', 'xid', 'vsize', 'sz', 'rss', 'pmem', 'cmd'] # vps inserts xid after pid in the output, but ps doesn't know # what the field means. @@ -320,14 +323,16 @@ def slicestat(names = None): except ValueError: pass - # vps sometimes prints ERR instead of a context ID if it + # vps sometimes prints ERR or the name of the slice + # instead of a context ID if it # cannot identify the context of an orphaned (usually dying) # process. Skip these processes. - if type(proc['xid']) != int: + if (type(proc['xid']) != int) or (type(proc['vsize']) !=int): continue # Assign (pl_)sshd processes to slice instead of root m = re.search(r"sshd: ([a-zA-Z_]+)", proc['cmd']) + if m is not None: xid = bwlimit.get_xid(m.group(1)) if xid is not None: @@ -365,7 +370,7 @@ def slicestat(names = None): slice['rss'] += proc['rss'] slices[proc['xid']] = slice - + return slices def memtotal(): @@ -439,12 +444,11 @@ def formtable(slice, percent): table = "%5s %10s %10s %10s %4s %4s %s\n\n" % \ ("PID", "VIRT", "SZ", "RES", '%CPU', '%MEM', 'COMMAND') for proc in slice['procs']: - table += "%5s %10s %10s %10s %4.1f %4.1f %s\n" % \ + table += "%5s %10s %10s %10s %4.1f %s\n" % \ (proc['pid'], format_bytes(proc['vsize'] * 1024, si = False), format_bytes(proc['sz'] * 1024, si = False), format_bytes(proc['rss'] * 1024, si = False), - proc['pcpu'], proc['pmem'], proc['cmd']) @@ -584,8 +588,6 @@ def main(): if resetlist[resetslice].killtimeleft == 0 and \ resetlist[resetslice].resettimeleft == 0: del resetlist[resetslice] - - if verbose: print "%d%% swap consumed" % used if used >= reboot_thresh: # Dump slice state before rebooting -- 2.43.0