aboutsummaryrefslogtreecommitdiffstats
path: root/library/cpp
diff options
context:
space:
mode:
authorarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-06-27 17:16:05 +0300
committerarcadia-devtools <arcadia-devtools@yandex-team.ru>2022-06-27 17:16:05 +0300
commit244fc68b04485d0d740b3e0befb4e52d6c9caf1f (patch)
tree04b6e302408ccc85a331d619b37ac997e955a9ec /library/cpp
parent9b125f6128d9d867117ec970348d2e8062a22cc5 (diff)
downloadydb-244fc68b04485d0d740b3e0befb4e52d6c9caf1f.tar.gz
intermediate changes
ref:4321fe5a69e3b93ba446bc212e9b4668fff799c8
Diffstat (limited to 'library/cpp')
-rw-r--r--library/cpp/actors/interconnect/interconnect_counters.cpp14
-rw-r--r--library/cpp/actors/interconnect/interconnect_counters.h4
-rw-r--r--library/cpp/actors/interconnect/interconnect_tcp_input_session.cpp4
-rw-r--r--library/cpp/actors/interconnect/interconnect_tcp_session.cpp4
4 files changed, 18 insertions, 8 deletions
diff --git a/library/cpp/actors/interconnect/interconnect_counters.cpp b/library/cpp/actors/interconnect/interconnect_counters.cpp
index 5d0b31737c..408f86cae9 100644
--- a/library/cpp/actors/interconnect/interconnect_counters.cpp
+++ b/library/cpp/actors/interconnect/interconnect_counters.cpp
@@ -165,8 +165,9 @@ namespace {
++*SpuriousWriteWakeups;
}
- void IncSendSyscalls() override {
+ void IncSendSyscalls(ui64 ns) override {
++*SendSyscalls;
+ *SendSyscallsNs += ns;
}
void IncInflyLimitReach() override {
@@ -197,8 +198,9 @@ namespace {
++*ch.IncomingEvents;
}
- void IncRecvSyscalls() override {
+ void IncRecvSyscalls(ui64 ns) override {
++*RecvSyscalls;
+ *RecvSyscallsNs += ns;
}
void AddTotalBytesRead(ui64 value) override {
@@ -284,7 +286,9 @@ namespace {
if (updateGlobal) {
OutputBuffersTotalSize = Counters->GetCounter("OutputBuffersTotalSize");
SendSyscalls = Counters->GetCounter("SendSyscalls", true);
+ SendSyscallsNs = Counters->GetCounter("SendSyscallsNs", true);
RecvSyscalls = Counters->GetCounter("RecvSyscalls", true);
+ RecvSyscallsNs = Counters->GetCounter("RecvSyscallsNs", true);
SpuriousReadWakeups = Counters->GetCounter("SpuriousReadWakeups", true);
UsefulReadWakeups = Counters->GetCounter("UsefulReadWakeups", true);
SpuriousWriteWakeups = Counters->GetCounter("SpuriousWriteWakeups", true);
@@ -319,8 +323,10 @@ namespace {
NMonitoring::TDynamicCounters::TCounterPtr QueueUtilization;
NMonitoring::TDynamicCounters::TCounterPtr SubscribersCount;
NMonitoring::TDynamicCounters::TCounterPtr SendSyscalls;
+ NMonitoring::TDynamicCounters::TCounterPtr SendSyscallsNs;
NMonitoring::TDynamicCounters::TCounterPtr ClockSkewMicrosec;
NMonitoring::TDynamicCounters::TCounterPtr RecvSyscalls;
+ NMonitoring::TDynamicCounters::TCounterPtr RecvSyscallsNs;
NMonitoring::TDynamicCounters::TCounterPtr UsefulReadWakeups;
NMonitoring::TDynamicCounters::TCounterPtr SpuriousReadWakeups;
NMonitoring::TDynamicCounters::TCounterPtr UsefulWriteWakeups;
@@ -475,7 +481,7 @@ namespace {
SpuriousWriteWakeups_->Inc();
}
- void IncSendSyscalls() override {
+ void IncSendSyscalls(ui64 /*ns*/) override {
SendSyscalls_->Inc();
}
@@ -507,7 +513,7 @@ namespace {
ch.IncomingEvents->Inc();
}
- void IncRecvSyscalls() override {
+ void IncRecvSyscalls(ui64 /*ns*/) override {
RecvSyscalls_->Inc();
}
diff --git a/library/cpp/actors/interconnect/interconnect_counters.h b/library/cpp/actors/interconnect/interconnect_counters.h
index b5a63b4551..205ccf35b1 100644
--- a/library/cpp/actors/interconnect/interconnect_counters.h
+++ b/library/cpp/actors/interconnect/interconnect_counters.h
@@ -30,7 +30,7 @@ public:
virtual void IncDisconnections() = 0;
virtual void IncUsefulWriteWakeups() = 0;
virtual void IncSpuriousWriteWakeups() = 0;
- virtual void IncSendSyscalls() = 0;
+ virtual void IncSendSyscalls(ui64 ns) = 0;
virtual void IncInflyLimitReach() = 0;
virtual void IncDisconnectByReason(const TString& s) = 0;
virtual void IncUsefulReadWakeups() = 0;
@@ -38,7 +38,7 @@ public:
virtual void SetPeerInfo(const TString& name, const TString& dataCenterId) = 0;
virtual void AddInputChannelsIncomingTraffic(ui16 channel, ui64 incomingTraffic) = 0;
virtual void IncInputChannelsIncomingEvents(ui16 channel) = 0;
- virtual void IncRecvSyscalls() = 0;
+ virtual void IncRecvSyscalls(ui64 ns) = 0;
virtual void AddTotalBytesRead(ui64 value) = 0;
virtual void UpdatePingTimeHistogram(ui64 value) = 0;
virtual void UpdateOutputChannelTraffic(ui16 channel, ui64 value) = 0;
diff --git a/library/cpp/actors/interconnect/interconnect_tcp_input_session.cpp b/library/cpp/actors/interconnect/interconnect_tcp_input_session.cpp
index cbb2d16e46..6c80ddd295 100644
--- a/library/cpp/actors/interconnect/interconnect_tcp_input_session.cpp
+++ b/library/cpp/actors/interconnect/interconnect_tcp_input_session.cpp
@@ -384,12 +384,14 @@ namespace NActors {
TString err;
LWPROBE_IF_TOO_LONG(SlowICReadFromSocket, ms) {
do {
+ const ui64 begin = GetCycleCountFast();
#ifndef _win_
recvres = iovcnt == 1 ? Socket->Recv(iovec->iov_base, iovec->iov_len, &err) : Socket->ReadV(iovec, iovcnt);
#else
recvres = Socket->Recv(iovec[0].iov_base, iovec[0].iov_len, &err);
#endif
- Metrics->IncRecvSyscalls();
+ const ui64 end = GetCycleCountFast();
+ Metrics->IncRecvSyscalls((end - begin) * 1'000'000 / GetCyclesPerMillisecond());
} while (recvres == -EINTR);
}
diff --git a/library/cpp/actors/interconnect/interconnect_tcp_session.cpp b/library/cpp/actors/interconnect/interconnect_tcp_session.cpp
index 1602f4b8b2..0f286153ea 100644
--- a/library/cpp/actors/interconnect/interconnect_tcp_session.cpp
+++ b/library/cpp/actors/interconnect/interconnect_tcp_session.cpp
@@ -581,12 +581,14 @@ namespace NActors {
TString err;
ssize_t r = 0;
do {
+ const ui64 begin = GetCycleCountFast();
#ifndef _win_
r = iovcnt == 1 ? Socket->Send(iovec[0].iov_base, iovec[0].iov_len, &err) : Socket->WriteV(iovec, iovcnt);
#else
r = Socket->Send(iovec[0].iov_base, iovec[0].iov_len, &err);
#endif
- Proxy->Metrics->IncSendSyscalls();
+ const ui64 end = GetCycleCountFast();
+ Proxy->Metrics->IncSendSyscalls((end - begin) * 1'000'000 / GetCyclesPerMillisecond());
} while (r == -EINTR);
LOG_DEBUG_IC_SESSION("ICS16", "written# %zd iovcnt# %d err# %s", r, iovcnt, err.data());