LINUX.ORG.RU
ФорумAdmin

Нормальное %si время процессора


0

1

Есть сервер с большим числом работающих приложений.

Linux * 2.6.33.7.2-rt30 На борту 2 процессора по 6 ядер, всего 12 ядер, 24 потока обработки. На машине 864 процессов и RT ядро (хотя это не влияет, аналогичная ситуация и на других машинах с обычным ядром).

Проблема такая, %si процессора при повышении загрузки сервера стал заметно расти. 10-15% под нагрузкой. Такие вопросы:

1) На сколько это нормально? Какое %si на ваших нагруженных серверах приложений; 2) Если это не нормально, то в каком аппаратном узле узкое место; 3) На сколько это влияет на производительность системы. *

* У меня там онлайн игры, где важна каждая миллисекунда. Спасибо за помощь, коллеги!



Последнее исправление: comhosterru (всего исправлений: 4)

Вот примеры:

  • 2 cpu 2 ядра в каждом, с nginx на борту (load balancer), 1-5K соединений в секунду -> %si ~ 10%
  • 2 cpu 4 ядра, с приложением, работающим в 500 потоков (не онлайн игра) -> %si -> ~2%

Насколько я знаю, software interrupts - генерит драйвер сетевой карты при большом кол-ве пакетов.

watch -n 1 -d 'cat /proc/softirqs'

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

Ну там до 100Мбит полоса забивается

канал 1Gbps на машину

Как может забиться 100Мбит если гигабитный канал? Или начинает сильно есть процессор когда до 100Мбит траф вырастает? В любом случае, %si больше зависит от количества пакетов, чем от их размера. В онлайн играх же много мелких UDP пакетов ?

Можно попробовать увеличить очередь входящих пакетов (стандартный совет для гигабитных каналов), но мне не помогало:

sudo ifconfig eth1 txqueuelen 10000
проверить:
                                                                     
sudo ip link                                                           
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 10000
    link/ether 00:1c:23:c2:79:0b brd ff:ff:ff:ff:ff:ff
Ну или драйвер посвежее пощупать. Он должен называться e1000e для intel карточки. Новые версии выходят достаточно часто. Как по мне, такой %si в норме.

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

Продолжение еще интереснее...

Сегодня заблокировал подсеть 193.51.0.0/16 в iptables. Заблокировал, закрыл SSH, <сижу тапочки вяжу>. Смотрю, мониторинг кричит - перегрузка процессора. Открывать top на сервере, а там... Короче говоря, процессы sirq-net-rx съели почти все процессорное время. Удалил правило - все вернулось к старым показателям.

Ради интереса отключил iptables. Сразу %si упало до 0. В iptables 6 тысяч правил, в основном с четким указанием /32 подсетей, т.е. одного IP.

Что может быть, куда смотреть? На втором подобном сервер ради интереса забанил ту же подсеть, %si не изменилось.

comhosterru
() автор топика
Ответ на: комментарий от anonymous

Не знал. Гугл говорит начиная с 3.x. Но тут «Linux * 2.6.33.7.2-rt30» не первой свежести. Да и различия алгоритма работы ЕМНИП у обычной филтрации в iptables - перебор всех правил поочереди, а у ipset - произвольный доступ по хэшу адреса. Jit сможет тут помочь?

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

>> вроде ж в последних ядрах добавили jit для iptables.

Не знал. Гугл говорит начиная с 3.x.

Насколько я помню, только для 64-битных процессоров. Я тогда решил, что для 32-битных он просто уже был.

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

Запилил без ipset. Нам куча сервисом на разных портах, просто сделал цепочки для каждого отдельного сервиса и на них слил трафик с этого конкретного сервиса.

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