Daecheol You has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/40275 )
Change subject: mem-garnet: Added packet distribution stats
......................................................................
mem-garnet: Added packet distribution stats
Trace data and control traffic between all source-destination pairs.
This is for identifying packet distribution and bottleneck of the
interconnect network.
Change-Id: Iffc9c16fd1e02ab8f7c5382cec822bf57a43a057
JIRA: https://gem5.atlassian.net/browse/GEM5-861
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/40275
Reviewed-by: Srikant Bharadwaj <[email protected]>
Maintainer: Srikant Bharadwaj <[email protected]>
Tested-by: kokoro <[email protected]>
---
M src/mem/ruby/network/garnet/GarnetNetwork.cc
M src/mem/ruby/network/garnet/GarnetNetwork.hh
M src/mem/ruby/network/garnet/NetworkInterface.cc
3 files changed, 38 insertions(+), 0 deletions(-)
Approvals:
Srikant Bharadwaj: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/mem/ruby/network/garnet/GarnetNetwork.cc
b/src/mem/ruby/network/garnet/GarnetNetwork.cc
index 91015ff..c260247 100644
--- a/src/mem/ruby/network/garnet/GarnetNetwork.cc
+++ b/src/mem/ruby/network/garnet/GarnetNetwork.cc
@@ -500,6 +500,25 @@
.name(name() + ".avg_vc_load")
.flags(Stats::pdf | Stats::total | Stats::nozero | Stats::oneline)
;
+
+ // Traffic distribution
+ for (int source = 0; source < m_routers.size(); ++source) {
+ m_data_traffic_distribution.push_back(std::vector<Stats::Scalar
*>());
+ m_ctrl_traffic_distribution.push_back(std::vector<Stats::Scalar
*>());
+
+ for (int dest = 0; dest < m_routers.size(); ++dest) {
+ Stats::Scalar *data_packets = new Stats::Scalar();
+ Stats::Scalar *ctrl_packets = new Stats::Scalar();
+
+ data_packets->name(name() + ".data_traffic_distribution."
+ "n" +
+ std::to_string(source) + "." + "n" +
std::to_string(dest));
+ m_data_traffic_distribution[source].push_back(data_packets);
+
+ ctrl_packets->name(name() + ".ctrl_traffic_distribution."
+ "n" +
+ std::to_string(source) + "." + "n" +
std::to_string(dest));
+ m_ctrl_traffic_distribution[source].push_back(ctrl_packets);
+ }
+ }
}
void
@@ -554,6 +573,19 @@
out << "[GarnetNetwork]";
}
+void
+GarnetNetwork::update_traffic_distribution(RouteInfo route)
+{
+ int src_node = route.src_router;
+ int dest_node = route.dest_router;
+ int vnet = route.vnet;
+
+ if (m_vnet_type[vnet] == DATA_VNET_)
+ (*m_data_traffic_distribution[src_node][dest_node])++;
+ else
+ (*m_ctrl_traffic_distribution[src_node][dest_node])++;
+}
+
uint32_t
GarnetNetwork::functionalWrite(Packet *pkt)
{
diff --git a/src/mem/ruby/network/garnet/GarnetNetwork.hh
b/src/mem/ruby/network/garnet/GarnetNetwork.hh
index 63c1a2c..294f0f6 100644
--- a/src/mem/ruby/network/garnet/GarnetNetwork.hh
+++ b/src/mem/ruby/network/garnet/GarnetNetwork.hh
@@ -142,6 +142,8 @@
m_total_hops += hops;
}
+ void update_traffic_distribution(RouteInfo route);
+
protected:
// Configuration
int m_num_rows;
@@ -185,6 +187,9 @@
Stats::Scalar m_total_hops;
Stats::Formula m_avg_hops;
+ std::vector<std::vector<Stats::Scalar *>> m_data_traffic_distribution;
+ std::vector<std::vector<Stats::Scalar *>> m_ctrl_traffic_distribution;
+
private:
GarnetNetwork(const GarnetNetwork& obj);
GarnetNetwork& operator=(const GarnetNetwork& obj);
diff --git a/src/mem/ruby/network/garnet/NetworkInterface.cc
b/src/mem/ruby/network/garnet/NetworkInterface.cc
index dc37159..5c0216a 100644
--- a/src/mem/ruby/network/garnet/NetworkInterface.cc
+++ b/src/mem/ruby/network/garnet/NetworkInterface.cc
@@ -426,6 +426,7 @@
route.hops_traversed = -1;
m_net_ptr->increment_injected_packets(vnet);
+ m_net_ptr->update_traffic_distribution(route);
for (int i = 0; i < num_flits; i++) {
m_net_ptr->increment_injected_flits(vnet);
flit *fl = new flit(i, vc, vnet, route, num_flits, new_msg_ptr,
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/40275
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Iffc9c16fd1e02ab8f7c5382cec822bf57a43a057
Gerrit-Change-Number: 40275
Gerrit-PatchSet: 5
Gerrit-Owner: Daecheol You <[email protected]>
Gerrit-Reviewer: Daecheol You <[email protected]>
Gerrit-Reviewer: Matthew Poremba <[email protected]>
Gerrit-Reviewer: Srikant Bharadwaj <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-CC: Jason Lowe-Power <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s