Function caminos_lib::traffic::new_traffic[][src]

pub fn new_traffic(arg: TrafficBuilderArgument<'_>) -> Box<dyn Traffic>
Expand description

Build a new traffic.

Base traffics.

Homogeneous traffic

Is a traffic where all servers behave equally and uniform in time. Some pattern is generated by servers number of involved servers along the whole simulation. Each server tries to use its link toward the network a load fraction of the cycles. The generated messages has a size in phits of message_size. The generation is the typical Bernoulli process.

HomogeneousTraffic{
	pattern:Uniform,
	servers:1000,
	load: 0.9,
	message_size: 16,
}

Burst

In the Burst traffic each of the involved servers has a initial list of messages_per_server messages to emit. When all the messages are consumed the simulation is requested to end.

Burst{
	pattern:Uniform,
	servers:1000,
	messages_per_server:200,
	message_size: 16,
}

Reactive

A Reactive traffic is composed of an action_traffic generated normally, whose packets, when consumed create a response by the reaction_traffic. If both subtraffics are requesting to end and there is no pending message the reactive traffic also requests to end.

Reactive{
	action_traffic:HomogeneousTraffic{...},
	reaction_traffic:HomogeneousTraffic{...},
}

Operations

TrafficSum

Generates several traffic at once, if the total load allows it.

TrafficSum{
	list: [HomogeneousTraffic{...},... ],
}

ShiftedTraffic

A ShiftedTraffic shifts a given traffic a certain amount of servers. Yu should really check if some pattern transformation fit your purpose, since it will be simpler.

ShiftedTraffic{
	traffic: HomogeneousTraffic{...},
	shift: 50,
}

ProductTraffic

A ProductTraffic divides the servers into blocks. Each group generates traffic following the block_traffic, but instead of having the destination in the same block it is selected a destination by using the global_pattern of the block. Blocks of interest are

  • The servers attached to a router. Then if the global_pattern is a permutation, all the servers will comunicate with servers attached to the same router. This can stress the network a lot more than a permutation of servers.
  • All servers in a group of a dragonfly. If the global_pattern is a permutation, there is only a global link between groups, and Shortest routing is used, then all the packets generated in a group will try by the same global link. Other global links being unused. Note there is also a product at pattern level, which may be easier to use.
ProductTraffic{
	block_size: 10,
	block_traffic: HomogeneousTraffic{...},
	global_pattern: RandomPermutation,
}

SubRangeTraffic

A SubRangeTraffic makes servers outise the range to not generate traffic.

SubRangeTraffic{
	start: 100,
	end: 200,
	traffic: HomogeneousTraffic{...},
}

TimeSequenced

Defines a sequence of traffics with the given finalization times.

TimeSequenced{ traffics: [HomogeneousTraffic{…}, HomogeneousTraffic{…}], times: [2000, 15000], }