I am using a modified Linux kernel as a soft real-time OS, on a system that has an architecture like this:

a busy cat

CPU1 and CPU2 have 8 cores each. I have 4 processes that need to be run with minimum jitter, so what should I do (on both OS-level and hardware configuration level) to minimize the effect of hardware interrupts on these processes?

This is what I'm doing now:

  1. Bind the processes to 1 core each on CPU2.
  2. Disable SAS2208 controller and connect boot disk only to the SATA controller on C602 PCH.

It seems that I can disable most of the features on the C602 PCH to reduce hardware interrupts on CPU1, am I right that this is unnecessary if I isolate the processes to CPU2 (i.e. no remote memory access to DIMMs #1-1 to #1-4 and no interprocess communication between CPU1 and CPU2)?


As with any performance tuning there are no absolute rules. Due to the nature of it, there are a few rules that you can make with sufficient qualification but only a few. So bear that in mind. How you should control for hardware interrupts really depends on how your workload behaves

For your question, you also have to control where the interrupts are sent. There are always going to be some kind of interrupts going on but you can configure IRQ affinity to send them to CPU1, leaving CPU2 available for data processing. You can do the same with packet steering options.

As stated before, it's hard to give you absolute rules but reducing the number of unnecessary hardware interrupts is a good start but playing around with IRQ affinity and TX/RX affinity can yield an advantage as well. It's also important to not become fixated on a particular metric and forget to monitor overall application performance.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.