在后台主机上运行python程序时mininet程序执行时间的差异

2024-09-28 04:48:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建网络拓扑,例如(H1、H3、H5、H7、H9)<-&燃气轮机;S1<-&燃气轮机;S2<-&燃气轮机;(H2、H4、H6、H8、H10),其中“H”是主机,“S”是交换机。每台主机通过一条链路连接到交换机。我已经编写了自己的传输协议,并希望在5条链路上同时检查其性能,即(H1-S1-S2-H2,是一条链路)。我使用python脚本来自动化这个方法,因为我不想对每个主机使用xterm并输入命令

python脚本如下所示

from mininet.topo import Topo
from mininet.net import Mininet
from mininet.node import CPULimitedHost
from mininet.link import TCLink
from mininet.util import dumpNodeConnections
from mininet.log import setLogLevel, info
from mininet.node import RemoteController
from mininet.cli import CLI
from time import sleep
class MyTopo( Topo ):
"Simple topology example."

def __init__( self ):
    "Create custom topo."

    # Initialize topology
    Topo.__init__( self )

    # Add hosts and switches
    leftHost1 = self.addHost( 'h1', cpu=0.05)
    rightHost1 = self.addHost( 'h2', cpu=0.05)
    leftSwitch = self.addSwitch( 's3' )
    rightSwitch = self.addSwitch( 's4' )
    leftHost2 = self.addHost( 'h3', cpu=0.05)
    rightHost2 = self.addHost( 'h4', cpu=0.05)
    leftHost3 = self.addHost( 'h5', cpu=0.05)
    rightHost3 = self.addHost( 'h6', cpu=0.05)
    leftHost4 = self.addHost( 'h7', cpu=0.05)
    rightHost4 = self.addHost( 'h8', cpu=0.05)
    leftHost5 = self.addHost( 'h9', cpu=0.05)
    rightHost5 = self.addHost( 'h10', cpu=0.05)
    leftHost6 = self.addHost( 'h11', cpu=0.05)
    rightHost6 = self.addHost( 'h12', cpu=0.05)
    leftHost7 = self.addHost( 'h13', cpu=0.05)
    rightHost7 = self.addHost( 'h14', cpu=0.05)
    leftHost8 = self.addHost( 'h15', cpu=0.05)
    rightHost8 = self.addHost( 'h16', cpu=0.05)
    leftHost9 = self.addHost( 'h17', cpu=0.05)
    rightHost9 = self.addHost( 'h18', cpu=0.05)
    leftHost10 = self.addHost( 'h19', cpu=0.05)
    rightHost10 = self.addHost( 'h20', cpu=0.05)


    # Add links
    self.addLink( leftHost1, leftSwitch)
    self.addLink( leftHost2, leftSwitch)
    self.addLink( leftHost3, leftSwitch)
    self.addLink( leftHost4, leftSwitch)
    self.addLink( leftHost5, leftSwitch)
    self.addLink( leftHost6, leftSwitch)
    self.addLink( leftHost7, leftSwitch)
    self.addLink( leftHost8, leftSwitch)
    self.addLink( leftHost9, leftSwitch)
    self.addLink( leftHost10, leftSwitch)
    self.addLink( leftSwitch, rightSwitch, bw=10, delay='10ms', loss=1)
    self.addLink( rightSwitch, rightHost1 )
    self.addLink( rightSwitch, rightHost2 )
    self.addLink( rightSwitch, rightHost3 )
    self.addLink( rightSwitch, rightHost4 ) 
    self.addLink( rightSwitch, rightHost5 )
    self.addLink( rightSwitch, rightHost6 )
    self.addLink( rightSwitch, rightHost7 ) 
    self.addLink( rightSwitch, rightHost8 ) 
    self.addLink( rightSwitch, rightHost9 ) 
    self.addLink( rightSwitch, rightHost10 ) 



def run():
#c = RemoteController('c', '0.0.0.0', 6633)
topo = MyTopo()
net = Mininet(topo=topo, host=CPULimitedHost, link=TCLink)
#net.addController(c)
net.start()
h1 = net.get('h1')
h2 = net.get('h2')
h3 = net.get('h3')
h4 = net.get('h4')
h5 = net.get('h5')
h6 = net.get('h6')
h7 = net.get('h7')
h8 = net.get('h8')
h9 = net.get('h9')
h10 = net.get('h10')
h11 = net.get('h11')
h12 = net.get('h12')
h13 = net.get('h13')
h14 = net.get('h14')
h15 = net.get('h15')
h16 = net.get('h16')
h17 = net.get('h17')
h18 = net.get('h18')
h19 = net.get('h19')
h20 = net.get('h20')
h1.cmd('python receiver_socket.py 1000 10.0.0.1 > receiver1.txt &')
h3.cmd('python receiver_socket.py 1000 10.0.0.3 > receiver2.txt &')
h5.cmd('python receiver_socket.py 1000 10.0.0.5 > receiver3.txt &')
h7.cmd('python receiver_socket.py 1000 10.0.0.7 > receiver4.txt &')
h9.cmd('python receiver_socket.py 1000 10.0.0.9 > receiver5.txt &')
h11.cmd('python receiver_socket.py 1000 10.0.0.11 > receiver6.txt &')
h13.cmd('python receiver_socket.py 1000 10.0.0.13 > receiver7.txt &')
h15.cmd('python receiver_socket.py 1000 10.0.0.15 > receiver8.txt &')        
h2.cmdPrint('python test_thread_full.py 1000 0.01 10.0.0.1 8_pair/Ephemeral_Full/no_cross/10_OWD/1_10 1 > sender1.txt &')
h4.cmdPrint('python test_thread_full.py 1000 0.01 10.0.0.3 8_pair/Ephemeral_Full/no_cross/10_OWD/1_10 2 > sender2.txt &')
h6.cmdPrint('python test_thread_full.py 1000 0.01 10.0.0.5 8_pair/Ephemeral_Full/no_cross/10_OWD/1_10 3 > sender3.txt &')
h8.cmdPrint('python test_thread_full.py 1000 0.01 10.0.0.7 8_pair/Ephemeral_Full/no_cross/10_OWD/1_10 4 > sender4.txt &')
h10.cmdPrint('python test_thread_full.py 1000 0.01 10.0.0.9 8_pair/Ephemeral_Full/no_cross/10_OWD/1_10 5 > sender5.txt &')
h12.cmdPrint('python test_thread_full.py 1000 0.01 10.0.0.11 8_pair/Ephemeral_Full/no_cross/10_OWD/1_10 6 > sender6.txt &')
h14.cmdPrint('python test_thread_full.py 1000 0.01 10.0.0.13 8_pair/Ephemeral_Full/no_cross/10_OWD/1_10 7 > sender7.txt &')
h16.cmdPrint('python test_thread_full.py 1000 0.01 10.0.0.15 8_pair/Ephemeral_Full/no_cross/10_OWD/1_10 8 > sender8.txt ')

CLI(net)
net.stop()

# if the script is run directly (sudo custom/optical.py):
if __name__ == '__main__':
    setLogLevel('info')
    run()

但是问题在于这个python脚本执行命令所花费的时间。如果我通过打开每个主机的xterm来运行相同的命令,那么与运行python脚本相比,它花费的时间更少

我不知道是什么错误


Tags: frompyimportselftxtcmdgetnet

热门问题