5

I'm using a Raspberry Pi board and I would like to build a real time system. During the kernel configuration, I found the CONFIG_CPU_FREQ option, which (from the help section)

allows you to change the clock speed of the CPU on the fly. This is a nice method to save power, because the lower the CPU clock speed, the less power the CPU consumes.

That's a nice approach to consume less power but in real time applications this could lead to unpredictable behavior and high latencies.

Xenomai developers suggest to disable CONFIG_CPU_IDLE because (from here)

it allows the CPU to enter deep sleep states, increasing the time it takes to get out of these sleep states, hence the latency of an idle system. Also, on some CPU, entering these deep sleep states causes the timers used by Xenomai to stop functioning

I was wondering if disabling these two options could damage the cpu since the board does not come with a heat dissipation system? I imagine that, without these options, the cpu will be more reactive but it sounds like a CPU-Seppuku to me.

1 Answer 1

1

the board does not come with a heat dissipation system

This is the point.

Whatever the workload, real-timizing whatever Linux system will necessarily increase cpu load. Hence temperature.
And you are correct, one of the very first things to achieve on real time systems is to prevent the cpus to enter deep sleep states (the time taken to wake up would dramatically increase latency) leaving them no chance to stop heating the planet even when iddle.

The best answer we can provide here is to set these kernel knobs and then watch your temperature sensors at iddle. If they report a constantly increasing value then just forget about these settings.

And after all, what will you miss ? That is the second point.

You certainly do not plan real-timizing your Linux without precise / quantified expectations. Some guaranteed maximum amount of reaction time to some event when running some particular workload.
Depending on these expectations, your workload and the number of cores available, your system might just happily deliver with core running at lower frequencies or entering sleep states when idle.

So first fix your expectations and then benchmark!

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .