netperf_sysconf_antoine.py 3.52 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import simbricks.orchestration as cfg
import simbricks.configuration.system as sysc
import simbricks.configuration.utils as utils

def mk_sys():
  system = sysc.System()

  # create a host instance and a NIC instance then install the NIC on the host
  host0 = sysc.CorundumLinuxHost(system)
  pcie0 = sysc.PCIeIf(system)
  host0.if_add(pcie0)
  nic0 = sysc.CorundumNIC(system)
  nic0.add_ipv4('10.0.0.1')
  pcichannel0 = sysc.PCIeChannel(system)
  pcichannel0.install(pcie0, nic0.pcie_if)

  host1 = sysc.CorundumLinuxHost(system)
  pcie1 = sysc.PCIeIf(system)
  host1.if_add(pcie1)
  nic1 = sysc.CorundumNIC(system)
  nic1.add_ipv4('10.0.0.2')
  pcichannel1 = sysc.PCIeChannnel(system)
  pcichannel1.install(pcie1, nic1.pcie_if)

  switch = sysc.Switch(system)
  netif0 = sysc.EthIf(system)
  switch.if_add(netif0)
  netif1 = sysc.EthIf(system)
  switch.if_add(netif1)

  ethchannel0 = sysc.EthChannel(system)
  ethchannel0.install(nic0.eth_if, netif0)
  ethchannel1 = sysc.EthChannel(system)
  ethchannel1.install(nic1.eth_if, netif1)

  # configure the software to run on the host
  host0.app = sysc.NetperfClient(nic0.ipv4_addresses[0])
  host1.app = sysc.NetperfServer()
  return system


def mk_sys_sugared():
  system = sysc.System()

  # create a host instance and a NIC instance then install the NIC on the host
  host0 = sysc.CorundumLinuxHost(system)
  nic0 = sysc.CorundumNIC(system)
  host0.connect_pcie_dev(nic0)

  host1 = sysc.CorundumLinuxHost(system)
  nic1 = sysc.CorundumNIC(system)
  host1.connect_pcie_dev(nic2)

  utils.net.allocate_ipv4(system)

  switch = sysc.Switch(system)
  switch.connect_eth_dev(nic0)
  switch.connect_eth_dev(nic1)

  # configure the software to run on the host
  host0.app = sysc.NetperfClient(nic0.ipv4_addresses[0])
  host1.app = sysc.NetperfServer()
  return system


import simbricks.configuration.impl as implc

def instantiate_simple

"""
Execution Config
"""
for host_type in host_types:
    for nic_type in nic_types:
        for net_type in net_types:
            e = exp.Experiment(
                'n-' + host_type + '-' + nic_type + '-' + net_type
            )
            allobj = runobj.AllObj()

            # Host
            if host_type == 'gem5':
                host_sim = impl.Gem5Sim
            elif host_type == 'qemu':

                def qemu_sim(e):
                    h = impl.QemuSim(e)
                    h.sync = False
                    return h
                host_sim = qemu_sim

            elif host_type == 'qt':
                host_sim = impl.QemuSim
            else:
                raise NameError(host_type)
            
            # NIC
            if nic_type == 'bm':
                nic_sim = impl.CorundumBMNICSim
            elif nic_type == 'vr':
                nic_sim = impl.CorundumVerilatorNICSim
            else:
                raise NameError(nic_type)

            # Net
            if net_type == 'switch':
                net_sim = impl.SwitchBMSim
            else:
                raise NameError(net_type)


            host_inst0 = host_sim(e, allobj)
            host_inst0.add(host0)

            host_inst1 = host_sim(e, allobj)
            host_inst1.add(host1)

            nic_inst0 = nic_sim(e, allobj)
            nic_inst0.add(nic0)

            nic_inst1 = nic_sim(e, allobj)
            nic_inst1.add(nic1)

            net_inst = net_sim(e, allobj)
            net_inst.add(switch)
            
            print(e.name + "   all simulators:")
            sims = e.all_simulators()
            for sim in sims:
                print(sim)

            experiments.append(e)