In general, this depends on the functionality offered by multi-core processor and OS. While using multi-core processors, you might need to configure the affinity of the interrupt as per your requirement.
In the case of linux
, the /proc
file system has provision to show/configure the affinity of interrupts.
1) The file smp_affinity
for respective irq holds a bitmask which can be used for configuring the irq to be serviced by respective core in multi-core system :
/proc/irq/'irq_number'
/smp_affinity
echo 2 > /proc/irq/12/smp_affinity -> Configures the affinity of IRQ 12 to CPU 1
echo 4 > /proc/irq/14/smp_affinity -> Configures the affinity of IRQ 14 to CPU 2
2) The file smp_affinity_list
helps in configuring a range of CPU for a particular IRQ by avoiding the method of bitmask to configure the cores :
/proc/irq/'irq_number'
/smp_affinity_list
cat /proc/irq/12/smp_affinity_list -> Configures the affinity of IRQ 12 to CPU cores 0 to 3
3) Also linux offers a interrupts load balancing daemon called irqbalance
which can help in distribution of interrupts across processor cores to optimize performance. This daemon may be enabled by default in certain system and hence this should be disabled if you want the manually configure the affinity of interrupt else this might override the configured affinity after every reset.