From 4ac1148e9fd2d961c006dc0ceca6f65afb2aae4d Mon Sep 17 00:00:00 2001 From: Bob Lantz Date: Tue, 6 Mar 2012 23:52:26 -0800 Subject: [PATCH] Example/test of link and CPU bandwidth limits. --- examples/limit.py | 52 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 examples/limit.py diff --git a/examples/limit.py b/examples/limit.py new file mode 100755 index 0000000..58e2ff7 --- /dev/null +++ b/examples/limit.py @@ -0,0 +1,52 @@ +#!/usr/bin/python + +""" +limit.py: example of using link and CPU limits +""" + +from mininet.net import Mininet +from mininet.link import TCIntf, Link +from mininet.node import CPULimitedHost +from mininet.topolib import TreeTopo +from mininet.util import custom, quietRun +from mininet.log import setLogLevel +from time import sleep + +def testLinkLimit( net ): + print '*** Testing network bandwidth limit' + net.iperf() + +def testCpuLimit( net ): + print '*** Testing CPU bandwidth limit' + h1, h2 = net.hosts + h1.cmd( 'while true; do a=1; done &' ) + h2.cmd( 'while true; do a=1; done &' ) + pid1 = h1.cmd( 'echo $!' ).strip() + pid2 = h2.cmd( 'echo $!' ).strip() + cmd = 'ps -p %s,%s -o pid,%%cpu,args' % ( pid1, pid2 ) + for i in range( 0, 5): + sleep( 1 ) + print quietRun( cmd ) + h1.cmd( 'kill %1') + h2.cmd( 'kill %1') + +def limit(): + "Example/test of link and CPU bandwidth limits" + # 1 Mbps interfaces limited using tc + intf1Mbps = custom( TCIntf, bw=1 ) + # Links consisting of two 10 Mbps interfaces + link1Mbps = custom( Link, intf=intf1Mbps, cls2=TCIntf ) + # Hosts with 30% of system bandwidth + host30pct = custom( CPULimitedHost, cpu=.3 ) + myTopo = TreeTopo( depth=1, fanout=2 ) + net = Mininet( topo=myTopo, + link=link1Mbps, + host=host30pct ) + net.start() + testLinkLimit( net ) + testCpuLimit( net ) + net.stop() + +if __name__ == '__main__': + setLogLevel( 'info' ) + limit()