Tushar, queueing delay currently does not include delay for the packets that are waiting at the network interface for being injected into the network. The queueing delay for these packets will be very high in case of a deadlock in the routing protocol.

--
Nilay

On Tue, 20 Mar 2012, Tushar Krishna wrote:

Hi Nilay, Yes this is precisely the queueing delay stat. If the protocol generated a message at time t1, it got injected from the source NI into the first router at time t2, and it is received by the destination NI at time t2, then: queueing delay = (t2-t1) network delay = (t3-t2)

The network delay and queueing stats are updated AFTER the packet is received.
In the simulation you ran, since there was a deadlock, everything just stopped.
If everything is received (say using a Mesh), the queueing delay will show up 
to be extremely high if the network is extremely congested/there are not enough 
buffers/VCs.

cheers,
Tushar


On Mar 20, 2012, at 12:52 PM, Nilay Vaish wrote:

Tushar, thanks for the help. The stat that I found useful was the number of 
packets that are waiting at network interfaces for being routed, and the 
average time for which these packets have been waiting. I think this time 
should be part of the queueing delay stat that is already present. What do you 
think?

--
Nilay


On Mon, 19 Mar 2012, Tushar Krishna wrote:

Hi Nilay,
Seems like the problem is deadlock in the Torus topology.
The code enforces XY routing in the Torus (similar to a Mesh) but since there 
are rings in every row/column, it leads to a cyclic dependency within a 
dimension at high loads.
Each response message becomes 5 flits increasing load in that vnet, which is 
why this artefact is being seen. I never tested the Torus at high-loads before 
so missed this.
I notice that decreasing the injection rate to 0.1 does not show this problem.

If you change the topology to Mesh, you will notice that all messages are 
received.
Even in a mesh, though, you will have to decrease the injection rate, since 0.3 
is post saturation.
[0.3 packets/node/cycle => 0.3x(1+1+5)/3 flits/node/cycle = 0.7 
flits/node/cycle. An 8x8 mesh theoretically saturates before 0.5 flits/node/cycle].

There are a bunch of deadlock free routing algorithms for torii, one of which 
will have to be implemented I guess for the Torus topology to be robust.
Should we add a warning in that topology file about this?

Thanks,
Tushar
PS: I am pushing a patch for review that (1) breaks the stats on a per vnet 
basis which is useful for such debugging etc, and (2) cleans up redundant code 
between flexible and fixed networks.


On 03/18/2012 06:41 PM, Nilay Vaish wrote:
Tushar
I am using the network tester in gem5 with GARNET. I am observing a peculiar 
behavior when I run the following command --
./build/X86/gem5.fast ./configs/example/ruby_network_test.py --num-cpus=64 
--num-dirs=64 --topology=Torus --garnet-network=flexible --mesh-rows=8 
--sim-cycles=10000 -i 0.30 --random_seed=1
As you might recall, there three different types of messages generated by the 
network tester -- request, forward and response, and these are generated with 
ration 1:1:1. In the file ruby.stats, the number of responses that reach the 
directory controllers are way less than compared to the number of requests and 
forwards, the ratio being 10(request):10(forward):1(response) . It seems that 
the network interface at the cache controller is not able to issue most of the 
response messages and hence these keep waiting the in the queue at the input 
port.
Can you look into why this is happening?
Thanks
Nilay



_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to