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 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_InputSemaphoreTime += semaphoreTime;
m_InputProcessTime += processTime;
@ -74,6 +75,7 @@ private:
mutable RingBuffer m_BytesSent{60};
mutable RingBuffer m_BytesReceived{60};
AtomicDuration m_InputWaitTime;
AtomicDuration m_InputReadTime;
AtomicDuration m_InputSemaphoreTime;
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();
});
AtomicDuration::Clock::time_point readStart, readEnd, processingStart;
AtomicDuration::Clock::time_point waitStart, waitEnd, readStart, readEnd, processingStart;
m_Stream->next_layer().SetSeen(&m_Seen);
@ -77,7 +77,9 @@ void JsonRpcConnection::HandleIncomingMessages(boost::asio::yield_context yc)
if (m_Endpoint) {
// Only once we receive at least one byte, we know there must be a message to read.
if (!m_Stream->in_avail()) {
waitStart = AtomicDuration::Clock::now();
m_Stream->async_fill(yc);
waitEnd = AtomicDuration::Clock::now();
}
// 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);
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);