This commit is contained in:
Alexander A. Klimov 2025-04-03 15:25:55 +02:00
parent d63e728e51
commit 84dc5dff72
2 changed files with 7 additions and 3 deletions

View File

@ -44,8 +44,9 @@ public:
void AddMessageSent(int bytes); void AddMessageSent(int bytes);
void AddMessageReceived(int bytes); void AddMessageReceived(int bytes);
void AddInputTimes(const AtomicDuration::Clock::duration& readTime, const AtomicDuration::Clock::duration& semaphoreTime, const AtomicDuration::Clock::duration& processTime) void AddInputTimes(const AtomicDuration::Clock::duration& waitTime, const AtomicDuration::Clock::duration& readTime, const AtomicDuration::Clock::duration& semaphoreTime, const AtomicDuration::Clock::duration& processTime)
{ {
m_InputWaitTime += waitTime;
m_InputReadTime += readTime; m_InputReadTime += readTime;
m_InputSemaphoreTime += semaphoreTime; m_InputSemaphoreTime += semaphoreTime;
m_InputProcessTime += processTime; m_InputProcessTime += processTime;
@ -74,6 +75,7 @@ private:
mutable RingBuffer m_BytesSent{60}; mutable RingBuffer m_BytesSent{60};
mutable RingBuffer m_BytesReceived{60}; mutable RingBuffer m_BytesReceived{60};
AtomicDuration m_InputWaitTime;
AtomicDuration m_InputReadTime; AtomicDuration m_InputReadTime;
AtomicDuration m_InputSemaphoreTime; AtomicDuration m_InputSemaphoreTime;
AtomicDuration m_InputProcessTime; AtomicDuration m_InputProcessTime;

View File

@ -66,7 +66,7 @@ void JsonRpcConnection::HandleIncomingMessages(boost::asio::yield_context yc)
return ch::duration_cast<ch::milliseconds>(d).count(); return ch::duration_cast<ch::milliseconds>(d).count();
}); });
AtomicDuration::Clock::time_point readStart, readEnd, processingStart; AtomicDuration::Clock::time_point waitStart, waitEnd, readStart, readEnd, processingStart;
m_Stream->next_layer().SetSeen(&m_Seen); m_Stream->next_layer().SetSeen(&m_Seen);
@ -77,7 +77,9 @@ void JsonRpcConnection::HandleIncomingMessages(boost::asio::yield_context yc)
if (m_Endpoint) { if (m_Endpoint) {
// Only once we receive at least one byte, we know there must be a message to read. // Only once we receive at least one byte, we know there must be a message to read.
if (!m_Stream->in_avail()) { if (!m_Stream->in_avail()) {
waitStart = AtomicDuration::Clock::now();
m_Stream->async_fill(yc); m_Stream->async_fill(yc);
waitEnd = AtomicDuration::Clock::now();
} }
// Only then we can start measuring the time it takes to read it. // Only then we can start measuring the time it takes to read it.
@ -124,7 +126,7 @@ void JsonRpcConnection::HandleIncomingMessages(boost::asio::yield_context yc)
MessageHandler(message); MessageHandler(message);
if (m_Endpoint) { if (m_Endpoint) {
m_Endpoint->AddInputTimes(readEnd - readStart, cpuBoundDuration, AtomicDuration::Clock::now() - processingStart); m_Endpoint->AddInputTimes(waitEnd - waitStart, readEnd - readStart, cpuBoundDuration, AtomicDuration::Clock::now() - processingStart);
} }
l_TaskStats.InsertValue(Utility::GetTime(), 1); l_TaskStats.InsertValue(Utility::GetTime(), 1);