| Bug #115860 | CPU IDLE consumption regression introduced in 8.0.30 | ||
|---|---|---|---|
| Submitted: | 19 Aug 2024 11:03 | Modified: | 19 Aug 2024 13:17 |
| Reporter: | Volodymyr Zol | Email Updates: | |
| Status: | Can't repeat | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S5 (Performance) |
| Version: | 8.0.37 | OS: | Linux |
| Assigned to: | CPU Architecture: | x86 | |
| Tags: | idle | ||
[19 Aug 2024 12:05]
MySQL Verification Team
Hi MR. Zol, Thank you for your bug report. However, we can not repeat it. Please, do notice that this is only a forum for bug reports with fully repeatable test cases. Each of these test cases should consist of a set of SQL statements , which when run, always leads to the condition described. When we receive such a test case, we try to repeat it with the our latest production binary and if we manage to repeat it, we then examine whether it is a bug or not. We have not received such a test case from you. Can't repeat.
[19 Aug 2024 13:17]
Volodymyr Zol
You can compare CPU time consumption while idle between 8.0.26 and 8.0.30. We're not talking about 100% CPU consumption, it's still quite small, around 0.7-1% spikes. However, this is roughly twice as much as it was before version 8.0.30
[19 Aug 2024 13:36]
MySQL Verification Team
Hi, This is only a forum for bug reports with fully repeatable test cases. Each of these test cases should consist of a set of SQL statements , which when run, always leads to the condition described. When we receive such a test case, we try to repeat it with the our latest production binary and if we manage to repeat it, we then examine whether it is a bug or not. We have not received such a test case from you.
[20 Aug 2024 8:26]
Jakub Lopuszanski
a flamegraph of an idle mysqld on tetra02
Attachment: v.idle.svg (image/svg+xml, text), 120.86 KiB.

Description: MySQL server has been continuously consuming CPU while idle since version 8.0.30. In this version, the log_files_governor function was introduced, which performs tasks with a 10ms(!) sleep interval. This seems excessive: os_event_wait_time_low(log.m_files_governor_event, std::chrono::milliseconds{10}, sig_count); During some code research, I found several threads using os_event_wait_for with dynamically changing timeouts per cycle. Was this 10ms fixed interval intentional? Could it be made less frequent? How to repeat: Install version 8.0.30+ and watch CPU consumption