X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=python%2Fbwlimit.py;h=a9e204a3a299100eba525df992f9df60e16738e4;hb=a6e1134d8bdb41b0146cdac83e4e82909e74cb47;hp=7b3cf050e0b66e59ad255e8bb58c723387898447;hpb=689cbb7f0e03bf8695d80247078855759545e53c;p=util-vserver-pl.git diff --git a/python/bwlimit.py b/python/bwlimit.py index 7b3cf05..a9e204a 100644 --- a/python/bwlimit.py +++ b/python/bwlimit.py @@ -125,6 +125,8 @@ cburst = None # | | # 1:10 (8bit, 5mbit) 1:20 (8bit, 1gbit) # | | +# 1:100 (8bit, 5mbit) | +# | | # 1:1000 (8bit, 5mbit), 1:2000 (8bit, 1gbit), # 1:1001 (8bit, 5mbit), 1:2001 (8bit, 1gbit), # 1:1002 (1mbit, 5mbit), 1:2002 (1mbit, 1gbit), @@ -325,7 +327,10 @@ def stop(dev = dev): ''' Turn off all queing. Stops all slice HTBS and reverts to pfifo_fast (the default). ''' - tc("qdisc del dev %s root" % dev) + try: + for i in range(0,2): + tc("qdisc del dev %s root" % dev) + except: pass def init(dev = dev, bwcap = bwmax): @@ -364,6 +369,12 @@ def init(dev = dev, bwcap = bwmax): tc("class add dev %s parent 1:1 classid 1:10 htb rate %dbit ceil %dbit" % \ (dev, bwmin, bwcap)) + # Set up a subclass for DRL(Distributed Rate Limiting). + # DRL will directly modify that subclass implementing the site limits. + tc("class add dev %s parent 1:10 classid 1:100 htb rate %dbit ceil %dbit" % \ + (dev, bwmin, bwcap)) + + # Set up a subclass that represents "exemption" from the node # bandwidth cap. Once the node bandwidth cap is reached, bandwidth # to exempt destinations can still be fairly shared up to bwmax. @@ -554,7 +565,7 @@ def on(xid, dev = dev, share = None, minrate = None, maxrate = None, minexemptra minexemptrate = maxexemptrate # Set up subclasses for the slice - tc("class replace dev %s parent 1:10 classid 1:%x htb rate %dbit ceil %dbit quantum %d" % \ + tc("class replace dev %s parent 1:100 classid 1:%x htb rate %dbit ceil %dbit quantum %d" % \ (dev, default_minor | xid, minrate, maxrate, share * quantum)) tc("class replace dev %s parent 1:20 classid 1:%x htb rate %dbit ceil %dbit quantum %d" % \ @@ -570,8 +581,8 @@ def on(xid, dev = dev, share = None, minrate = None, maxrate = None, minexemptra (dev, exempt_minor | xid, exempt_minor | xid)) -def set(xid, share = None, minrate = None, maxrate = None, minexemptrate = None, maxexemptrate = None): - on(xid = xid, share = share, +def set(xid, share = None, minrate = None, maxrate = None, minexemptrate = None, maxexemptrate = None, dev = dev ): + on(xid = xid, dev = dev, share = share, minrate = minrate, maxrate = maxrate, minexemptrate = minexemptrate, maxexemptrate = maxexemptrate) @@ -668,6 +679,9 @@ def main(): elif opt == '-h': usage() + if bwcap == -1: + return 0 + if len(argv): if argv[0] == "init" or (argv[0] == "on" and len(argv) == 1): # (Re)initialize