Решение write error: Value too large for defined data type

Однажды я вручную привязывал прерывания сетевого адаптера 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 к ядрам процессора
Распределение прерываний сетевой платы по ядрам процессора

Оставьте комментарий

Добавить комментарий