[PROPOSAL] CPU Shielding capability


Bird, Tim <Tim.Bird@...>
 

; Summary: CPU Shielding capability

; Proposer: Tim Bird, Sony Mobile

== Description ==
In multi-processor realtime systems, it is sometimes desirable to isolate some CPUs in
the system to enhance their capability to maintain realtime performance.

Normally, when the Linux kernel is running in an SMP configuration, any CPU may take an interrupt
or run a process. Under realtime conditions, the operations of scheduling multiple processes
or handling an interrupt may interfere with a particular process meeting it's realtime deadlines.

It would be nice to be able to isolate a realtime process on a CPU such that it was shielded
from the scheduling of other processes and from handling interrupts.

This project would create a new 'shield' command, which would restrict a particular CPU
to execution of an particular process (or set of processes), and also prevent that CPU
from handling interrupts. This might involve modifying the kernel scheduler and using
IRQ affinity features in the kernel to achieve this result.

cgroups supports such a feature, called 'cpusets', but if the feature can be provided outside
of cgroups, that would be better, since cgroups is generally incompatible with realtime embedded Linux.

== Related work ==
* RedHawk Linux has a command called 'shield' which performs this function:
** http://wiki.simwb.com/swbwiki/swbdoc/UserManualFlash/SimConfig/optimizing/optimizing.htm
* http://www.janoszen.com/2013/02/06/limiting-linux-processes-cgroups-explained/

== Scope ==
Unknown

== Contractor Candidates ==
None yet.

== Comments ==

[[Category:Project proposals 2013]]


Lucas De Marchi <lucas.demarchi@...>
 

Hi Tim,

On Wed, Oct 2, 2013 at 5:27 PM, Bird, Tim <Tim.Bird@...> wrote:
; Summary: CPU Shielding capability

; Proposer: Tim Bird, Sony Mobile

== Description ==
In multi-processor realtime systems, it is sometimes desirable to isolate some CPUs in
the system to enhance their capability to maintain realtime performance.

Normally, when the Linux kernel is running in an SMP configuration, any CPU may take an interrupt
or run a process. Under realtime conditions, the operations of scheduling multiple processes
or handling an interrupt may interfere with a particular process meeting it's realtime deadlines.

It would be nice to be able to isolate a realtime process on a CPU such that it was shielded
from the scheduling of other processes and from handling interrupts.

This project would create a new 'shield' command, which would restrict a particular CPU
to execution of an particular process (or set of processes), and also prevent that CPU
from handling interrupts. This might involve modifying the kernel scheduler and using
IRQ affinity features in the kernel to achieve this result.

cgroups supports such a feature, called 'cpusets', but if the feature can be provided outside
of cgroups, that would be better, since cgroups is generally incompatible with realtime embedded Linux.
Why not use the isolcpus on the kernel command line? It doesn't depend
on cgroups. Do you really need to configure this at runtime?

Lucas De Marchi


Bird, Tim <Tim.Bird@...>
 

On Wednesday, October 02, 2013 6:37 PM, Lucas De Marchi wrote:
Why not use the isolcpus on the kernel command line? It doesn't depend
on cgroups. Do you really need to configure this at runtime?
Good questions. I hadn't heard of isolcpus. I'll have to ask the Sony
team interested in this if they're aware of it, and if they need this
feature at runtime.
-- Tim