Previous - Up - Next

10.5   Performance

When using other connection types than port forwarding, Simics has to prevent the simulated network from being flooded with packets from the real network. If Simics buffered all incoming traffic while the simulated machine was handling it slower than it was arriving, or while the simulation was stopped, Simics would require arbitrarily large buffers for the incoming traffic.

This is prevented by limiting the amount of traffic that is allowed to enter the simulated network per simulated second. The amount of traffic allowed to enter the simulated network is determined by the tx_bandwidth and tx_packet_rate attributes of the real network object created for the connection, typically named real_net0. The unit of the tx_bandwidth attribute is bits per simulated second, and the unit of the tx_packet_rate attribute is packets per simulated second. You can set either to unlimited by setting them to 0, but this is not recommended unless you know that only a very limited amount of data will be received. The default is to allow 10 megabits per simulated second and an unlimited number of packets.

In addition to allowing the selected rate of traffic into the simulated network, Simics buffers traffic for an additional 0.1 seconds simulated time. This avoids dropping packets if there is a short peak in the traffic. If more packets arrives once this buffer is full, Simics will drop them.

If you want to get better performance out of the connection to the real network, you may want to alter the the tx_bandwidth and tx_packet_rate attributes. A good strategy is to set the tx_bandwidth attribute to the amount of traffic you would expect the simulated machine to be able to handle per simulated second, and then try to increase the tx_packet_rate from about 5000 and see at what packet rate you get the best performance.

For example, this will set the limit to 100 megabits and 10000 packets per simulated second:

simics> @conf.real_net0.tx_bandwidth = 100000000
simics> @conf.real_net0.tx_packet_rate = 10000

Previous - Up - Next