FreeBSD 9.1 XHCI Interrupt Storm
avatar

В ожидании релиза FreeBSD 9.1 решил провести серию экспериментов на сервере, который был собран под k-42.ru. Конфигурация получилась проще, нежели планировалось изначально:

  • Мат. плата ASUS P8Z77-M
  • Процессор Intel Core i7-3770 (охлаждает его IceHammer IH-4500)
  • Память Nanya 4 x 8 Gb
  • SSD OCZ Vertex 4 128 Gb
  • Корпус InWin EMR-003 (с блоком питания на 450 ватт)

SSD я решил в эксперименты не включать, поэтому систему (FreeBSD 9.1 RC2) я установил на карту памяти Transcend SD Class 10 объемом 8 Гб.

После установки обнаружился очень странный глюк. top постоянно показывал Load Average в районе 0.80, хотя никакой активности в системе не было вообще. Более полную картину происходящего дали команды top -S и ps ax. По их сведениям уйма ресурсов тратилась на обработку прерываний. Далее для диагностики была дана команда vmstat -i, показывающая активность аппаратных прерываний.

B:\>vmstat -i
interrupt                          total       rate
irq16: ehci0                       37731          1
irq23: ehci1                       66201          2
cpu0:timer                       1141730         45
irq264: re0                         8614          0
cpu1:timer                        126169          5
cpu5:timer                        106028          4
cpu7:timer                        107242          4
cpu4:timer                        112256          4
cpu6:timer                        108450          4
cpu3:timer                        115102          4
cpu2:timer                        108744          4
Total                            2038267         81

В моем случае на irq16 кроме ehci0 висел еще и xhci0 (контроллер USB 3.0), а счетчик этого прерывания однозначно свидетельствовал о том, что оно штормит. Уменьшение sysctl-параметра kern.hz в десять раз никакого влияния на ситуацию, к сожалению, не оказало.

Проблему я решил радикально. Из конфигурации ядра был полностью вырезан xhci. После пересборки ядра и перезагрузки шторм прекратился. Load Averege вернулся на свое привычное место (т.е. 0.00). Понимаю, это решение не совсем верное и возможно даже неадекватное, но в данном случае контроллер USB 3.0 мне был без надобности и потому я безо всякого сожаления от него избавился.

This entry was posted in Софт. Bookmark the permalink.

Comments are closed.