diff --git a/selfdrive/loggerd/loggerd.cc b/selfdrive/loggerd/loggerd.cc index e3444f3315..34605af488 100644 --- a/selfdrive/loggerd/loggerd.cc +++ b/selfdrive/loggerd/loggerd.cc @@ -180,6 +180,7 @@ void rotate_if_needed(LoggerdState *s) { void loggerd_thread() { // setup messaging typedef struct QlogState { + std::string name; int counter, freq; } QlogState; std::unordered_map qlog_states; @@ -195,7 +196,11 @@ void loggerd_thread() { SubSocket * sock = SubSocket::create(s.ctx, it.name); assert(sock != NULL); poller->registerSocket(sock); - qlog_states[sock] = {.counter = 0, .freq = it.decimation}; + qlog_states[sock] = { + .name = it.name, + .counter = 0, + .freq = it.decimation, + }; } // init logger @@ -219,6 +224,7 @@ void loggerd_thread() { // poll for new messages on all sockets for (auto sock : poller->poll(1000)) { // drain socket + int count = 0; QlogState &qs = qlog_states[sock]; Message *msg = nullptr; while (!do_exit && (msg = sock->receive(true))) { @@ -233,6 +239,12 @@ void loggerd_thread() { double seconds = (millis_since_boot() - start_ts) / 1000.0; LOGD("%lu messages, %.2f msg/sec, %.2f KB/sec", msg_count, msg_count / seconds, bytes_count * 0.001 / seconds); } + + count++; + if (count >= 50) { + LOGE("large volume of '%s' messages", qs.name.c_str()); + break; + } } } }