Значи има два варианта да се вдигне прекъсване - единият вариант е хардуерно (мрежова карта при получаване на пакет примерно) - х86 архитектурите си имат контролер на прекъсванията, който поема такива сигнали и ги предава към процесора(ите). Тези прекъсвания са ти от тип io-apic edge / io-apic level (разликата между двете е за електротехници
'> )
Другия вариант е софтуерно прекъсване - такива се дефинират на ниво кърнъл и много прост пример за това ти е всеки един syscall. Тези се изобразяват в полето LOC: (това е брояч за този тип прекъсвания, отново за всеки процесор)
Съдейки по твоите данни, прекъсванията се обработват равномерно по отделните процесори (има си IRQ load balancing btw).
Ако имаш натоварени мрежови интерфейси, тогава както си предположил има файда от това да се дедикейт-ва хардуерно прекъсване на конкретен процесор. Така много по-добре се възползваш от L1 кеша, освен което, при фрагментация на пакетите ще се налага за всеки получен фрагмент от целия пакет да се върти известна информация от единия към другия процесор.
Дедикейт-ването е лесно:
echo <CPU#> > /proc/irq/<IRQ#>/smp_affinity
Иначе нямам много ясна идея защо при по-големи натоварвания, броят на софтуерните прекъсвания скача толкова. Може би ако пейстнеш изхода на sar -a мога да ти кажа повече по въпроса. Имам предположение, че като се натовари мрежата се стига до някакъв момент, в който се лог-ва нещо свързано с трафика (нямам идея как стои въпроса при теб). Оттам вероятно идват тези syscalls.