Skip to content

Commit b09f198

Browse files
committed
Add Perf counters tx_bytes and rx_bytes
1 parent e1996d4 commit b09f198

5 files changed

Lines changed: 26 additions & 0 deletions

File tree

include/Homa/Perf.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ struct Stats {
3434

3535
/// CPU time spent actively processing Homa messages in cycles.
3636
uint64_t active_cycles;
37+
38+
/// Number of bytes sent by the transport.
39+
uint64_t tx_bytes;
40+
41+
/// Number of bytes received by the transport.
42+
uint64_t rx_bytes;
3743
};
3844

3945
/**

src/ControlPacket.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818

1919
#include <Homa/Driver.h>
2020

21+
#include "Perf.h"
22+
2123
namespace Homa {
2224
namespace Core {
2325
namespace ControlPacket {
@@ -42,6 +44,7 @@ send(Driver* driver, Driver::Address address, Args&&... args)
4244
packet->length = sizeof(PacketHeaderType);
4345
packet->address = address;
4446
packet->priority = driver->getHighestPacketPriority();
47+
Perf::counters.tx_bytes.add(packet->length);
4548
driver->sendPacket(packet);
4649
driver->releasePackets(&packet, 1);
4750
}

src/Perf.h

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ struct Counters {
7171
*/
7272
Counters()
7373
: active_cycles(0)
74+
, tx_bytes(0)
75+
, rx_bytes(0)
7476
{}
7577

7678
/**
@@ -84,6 +86,8 @@ struct Counters {
8486
void add(const Counters* other)
8587
{
8688
active_cycles.add(other->active_cycles);
89+
tx_bytes.add(other->tx_bytes);
90+
rx_bytes.add(other->rx_bytes);
8791
}
8892

8993
/**
@@ -92,10 +96,18 @@ struct Counters {
9296
void dumpStats(Stats* stats)
9397
{
9498
stats->active_cycles = active_cycles.get();
99+
stats->tx_bytes = tx_bytes.get();
100+
stats->rx_bytes = rx_bytes.get();
95101
}
96102

97103
/// CPU time spent actively processing Homa messages in cycles.
98104
Stat<uint64_t> active_cycles;
105+
106+
/// Number of bytes sent by the transport.
107+
Stat<uint64_t> tx_bytes;
108+
109+
/// Number of bytes received by the transport.
110+
Stat<uint64_t> rx_bytes;
99111
};
100112

101113
/**

src/Sender.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,7 @@ Sender::handleResendPacket(Driver::Packet* packet, Driver* driver)
231231
Driver::Packet* packet = info->packets->getPacket(i);
232232
packet->priority = resendPriority;
233233
// Packets will be sent at the priority their original priority.
234+
Perf::counters.tx_bytes.add(packet->length);
234235
driver->sendPacket(packet);
235236
}
236237
}
@@ -375,6 +376,7 @@ Sender::handleUnknownPacket(Driver::Packet* packet, Driver* driver)
375376
Driver::Packet* dataPacket = message->getPacket(0);
376377
assert(dataPacket != nullptr);
377378
dataPacket->priority = policy.priority;
379+
Perf::counters.tx_bytes.add(dataPacket->length);
378380
driver->sendPacket(dataPacket);
379381
message->state.store(OutMessage::Status::SENT);
380382
} else {
@@ -777,6 +779,7 @@ Sender::sendMessage(Sender::Message* message, Driver::Address destination)
777779
Driver::Packet* packet = message->getPacket(0);
778780
assert(packet != nullptr);
779781
packet->priority = policy.priority;
782+
Perf::counters.tx_bytes.add(packet->length);
780783
driver->sendPacket(packet);
781784
message->state.store(OutMessage::Status::SENT);
782785
} else {
@@ -985,6 +988,7 @@ Sender::trySend()
985988
}
986989
// ... if not, send away!
987990
packet->priority = info->priority;
991+
Perf::counters.tx_bytes.add(packet->length);
988992
driver->sendPacket(packet);
989993
int packetDataBytes =
990994
packet->length - info->packets->TRANSPORT_HEADER_LENGTH;

src/TransportImpl.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ TransportImpl::processPackets()
103103
Driver::Packet* packet = packets[i];
104104
assert(packet->length >=
105105
Util::downCast<int>(sizeof(Protocol::Packet::CommonHeader)));
106+
Perf::counters.rx_bytes.add(packet->length);
106107
Protocol::Packet::CommonHeader* header =
107108
static_cast<Protocol::Packet::CommonHeader*>(packet->payload);
108109
switch (header->opcode) {

0 commit comments

Comments
 (0)