Назад | Перейти на главную страницу

Не могу обновить smp_affinity

В рамках экспериментов, которые мы проводим для оптимизации производительности приложений на нашем Linux-сервере, мы пытаемся назначить все сетевые прерывания одному ядру процессора.

К сожалению, это работает не так, как должно. Например. у нас есть прерывание:

[root@shou18librh05 ~]# cat /proc/interrupts | grep 107
107:          0          0          0          0          0          0              0          0       PCI-MSI-X  eth-mlx4-0

Где это сейчас обрабатывается?

[root@shou18librh05 ~]# cat /proc/irq/107/smp_affinity
7fffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff

Попытка переместить его, скажем, на первое ядро:

[root@shou18librh05 ~]# echo 1 > /proc/irq/107/smp_affinity

Он сдвинулся?

[root@shou18librh05 ~]# cat /proc/irq/107/smp_affinity
7fffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff,ffffffff

Нет ...

У кого-нибудь есть идеи, почему это может происходить? Гугл не дал никаких очевидных решений / подсказок ...

Linux это:

[root@shou18librh05 ~]# uname -a
Linux shou18librh05 2.6.18-308.el5 #1 SMP Fri Jan 27 17:17:51 EST 2012 x86_64 x86_64 x86_64 GNU/Linux

Скорее всего, в вашей системе есть отключенные устройства, которые использовали векторное пространство прерываний CPU1, и, в частности, поскольку устройства не были включены, их номера прерываний не отображаются в / proc / interrupts. Назначение вектора irq на процессор выполняется в APIC ядра.

Пожалуйста, попробуйте, если это сработает для вас:

  1. Определите все устройства, которые не подключены, но еще не включены,
  2. включить их, например: ifup (для интерфейсов)
  3. Их номер int должен отображаться в / proc / interrupts
  4. Попробуйте назначить все процессоры, кроме 1, всем прерываниям.
  5. Затем попробуйте назначить CPU1 прерываниям по своему вкусу. Но имейте в виду, что это ограничение на векторное пространство на процессор, поэтому их должно быть максимальное количество прерываний, которые могут обслуживаться конкретным процессором.