Однажды я вручную привязывал прерывания сетевого адаптера Intel к ядрам процессора и столкнулся с ошибкой:
echo 100000000 > /proc/irq/278/smp_affinity
bash: echo: write error: Value too large for defined data type
То есть 32 прерывания я успешно привязал к ядрам процессора с 0 по 31, а 33 прерыванию не получилось указать 32 ядро.
Я посмотрел содержимое директории нужного irq:
ls /proc/irq/278/
Обнаружил что там есть файл smp_affinity_list в котором можно указать в цифровом виде диапазон ядер CPU и указал ядро 32:
echo 32 > /proc/irq/278/smp_affinity_list
После этого проверил файл smp_affinity и увидел как система указала это ядро в hex формате:
cat /proc/irq/278/smp_affinity
00001,00000000
cat /proc/irq/278/smp_affinity_list
32
То есть начиная с 32 ядра, необходимо указывать значение через запятую, например:
echo 1,00000000 > /proc/irq/278/smp_affinity
echo 2,00000000 > /proc/irq/279/smp_affinity
echo 4,00000000 > /proc/irq/280/smp_affinity
echo 8,00000000 > /proc/irq/281/smp_affinity
echo 10,00000000 > /proc/irq/282/smp_affinity
echo 20,00000000 > /proc/irq/283/smp_affinity
Смотрите также мои статьи:
Скрипт привязки прерываний сетевой платы Intel к ядрам процессора
Распределение прерываний сетевой платы по ядрам процессора