En général, cela dépend des fonctionnalités offertes par le processeur multicœur et le système d'exploitation. Lors de l'utilisation de processeurs multicœurs, vous devrez peut-être configurer l'affinité de l'interruption selon vos besoins.
Dans le cas de linux
, le système de fichiers /proc
permet d'afficher/configurer l'affinité des interruptions.
1) Le fichier smp_affinity
pour IRQ respectif est titulaire d'un masque de bits qui peut être utilisé pour la configuration de l'IRQ à desservir par le noyau respectif dans le système à noyaux multiples:
/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) le fichier smp_affinity_list
aide dans la configuration d'une gamme de CPU pour une IRQ notamment en évitant le procédé de masque de bits pour configurer les noyaux:
/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) Linux propose également une interruption démon d'équilibrage de charge appelé irqbalance
qui peut aider à la distribution des interruptions dans les cœurs de processeur pour optimiser les performances. Ce démon peut être activé par défaut dans certains systèmes et par conséquent cela doit être désactivé si vous voulez configurer manuellement l'affinité de l'interruption sinon cela pourrait remplacer l'affinité configurée après chaque réinitialisation.
AFAIK mainline Linux ne prend en charge que le matériel multiprocesseur symétrique SMP, ce qui signifie que tout processeur peut traiter les interruptions. J'ai vu UNIX porté à un matériel asymétrique, c'est-à-dire qu'il y a un processeur dédié aux E/S et aux interruptions. BTW un processeur ne * "exécute pas d'interruption" *. Il peut * desservir * une interruption, c'est-à-dire exécuter une routine de service d'interruption, ISR. – sawdust
Attendez, UP est également supporté. – 0andriy