# Andy Bavier <acb@cs.princeton.edu>
# Copyright (C) 2004-2006 The Trustees of Princeton University
#
-# $Id: swapmon.py,v 1.3 2006/05/01 18:28:01 mlhuang Exp $
+# $Id: swapmon.py,v 1.4 2006/05/02 17:23:14 mlhuang Exp $
#
import syslog
except ValueError:
pass
+ # vps sometimes prints ERR 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:
+ 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:
if xid is not None:
proc['xid'] = xid
- try:
- name = bwlimit.get_slice(proc['xid'])
- if name is None:
- # Orphaned (not associated with a slice) class
- name = "%d?" % proc['xid']
- except Exception, err:
- print "Warning: Exception received while parsing vps output", err
- print proc
+ name = bwlimit.get_slice(proc['xid'])
+ if name is None:
+ # Orphaned (not associated with a slice) class
+ name = "%d?" % proc['xid']
# Monitor only the specified slices
if names and name not in names:
(version, slices) = pickle.load(f)
f.close()
# Check version of data file
- if version != "$Id: swapmon.py,v 1.3 2006/05/01 18:28:01 mlhuang Exp $":
+ if version != "$Id: swapmon.py,v 1.4 2006/05/02 17:23:14 mlhuang Exp $":
print "Not using old version '%s' data file %s" % (version, datafile)
raise Exception
# Delete data file
os.unlink(datafile)
except Exception:
- version = "$Id: swapmon.py,v 1.3 2006/05/01 18:28:01 mlhuang Exp $"
+ version = "$Id: swapmon.py,v 1.4 2006/05/02 17:23:14 mlhuang Exp $"
slices = {}
# Query process table every 30 seconds, or when a large change in