mem: Add snoop traffic statistic
authorDavid Guillen Fandos <david.guillen@arm.com>
Thu, 21 Jul 2016 16:19:14 +0000 (17:19 +0100)
committerDavid Guillen Fandos <david.guillen@arm.com>
Thu, 21 Jul 2016 16:19:14 +0000 (17:19 +0100)
src/mem/coherent_xbar.cc
src/mem/coherent_xbar.hh

index f33a33b0f40e87a44a5ca93430de922760ce304e..c0d8ab03758d1a6dbf434c8143f52de6f54d626f 100644 (file)
@@ -317,8 +317,10 @@ CoherentXBar::recvTimingReq(PacketPtr pkt, PortID slave_port_id)
         pktSize[slave_port_id][master_port_id] += pkt_size;
         transDist[pkt_cmd]++;
 
-        if (is_express_snoop)
+        if (is_express_snoop) {
             snoops++;
+            snoopTraffic += pkt_size;
+        }
     }
 
     if (sink_packet)
@@ -415,8 +417,10 @@ CoherentXBar::recvTimingSnoopReq(PacketPtr pkt, PortID master_port_id)
             pkt->getAddr());
 
     // update stats here as we know the forwarding will succeed
+    unsigned int pkt_size = pkt->hasData() ? pkt->getSize() : 0;
     transDist[pkt->cmdToIndex()]++;
     snoops++;
+    snoopTraffic += pkt_size;
 
     // we should only see express snoops from caches
     assert(pkt->isExpressSnoop());
@@ -588,6 +592,7 @@ CoherentXBar::recvTimingSnoopResp(PacketPtr pkt, PortID slave_port_id)
     // stats updates
     transDist[pkt_cmd]++;
     snoops++;
+    snoopTraffic += pkt_size;
 
     return true;
 }
@@ -739,7 +744,9 @@ CoherentXBar::recvAtomicSnoop(PacketPtr pkt, PortID master_port_id)
             pkt->cmdString());
 
     // add the request snoop data
+    unsigned int pkt_size = pkt->hasData() ? pkt->getSize() : 0;
     snoops++;
+    snoopTraffic += pkt_size;
 
     // forward to all snoopers
     std::pair<MemCmd, Tick> snoop_result;
@@ -965,6 +972,11 @@ CoherentXBar::regStats()
         .desc("Total snoops (count)")
     ;
 
+    snoopTraffic
+        .name(name() + ".snoopTraffic")
+        .desc("Total snoop traffic (bytes)")
+    ;
+
     snoopFanout
         .init(0, snoopPorts.size(), 1)
         .name(name() + ".snoop_fanout")
index 8c55b59da5779d12dabac5cd9dd6b908ea8f439b..0f641664d299eb859579bb1ccc96c30157808ae9 100644 (file)
@@ -394,6 +394,7 @@ class CoherentXBar : public BaseXBar
     bool sinkPacket(const PacketPtr pkt) const;
 
     Stats::Scalar snoops;
+    Stats::Scalar snoopTraffic;
     Stats::Distribution snoopFanout;
 
   public: