Bug 216702 - Non-rt sleep is extremely inaccurate
Summary: Non-rt sleep is extremely inaccurate
Status: NEW
Alias: None
Product: Alternate Trees
Classification: Unclassified
Component: rt (show other bugs)
Hardware: All Linux
: P1 high
Assignee: alt-trees_rt
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2022-11-17 16:48 UTC by Victor Lopez
Modified: 2022-11-18 20:36 UTC (History)
0 users

See Also:
Kernel Version: 5.19, 6.0, 5.16
Subsystem:
Regression: No
Bisected commit-id:


Attachments
Code to sleep for 10ms, print elapsed time if over 20ms (455 bytes, text/x-csrc)
2022-11-17 16:48 UTC, Victor Lopez
Details

Description Victor Lopez 2022-11-17 16:48:20 UTC
Created attachment 303195 [details]
Code to sleep for 10ms, print elapsed time if over 20ms

std::this_thread::sleep_for and other types of sleep in non realtime tasks are extremely inaccurate on some RT kernels.
A sleep of 10ms may sometimes take over 700ms to complete.
The PC is idle, and there are no RT tasks running.

This has been tested on modern Intel cpus (1165G7 and 1260p) as well as Ryzen 4800HS.

I have tested many combinations of CPU governors and performance settings but the problem is not fixed by those.

I have tried  5.10, 5.16, 5.19 and 6.0 and all except 5.10 exhibit the same behavior.

With 5.10 kernel, I may run the sample code for 20 minutes and get 3-4 messages about the sleep taking at most 25ms.

With the other kernels, multiple times per minute I get sleeps of up to 700ms.

I have tried the same kernels without RT patch on the same computers, and the problem does not occur.

I have built the kernels myself, and have also tried with the ones from: 
https://packages.debian.org/search?arch=amd64&keywords=linux-image-rt

I have tried using the config from 5.10 on 6.0 kernel, but the problem still appears on the 6.0 rt kernel.
Comment 1 Victor Lopez 2022-11-18 20:36:20 UTC
Kernel 6.1-rc5 with v6.1-rc5-rt3 exhibits the same problem too 7-8 messages per minute. 

5.16.2 with 5.16.2-rt18works better, 1-2 messages per minute.

5.15.49 with 5.15.49-rt47  works almost flawlessly.

Note You need to log in before you can comment on or make changes to this bug.