confluentinc / librdkafka

The Apache Kafka C/C++ library
Other
7.37k stars 3.11k forks source link

Increased CPU usage caused by a loop lasting 1ms max #4684

Closed emasab closed 2 months ago

emasab commented 2 months ago

Description

When the main thread loop is awakened less than 1 ms before the expiration of a timeout, it is serving with a zero timeout, leading to increased CPU usage until the timeout is reached

How to reproduce

Put a debug log in some of the functions that are called in main loop, like rd_kafka_cgrp_serve logging the time difference with the first timer being checked. You'll notice that when it's awakened less than a millisecond before the timer, like 1-999 microseconds before, the conversion to milliseconds gives 0, so it's serving with a 0 timeout in a loop until it's reached.

Checklist

Please provide the following information:

emasab commented 2 months ago

Fixed in #4671