Including changes to mnexec -c to reduce the number of
close() system calls, which may help with performance in
containers on Ubuntu 22.04.

Note that systemd-udevd also seems to be a cause of performance issues
and should probably be disabled while running Mininet.

Adding dbeug logging to test_simpleperf because it is failing
intermittently. (Note with packet loss it can fail, but this
is not how we should be testing it.)
This commit is contained in:
lantz
2023-05-02 18:29:26 -07:00
committed by GitHub
parent 0cefa0b8de
commit 88f14e946a
5 changed files with 17 additions and 8 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
Mininet Installation/Configuration Notes Mininet Installation/Configuration Notes
---------------------------------------- ----------------------------------------
Mininet 2.3.1b3 Mininet 2.3.1b4
--- ---
The supported installation methods for Mininet are 1) using a The supported installation methods for Mininet are 1) using a
+2 -2
View File
@@ -2,7 +2,7 @@ Mininet: Rapid Prototyping for Software Defined Networks
======================================================== ========================================================
*The best way to emulate almost any network on your laptop!* *The best way to emulate almost any network on your laptop!*
Mininet 2.3.1b3 Mininet 2.3.1b4
[![Build Status][1]](https://github.com/mininet/mininet/actions) [![Build Status][1]](https://github.com/mininet/mininet/actions)
@@ -70,7 +70,7 @@ Mininet includes:
### Python 3 Support ### Python 3 Support
- Mininet 2.3.1b3 supports Python 3 and Python 2 - Mininet 2.3.1b4 supports Python 3 and Python 2
- You can install both the Python 3 and Python 2 versions of - You can install both the Python 3 and Python 2 versions of
Mininet side by side, but the most recent installation will Mininet side by side, but the most recent installation will
+7 -1
View File
@@ -49,13 +49,19 @@ def perfTest( lossy=True ):
net.start() net.start()
info( "Dumping host connections\n" ) info( "Dumping host connections\n" )
dumpNodeConnections(net.hosts) dumpNodeConnections(net.hosts)
info( "Testing bandwidth between h1 and h4\n" ) info( "Testing bandwidth between h1 and h4 (lossy=%s)\n" % lossy )
h1, h4 = net.getNodeByName('h1', 'h4') h1, h4 = net.getNodeByName('h1', 'h4')
net.iperf( ( h1, h4 ), l4Type='UDP' ) net.iperf( ( h1, h4 ), l4Type='UDP' )
# Debugging
h1.cmd('jobs')
h4.cmd('jobs')
net.stop() net.stop()
if __name__ == '__main__': if __name__ == '__main__':
setLogLevel( 'info' ) setLogLevel( 'info' )
# Debug for now
if 'testmode' in argv:
setLogLevel( 'debug' )
# Prevent test_simpleperf from failing due to packet loss # Prevent test_simpleperf from failing due to packet loss
perfTest( lossy=( 'testmode' not in argv ) ) perfTest( lossy=( 'testmode' not in argv ) )
+6 -3
View File
@@ -19,9 +19,12 @@ class testSimplePerf( unittest.TestCase ):
# 10 Mb/s, plus or minus 20% tolerance # 10 Mb/s, plus or minus 20% tolerance
BW = 10 BW = 10
TOLERANCE = .2 TOLERANCE = .2
p = pexpect.spawn( 'python -m mininet.examples.simpleperf testmode' ) p = pexpect.spawn(
'python -m mininet.examples.simpleperf testmode' )
# Log since this seems to be failing intermittently
p.logfile = sys.stdout
# check iperf results # check iperf results
p.expect( "Results: \['10M', '([\d\.]+) .bits/sec", timeout=480 ) p.expect( "Results: \['10M', '([\d\.]+) .bits/sec", timeout=90 )
measuredBw = float( p.match.group( 1 ) ) measuredBw = float( p.match.group( 1 ) )
lowerBound = BW * ( 1 - TOLERANCE ) lowerBound = BW * ( 1 - TOLERANCE )
upperBound = BW + ( 1 + TOLERANCE ) upperBound = BW + ( 1 + TOLERANCE )
@@ -30,5 +33,5 @@ class testSimplePerf( unittest.TestCase ):
p.wait() p.wait()
if __name__ == '__main__': if __name__ == '__main__':
setLogLevel( 'warning' ) setLogLevel( 'debug' )
unittest.main() unittest.main()
+1 -1
View File
@@ -109,7 +109,7 @@ from mininet.util import ( quietRun, fixLimits, numCores, ensureRoot,
from mininet.term import cleanUpScreens, makeTerms from mininet.term import cleanUpScreens, makeTerms
# Mininet version: should be consistent with README and LICENSE # Mininet version: should be consistent with README and LICENSE
VERSION = "2.3.1b3" VERSION = "2.3.1b4"
class Mininet( object ): class Mininet( object ):
"Network emulation with hosts spawned in network namespaces." "Network emulation with hosts spawned in network namespaces."