Skip to content

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

@emasab

Description

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:

  • librdkafka version (1.x)
  • Apache Kafka version: <REPLACE with e.g., 0.10.2.3>
  • librdkafka client configuration: <REPLACE with e.g., message.timeout.ms=123, auto.reset.offset=earliest, ..>
  • Operating system: <REPLACE with e.g., Centos 5 (x64)>
  • Provide logs (with debug=.. as necessary) from librdkafka
  • Provide broker log excerpts
  • Critical issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions