git://git.onelab.eu
/
mom.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
* Removed debug statement that prints out extra NM crap because I don't trust NM...
[mom.git]
/
bwmon.py
diff --git
a/bwmon.py
b/bwmon.py
index
c0832ad
..
bc7c0bb
100755
(executable)
--- a/
bwmon.py
+++ b/
bwmon.py
@@
-15,7
+15,7
@@
# Faiyaz Ahmed <faiyaza@cs.princeton.edu>
# Copyright (C) 2004-2006 The Trustees of Princeton University
#
# Faiyaz Ahmed <faiyaza@cs.princeton.edu>
# Copyright (C) 2004-2006 The Trustees of Princeton University
#
-# $Id: bwmon.py,v 1.
5.2.2 2006/08/21 21:27:35 mlhuang
Exp $
+# $Id: bwmon.py,v 1.
17 2007/01/03 20:15:06 faiyaza
Exp $
#
import syslog
#
import syslog
@@
-62,6
+62,7
@@
default_ByteThresh = int(.8 * default_ByteMax)
default_ExemptByteMax = 17609365914
default_ExemptByteThresh = int(.8 * default_ExemptByteMax)
default_ExemptByteMax = 17609365914
default_ExemptByteThresh = int(.8 * default_ExemptByteMax)
+default_MinRate = 8
# Average over 1 day
period = 1 * seconds_per_day
# Average over 1 day
period = 1 * seconds_per_day
@@
-73,11
+74,11
@@
The slice %(slice)s has transmitted more than %(bytes)s from
%(hostname)s to %(class)s destinations
since %(since)s.
%(hostname)s to %(class)s destinations
since %(since)s.
-Its maximum %(class)s burst rate will be capped at %(new_maxrate)s
+Its maximum %(class)s burst rate will be capped at %(new_maxrate)s
/s
until %(until)s.
Please reduce the average %(class)s transmission rate
until %(until)s.
Please reduce the average %(class)s transmission rate
-of the slice %(limit)s per %(period)s.
+of the slice
to
%(limit)s per %(period)s.
""".lstrip()
""".lstrip()
@@
-159,11
+160,11
@@
class Slice:
# If/when PLC switches to byte limits, the avgrates wont be used as
# slice attributes and will return as 0
if (avgrate != 0):
# If/when PLC switches to byte limits, the avgrates wont be used as
# slice attributes and will return as 0
if (avgrate != 0):
- self.ByteMax =
avgrate * period
+ self.ByteMax =
int(avgrate * period / 8)
self.ByteThresh = int(self.ByteMax * .8)
if (avgexemptrate != 0):
self.ByteThresh = int(self.ByteMax * .8)
if (avgexemptrate != 0):
- self.ExemptByteMax =
avgexemptrate * period
+ self.ExemptByteMax =
int(avgexemptrate * period / 8)
self.ExemptByteThresh = int(self.ExemptByteMax * .8)
except Exception, err:
self.ExemptByteThresh = int(self.ExemptByteMax * .8)
except Exception, err:
@@
-204,13
+205,6
@@
class Slice:
# Query Node Manager for max rate overrides
self.updateSliceAttributes()
# Query Node Manager for max rate overrides
self.updateSliceAttributes()
- if verbose:
- print("\n%s slice attributes "\
- "maxrate %s, maxexemptrate %s" % \
- (self.name,
- bwlimit.format_tc_rate(maxrate),
- bwlimit.format_tc_rate(maxexemptrate)))
-
# Prepare message parameters from the template
message = ""
params = {'slice': self.name, 'hostname': socket.gethostname(),
# Prepare message parameters from the template
message = ""
params = {'slice': self.name, 'hostname': socket.gethostname(),
@@
-221,7
+215,9
@@
class Slice:
if bytes >= (self.bytes + self.ByteThresh):
new_maxrate = \
if bytes >= (self.bytes + self.ByteThresh):
new_maxrate = \
- int((self.ByteMax - self.bytes + bytes)/(period - time.time() - self.time))
+ int((self.ByteMax - (bytes - self.bytes))/(period - int(time.time() - self.time)))
+ if new_maxrate < default_MinRate:
+ new_maxrate = default_MinRate
else:
new_maxrate = maxrate
else:
new_maxrate = maxrate
@@
-234,17
+230,19
@@
class Slice:
if verbose:
print "%(slice)s %(class)s " \
if verbose:
print "%(slice)s %(class)s " \
- "%(bytes)s of %(limit)s (%(new_maxrate)s maxrate)" % \
+ "%(bytes)s of %(limit)s (%(new_maxrate)s
/s
maxrate)" % \
params
# Cap low bandwidth burst rate
if new_maxrate != maxrate:
message += template % params
params
# Cap low bandwidth burst rate
if new_maxrate != maxrate:
message += template % params
- print "%(slice)s %(class)s capped at %(new_maxrate)s " % params
+ print "%(slice)s %(class)s capped at %(new_maxrate)s
/s
" % params
if exemptbytes >= (self.exemptbytes + self.ExemptByteThresh):
new_maxexemptrate = \
if exemptbytes >= (self.exemptbytes + self.ExemptByteThresh):
new_maxexemptrate = \
- int((self.ExemptByteMax - (self.bytes + bytes))/(period - (time.time() - self.time)))
+ int((self.ExemptByteMax - (self.bytes - bytes))/(period - int(time.time() - self.time)))
+ if new_maxexemptrate < default_MinRate:
+ new_maxexemptrate = default_MinRate
else:
new_maxexemptrate = maxexemptrate
else:
new_maxexemptrate = maxexemptrate
@@
-257,12
+255,12
@@
class Slice:
if verbose:
print "%(slice)s %(class)s " \
if verbose:
print "%(slice)s %(class)s " \
- "%(bytes)s of %(limit)s (%(new_maxrate)s maxrate)" % params
+ "%(bytes)s of %(limit)s (%(new_maxrate)s
/s
maxrate)" % params
# Cap high bandwidth burst rate
if new_maxexemptrate != maxexemptrate:
message += template % params
# Cap high bandwidth burst rate
if new_maxexemptrate != maxexemptrate:
message += template % params
- print "%(slice)s %(class)s capped at %(new_maxexemptrate)s" % params
+ print "%(slice)s %(class)s capped at %(new_maxexemptrate)s
/s
" % params
# Apply parameters
if new_maxrate != maxrate or new_maxexemptrate != maxexemptrate:
# Apply parameters
if new_maxrate != maxrate or new_maxexemptrate != maxexemptrate:
@@
-338,11
+336,11
@@
def main():
(version, slices) = pickle.load(f)
f.close()
# Check version of data file
(version, slices) = pickle.load(f)
f.close()
# Check version of data file
- if version != "$Id: bwmon.py,v 1.
5.2.2 2006/08/21 21:27:35 mlhuang
Exp $":
+ if version != "$Id: bwmon.py,v 1.
17 2007/01/03 20:15:06 faiyaza
Exp $":
print "Not using old version '%s' data file %s" % (version, datafile)
raise Exception
except Exception:
print "Not using old version '%s' data file %s" % (version, datafile)
raise Exception
except Exception:
- version = "$Id: bwmon.py,v 1.
5.2.2 2006/08/21 21:27:35 mlhuang
Exp $"
+ version = "$Id: bwmon.py,v 1.
17 2007/01/03 20:15:06 faiyaza
Exp $"
slices = {}
# Get special slice IDs
slices = {}
# Get special slice IDs