LINUX.ORG.RU
ФорумAdmin

Очень высокие значения interrupt rate и context switches


0

1

Привет всем.

Имеется хост на Intel Core i7-960. На нём

Linux 3.2.3-1.el6.elrepo.x86_64 #1 SMP Fri Feb 3 18:57:15 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
. Используется в качестве хоста для виртуалок KVM. Виртуалок шесть, но нагрузка очень небольшая. Имеем: dstat показывает очень высокие значения int и csw. Конкретно: int - 45k, csw - 55k. Думаю, что второе - следствие первого. Прерывания, как показывает /proc/interrupts, в основном идут по графе Resheduling Interrupts, и от сетевой карты Intel Gigabit ET Dual-port server adapter (82576). Вроде как крутая карта, с функциями разгрузки центрального процессора и т.п. В общем-то никаких неприятностей в связи с такой высокой загрузкой int/csw не наблюдается, хочется просто понять, это вообще нормально/не нормально, что можно сделать, и стоит ли дёргаться. Сеть во все виртуалки проброшена через бридж br0, который поверх одного из портов этой сетевой карты. Второй порт не используется. Также не используется виртуальная сеть kvm, которая virbr0. Точно такая же машина стоит пока что под VMWare Server, и linux старее. На ней виртуалок больше, нагрузка больше, но при этом int - 10к, csw - 20k, а понятия Rescheduling Interrupts вообще нет :-)

Ответ на: комментарий от true_admin

Нет, не факт. У той, второй, машины не было таких значений даже тогда, когда на ней крутились и эти шесть виртуалок, которые сейчас переброшены на новую. Нашёл утилитку powertop. Она, правда, выпадает с segfault, но перед смертью показывает такое:

Top causes for wakeups:
  51.6% (13076.8)          qemu-kvm : hrtimer_start_range_ns (posix_timer_fn)
  27.7% (7009.0)          qemu-kvm : hrtimer_start_range_ns (kvm_timer_fn)
   8.2% (2075.0)          qemu-kvm : hrtimer_start_range_ns (pit_timer_fn)
   2.1% (535.6)       <interrupt> : aacraid
   2.0% (509.6)       <interrupt> : eth0-TxRx-6
   1.9% (470.8)       <interrupt> : eth0-TxRx-1
Так что и не сетевая, вроде бы, виновата. А вот что это такое, как понять?

shamus24 ()
Ответ на: комментарий от shamus24

Запустите perf top - брать в каталоге tools исходников ядра. Какой clocksource используется?

Высокий csw бывает когда пакеты обрабатываются в юзерспейсе софтом типа openvpn/poptop. Тогда на каждый пакет происходит переключение контекста. В остальных случаях сетевая нагрузке слишком больших csw не вызывает.

PS: e1000e начинает делать отложенные прерывания только на высоких pps если вы загрузите модуль с параметром InterruptThrottleRate=12000,12000,12000,12000 то это установит порог в 12к irq/s для каждого порта вашей карты

ventilator ★★★ ()
Ответ на: комментарий от ventilator

Запустите perf top

Запустил, не из исходников ядра, а из репозитория. Не понял, куда там смотреть, и почему данные такие странные. Обычный top показывает 75% idle и 5-8% wait. А этот показывает

 16.82%  [kernel]            [k] intel_idle
  5.74%  qemu-kvm            [.] 0x13bd02
...

Высокий csw бывает когда пакеты обрабатываются в юзерспейсе софтом типа openvpn/poptop

Bridge br0 - это ведь не userspace, надеюсь? А luks, drbd (хоть это и не сеть)? Кажется, всё это в ядре.

Какой clocksource используется?

/sys/devices/system/clocksource/clocksource0/current_clocksource говорит, что tsc. В available_clocksource перечислены tsc hpet acpi_pm

shamus24 ()

Сорри, щас не могу подсказать ничего.

Я бы копал в сторону io. Ну и можно стопать виртуалки по одной и смотреть не вызвано ли это активностью одной из них..

Короче, я не знаю в чём дело, могу советовать нагрузчное тестирование чтобы убедиться что новый сервер действительно медленнее старого. Вполне возможно что проблемы и нет.

true_admin ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.