В ожидании релиза 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 мне был без надобности и потому я безо всякого сожаления от него избавился.