LINUX.ORG.RU
ФорумAdmin

Сетевая карточка перегружает CPU


0

0

Ситуация: роутер, дженту, 2 сетевухи, одна на провайдера (eth1), другая во внутреннюю сеть(eth0), VPN, NAT. Железо : Xeon 5506, память 4 гига, мать серверная, ASUS, сетевушки INTEL 1 GBit. Прерывания от сетевух разделены rx и tx и равномерно распределены по 4-м ядрам камня, это видно из /proc/interrupts. Проблема: при загрузке канала до 40-50 мбит (примерно 250 пользователей), прерывания от сетевух сильно нагружают ядра камня. Причём eth0-rx грузит своё ядро до 100%, остальные 10-20%, соотвествено скорость упирается в производительность это ядра и дальше не разгоняется. Пробовал перекидывать это прерывание на другие ядра, результат один - загрузка этого ядра на 100%. Разве может сетевушка при таком небольшом траффике так сильно грузить достаточно мощный процессор ? Может что-то надо где-то подправить ?

точное названия сетевух а так же показания top итп.

Сколько килопакетов прокачиваешь?

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

top:
: 586 total, 6 running, 579 sleeping, 0 stopped, 1 zombie
Cpu0 : 1.1% us, 9.7% sy, 0.0% ni, 88.2% id, 0.0% wa, 0.0% hi, 1.1% si
Cpu1 : 3.2% us, 16.0% sy, 0.0% ni, 64.9% id, 0.0% wa, 0.0% hi, 16.0% si
Cpu2 : 3.2% us, 7.5% sy, 0.0% ni, 55.9% id, 0.0% wa, 0.0% hi, 33.3% si
Cpu3 : 0.0% us, 0.0% sy, 0.0% ni, 0.0% id, 0.0% wa, 1.1% hi, 98.9% si
Mem: 3103600k total, 2616956k used, 486644k free, 140600k buffers
Swap: 11727432k total, 0k used, 11727432k free, 2154272k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

10 root 15 -5 0 0 0 R 59 0.0 668:18.83 ksoftirqd/3
10 root 15 -5 0 0 0 S 14 0.0 668:16.64 ksoftirqd/3
26308 root 20 0 1576 588 468 R 34 0.0 1:26.79 pptpctrl
2255 root 20 0 1576 604 468 S 14 0.0 3:25.54 pptpctrl
6 root 15 -5 0 0 0 S 10 0.0 959:00.28 ksoftirqd/1
13091 root 20 0 1576 620 468 S 14 0.0 6:07.15 pptpctrl


как видно 4-ое ядро полностью загружено

Сетевухи Intel 82574L, встроенные, мать серверная ASUS Z8NA-D6
Прокачка примерно 6800 пакетов в секунду

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

Где-то я это уже встречал и как-то вылечил. То ли железо было битое, то ли опция в биосе была кривая... А в dmesg пусто?

Воткни другое ядро, на генте это несложно :). И сделай конфиг без всяких там dynamic ticks итп.

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

Судя по всему у тебя адаптер на каждый пакет генерирует по прерывнию, которые ksoftirqd пытается рассовать по ядрам.

Это очень станно. По идее все гигабитные сетевухи должны работать либо в режиме опроса, либо отложенных перываний.

Скорее всего это глюки либо в ядре, либо в драйвере, либо ты так ядро собрал. Нужно разираться.

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

ethtool -i eth0
driver: e1000e
version: 0.3.3.4-k4
firmware-version: 1.8-0
bus-info: 0000:03:00.0

ethtool -k eth0
Offload parameters for eth0:
rx-checksumming: on
tx-checksumming: on
scatter-gather: on
tcp segmentation offload: on
udp fragmentation offload: off

по eth1 то же самое

Macil, с железом быть не может, оно было полностью поменяно, на предыдущем железе было то же самое. Драйвер вряд ли, так как опять же на предыдущих сетвухах так же было.
А вот в ядре может быть. Кто б мне сказал что там подправить только.
Сейчас стоит 2.6.30.8 стоит откатиться на более старое ?


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

Хм,в ядре начиная с 2.6.28 нет отдельного включения NAPI , он должен быть включен по умолчанию, насколько удалось выяснить.

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

видимо фишка в том что в ядре 2.6.30.8 используется старая версия модуля е1000е, без NAPI, хотя е1000 с NAPI. Скачал новую версию с NAPI, попробую воткнуть, если поможет, отпишусь, спасибо Macil.

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

Вы уверены что дело в прерываниях? Покажите vmstat 1.

Что есть ли у вас нат, шейпинг, правила в iptables?

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

Что то я вообще невнимательно читал.

Судя по всему у вас poptop, для терминации pptp попробуйте ядерный accel pptpd

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

Прокачка примерно 6800 пакетов в секунду

весьма мизерный трафик, даже с прерыванием по каждому пакету не должно быть такого.

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

ventilator, есть и шейпинг и Нат итд, но дело не в этом. Как я уже писал, при переносе прерывания от сетевой карты на любое ядро процессора, именно это ядро показывает загрузку около 100% (0% idle). Возможно, это связано с pptp, потому что процесс pptpctrl показывает иногда в top высокую нагрузку.

Итак, обновил драйвер е1000е до последней версии ethtool -i eth0 driver: e1000e version: 1.0.15-NAPI firmware-version: 1.8-0 bus-info: 0000:03:00.0

что имеем теперь: вместо 4-х прерываний ( rx, tx по каждой сетевухе) получили 2 : eth0-Q0 и eth1-Q0. Результат оценить пока не могу, так как пиковая нагрузка вечером. отпишусь по этому поводу позже.

А насчёт accel-pptp погляжу, спасибо.

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

В том дело что процессы ksoftirqd - это все что происходит с пакетом в ядре, а не только обработка прерываний. Если у вас шесть килопакетов то дело тут явно не в прерываниях.

Я прокачивал 15 на реалтеках, без всяких напи, на одноядерном атлоне.

Все таки что с правилами в иптейблс? Шейпите на ppp интерфейсах? и мне кажется что дело всетаки в poptop. У вас каждый пакет в юзерспейс выкидывается.

Покажите еще sysctl net.netfilter.nf_conntrack_max sysctl net.netfilter.nf_conntrack_count sysctl net.netfilter.nf_conntrack_buckets

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

Ды ва правы уважаемый ventilator, дело было именно в poptop, то что нагрузка на него засчитывается как ksoftirqd я к сожалению не знал.

Огромное спасибо всем кто откликнулся и помог. Линукс орг ру лучший, больше мне нигде ничего толком не сказали. Отдельное спасибо ventilator, подсказавший два ключевых слова: accel-pptp. Почитав на тему я узнал, что любой NAS сервер, даже самый мощный, деградирует при одновременноv коннекте >250 юзверей на штатном pptpd. С accel-pptpd всё просто летает. проблема решена, спасибо.

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

Перейдите пока не поздно на pppoe, мой вам совет. accelpptpd не совсем еще стабильный.
Кроме того для терминации pppoе больше выбор железа (если вдруг захотите железные насы).
rp-pppoe в ядерном режиме поднимет на вашем железе до тысячи коннектов плюс он работает очень стабильно.
Как вариант еще можете попробовать mpd на fbsd, но там уже год баг не могут выловить в результате сервер в панику уходит иногда - мне это надоело и я перестал бсд как нас использовать.

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