Track and log UV event loop ticks in debug builds

pull/935/head
Thomas Winget 5 years ago committed by Jason Rhinelander
parent 285a9a1dd5
commit 6acf7bff7e

@ -791,6 +791,12 @@ namespace libuv
{
if(uv_loop_init(&m_Impl) == -1)
return false;
#ifdef LOKINET_DEBUG
last_time = 0;
loop_run_count = 0;
#endif
m_Impl.data = this;
uv_loop_configure(&m_Impl, UV_LOOP_BLOCK_SIGNAL, SIGPIPE);
m_TickTimer.data = this;
@ -834,6 +840,16 @@ namespace libuv
{
if(m_Run)
{
#ifdef LOKINET_DEBUG
if ((uv_now(&m_Impl) - last_time) > 1000)
{
llarp::LogInfo("UV EVENT LOOP TICKS LAST SECOND: ", loop_run_count);
loop_run_count = 0;
last_time = uv_now(&m_Impl);
}
loop_run_count++;
#endif
uv_timer_start(&m_TickTimer, &OnTickTimeout, ms, 0);
uv_run(&m_Impl, UV_RUN_ONCE);
}
@ -954,4 +970,4 @@ bool
llarp_ev_udp_recvmany(struct llarp_udp_io* u, struct llarp_pkt_list* pkts)
{
return static_cast< libuv::udp_glue* >(u->impl)->RecvMany(pkts);
}
}

@ -98,6 +98,11 @@ namespace libuv
uv_loop_t m_Impl;
uv_timer_t m_TickTimer;
std::atomic< bool > m_Run;
#ifdef LOKINET_DEBUG
uint64_t last_time;
uint64_t loop_run_count;
#endif
};
} // namespace libuv

Loading…
Cancel
Save