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

Процесс ksoftirqd перегружает ЦП из-за высокой пропускной способности и множества сетевых подключений

У меня есть сервер 10GBit с установленным proxmox 2.1. Есть контейнер OpenVZ, работающий с Ubuntu 10.04 64bit. Я могу получить 200-300 МБ / с с помощью wget с внутренних серверов центра обработки данных (-O / dev / null), что нормально. Однако при наличии нескольких соединений невозможно получить в сумме более 800 Мбит / с.

У меня работает веб-сервер apache2, который работает как прокси и получает доступ к данным с нескольких других (не только внутренних серверов центра обработки данных). Это только проксирование, поэтому доступ к жесткому диску не осуществляется (кроме файлов журналов, конечно). Поскольку в этом сервере есть два SSD, маловероятно, что это причина. Как только будет достигнуто 800MBit, я получу только 300kb / sec от внутренних серверов центра обработки данных с помощью "wget ​​-O / dev / null" ", даже на самой хост-системе, а не в контейнере OpenVZ.

Я заметил, что процесс ksoftirqd / 0 требует большой загрузки процессора (до 100%):

 4 root      20   0     0    0    0 R   78  0.0 67:38.99 ksoftirqd/0 # (78% in this case)

Иногда также события процесса / 0 требуют большой мощности процессора и, кажется, конкурируют с ksoftirqd / 0 за мощность процессора:

 35 root      20   0     0    0    0 R   50  0.0 18:04.63 events/0
  4 root      20   0     0    0    0 R   50  0.0 24:37.64 ksoftirqd/0

Вывод top о мощности процессора выглядит так:

Cpu(s): 13.9%us,  7.3%sy,  0.0%ni, 64.0%id,  0.2%wa,   0.0%hi, 14.6%si,  0.0%st

Как видите, si очень высока, и обычно она должна оставаться равной 0. Также жесткий диск не является узким местом. (0,2% воды).

У меня также были другие 1-гигабитные серверы с такой же конфигурацией. Они даже достигают 900 МБит / сек, что нормально для сервера 1 ГБит. Однако есть и высокая загрузка ksoftirqd / 0 (60-70%).

В настоящее время через 10-гигабитный сервер проходит около 300 Мбит / с, а процесс ksoftirqd / 0 остается на 0% ЦП.

Однако позже вечером, когда трафик возрастет, он поднимется до 100 и сократит полосу пропускания до 800 Мбит.

Может проблема с OpenVZ? Я мог бы также установить ubuntu прямо на сервер без proxmox только для тестирования, но было бы лучше, если бы я мог остаться с proxmox / OpenVZ.

Однако важно, чтобы я мог использовать хотя бы несколько гигабит с этим сервером, как только мне это понадобится. Конечно, также с несколькими подключениями.

Насколько я могу прочитать вывод из lspci -vv, моя карта поддерживает MSI-X.

В системе есть Intel® Xeon® Processor E5606 (8M Cache, 2.13 GHz, 4.80 GT/s Intel® QPI) процессор

Это моя сетевая карта:

root@ns231828:~# lspci  | grep -i network
02:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
02:00.1 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01)
05:00.0 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)
05:00.1 Ethernet controller: Intel Corporation 82576 Gigabit Network Connection (rev 01)

Я также загрузил очищенный вывод lshw Вот: http://jsfiddle.net/R8QgL/

Это тоже содержание lspci -vv: http://pastebin.com/7PqqbzHM

У меня есть «тестовая среда» с небольшим пакетным скриптом, который загружает большие тестовые файлы скорости с множества серверов (на самом деле я взял только список зеркал ubuntu iso). я могу достичь 2 Гбит в этой среде.

после того, как я попробовал ethtool -C eth2 rx-usecs 1022 я смог достичь 3,5 гигабита.

однако с оптимизированными настройками rx-usecs (я также пробовал значения 1 и 1000, 1022 оказался лучшим) в реальной среде с реальными клиентами это получило только около 100 Мбит.

Я загрузил сюда другие результаты работы ethtool -k и ethtool -c: http://pastebin.com/rEtmuV6i

Кто-нибудь испытывал подобные проблемы или есть подсказка, как я могу решить эту проблему?