Challenging idle period predictions - Where are we ?
summary
Interrupt-driven idle-state selection uses a per-CPU per-interrupt circular timing buffer (upstream irq_timings) that records recent timestamps, reduces values with log2 bucketing + EMA and then runs a lightweight suffix-array pattern search (max period 5, 15-event history) to predict the next device wakeup. An embedded governor implements this and compares against manual, random, modulo, shallow and deep baselines: prediction adds ~24 µs vs 14 µs baseline but yields ~24–27% higher frame-count and 35–45% faster frame rendering with only ~2–4% energy change; deepest states sometimes increase energy ~5%.
AI-written summary · about
chapters (27)
- 0:00Start
- 0:29Agenda
- 2:51Consumption vs idle states
- 6:00Computing the target residency
- 7:22Idle states characteristics
- 8:47Choosing the idle state
- 9:50Sleep durations
- 12:50Experiments with governors
- 16:34Exoplayer audio vs governors (no frame dropped)
- 17:14Observations
- 18:08What is going on? (Jankbench test1)
- 21:58How behave devices?
- 24:11How behaves the idle task rescheduling
- 24:31How behave the timers?
- 25:45Hypothesis
- 26:21Wake up sources
- 27:02Predicting the interrupts from devices
- 28:48Store the interrupts and timestamp
- 30:01Discretization of intervals
- 31:39Compute intervals on log2 basis
- 35:51Tracking signals with EMA
- 36:32Store in EMA array
- 41:20Search with array suffix
- 47:38Selection latency
- 49:52Measurements - Jankbench test2
- 50:58Measurements - exoplayer (ogg)
- 51:24Conclusion
related talks
30mHow to get realistic c-state latency and residency?
31mMeasuring the Impacts of the Preempt-RT Patch
09mInterrupts: The Hidden World of Linux Performance
21mDrift, Jitter, and Expectations: A Story of Kernel Timers
29mModernizing Resource Management in Embedded Systems Using eBPF
46mDevice Power Management: Journey to 5uA
49mResponding in a Timely Manner
42mWhen the OS gets in the way
