Перейти к содержимому
Калькуляторы
Кстати, хотел узнать. Можно ли на живом адаптере менять параметры драйвера, без его выгрузки?

Если сетевая интеловская 1000Pro PT или подобное, то можно.

К примеру так: rmmod e1000e; modprobe e1000e InterruptThrottleRate 1,1,1,1

 

Некоторые параметры конечно нет, только при загрузке например: IntMode

Очень интересный параметр, но почему то на моей системе отказывался работать, только PCI-MSI режим и все.

Изменено пользователем Spectator

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1. Есть ли какие-то методы распределения софт прерываний на несколько процессоров, для их более быстрой обработки?

Есть, и только так удалось добиться максимальной производительности.

irqbalance не всегда верно распределяем нагрузку.

А если ядро в полке - то сетевую он от туда достать не может.

 

Я распределяю так:

 

/etc/init.d/irqbalance stop

sleep 3

echo 1 > /proc/irq/82/smp_affinity

echo 2 > /proc/irq/98/smp_affinity

echo 4 > /proc/irq/104/smp_affinity

echo 8 > /proc/irq/106/smp_affinity

 

 

где 82,98,104,106 - прерывания на которых висят интерфейсы.

а значения 1,2,4,8 - десятичное (если не ошибаюсь), представление битовой маски.

 

К примеру на восьмиядерной системе:

CPU0 00000001 = 1

CPU1 00000010 = 2

.....

ну и так далее.

 

Но там много граблей с распределением двуголовых сетевых по ядрам.

Я лично вычислял опытным путем.

 

2. Можно ли как-то управлять поллингом для драйвера e1000? Потому как, судя по документации, поллинг начинает работать только, когда количество пакетов превышает количество возможных прерываний в системе
Да по умолчанию в режиме 3 он "типа" сам работает. Но этот режим скорее подходит для домашнего ПК.

А так этот параметр уже упоминался тут InterruptThrottleRate.

Изменено пользователем Spectator

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вопрос!

Кому то удалось откомпилировать дрова e1000e с мульти MSI-X векторами? (типа make CFLAGS_EXTRA=-DCONFIG_E1000E_SEPARATE_TX_HANDLER) ???

В мануалах пишут, что получается 3 вектора для каждой сетевой: один для TX, один для RX и один для линка.

По идее для мультиядерной системы - это подарок с небес.

У меня как был 1 так и остался как ни крути.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

2Spectator: Объясню в чем фишка жестко установленного InterruptThrottleRate ( ITR ). Конечно в моде 1, фисло прерываний куда выше, чем в режиме 3. Но суть заключается в том, что, если драйвер решил, что трафик подходит по паттерну в Bulk, то в режиме 3 ставит количество прерываний равное 4000. В этом случае, если, драйвер не успевает разгребать очередь за эти 4К прерываний, система уходит в soft irq, откуда её достать достаточно проблематично, особенно, когда пакеты валят вне зависимости от появившегося высокого пинга. А когда выходит, то не на долго, т.к. 4К прерываний - это относительно мало, по крайней мере для моего трафика, моей сетевухи и моего кол-ва пакетов.

 

ITR = 1. Это те же яйца, только для разных паттернов трафика расставлено больше прерываний. Но вот незадача - для Bulk traffic это значение всеравно равно 4К.

 

Основная же проблема, что драйвер спустя какое-то время, начинает считать, при любом трафике, что паттерн Bulk - самый подходящий и в результате держит 4К прерываний и убивает систему soft irq.

 

И еще один момент разбивающий всю идилию: изначально, после рестарта драйвера - создается иллюзия, что все работает нормально. И даже при большом количестве пакетов роутер чувствует себя нормально. Но спустя какое-то время. У меня это от 18 до 25 дней - начинается одинаковая попа с прерываниями. Ну и конечно же она происходит в пик тайм.

 

Чем хорош статическии установленный ITR - тем, что он не "присматривается" к трафику и делает, в моем случае, максимальное количество прерываний, то есть обеспечивает минимальный rtt. На бОльшей нагрузке подключается NAPI и количество прерываний там меньше pps, но всеравно достаточно высокое, чтобы держать нормальный rtt.

 

То есть на данном этапе, после установленного статически ITR проблем с роутером не наблюдалось, но опять таки - проблема может проявиться позже, поэтому я пока тестирую и отпишусь позже

 

Насчет e1000e. Я пробовал его поставить, но моя сетевуха 82566DM не находится этим драйвером. Гугл молчит по этому поводу. Я понимаю, что сетевая не блеск, но для моих целей вполне подходит и почему её не находит драйвер, я не знаю. Новый e1000, кстати, 8.х который, её тоже не видит. Приходится сидеть на последнем 7.х

 

Насчет SMP Affinity. Я пробовал и с ним и без. Вывод таков, что на 2.4 ядре совершенно пофигу есть он или нет. Вся разница в том, что прерывания начинает обрабатывать один процессор и в топе висит ksoftirqd от его имени. Вот и все. Принципиально это ничего не меняет и я с этим даже не парюсь. Тем более, что некоторые источники утверждают, что распределение прерываний по процессорам даже лучше, т.к. прерывание в таком случае выполняет первый освободившийся процессор, что уменьшает общее число переключений контекста. Но, чесно говоря, ни первого, ни второго не заметил, поэтому оставил по умолчанию.

 

У меня правда одна сетевая и, может, на нескольких сетевых это что-то дает. Но для одной сетевой заморачиваться точно не стоит.

 

Насчет смены параметров - rmmod - это и есть выгрузка драйвера. При этом завалиться интерфейс привязанный к устройству и надо будет заново подымать роуты, рулы, если они есть. Мне в таком случае проще перегрузить машину, чем это все вручную подымать.

 

И еще один важный вопрос: У Вас что-то крутиться на машине, кроме тупо роутинга? Нет флов, там, базы, биллинги ... ?

 

2nuclearcat: Мне кажется, что если подобрать этот параметр правильно, то его можно просто один раз вбить дефолтом и больше к этому вопросу не обращаться. Походу ребята из Интел так и сделали, вот только в режиме 3 машина в качестве роутера чувствует себя не очень, при скоростях выше 100 Mbit, по крайней мере, на моей конфигурации.

Изменено пользователем Dark_Angel

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня прекрасно себя чувствует машина на 400-500 Mbit/s, судя по мониторингу.

А softirqd кушает проц - т.к. где-то в сетевом стеке затык. У меня было, когда использовался HPET таймер и hrtimers.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну так я думаю, что 400-500 Мбит у Вас не на бюджетной 82566DM? А стоит какая-то внешняя PCI-X сетевая, да еще и с MSI, MSI-X поди. Да и ksoftirqd кушает проц по чуть-чуть, а не на 100%, правда же?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Есть такое. Это серверные матери.

А если 82566DM встроенный в ICH8 - он вообще никуда не годится. У этого "встроенного" урезанный внутренний буфер. Он и 200 Мбит реального траффика с трудом жует. Гигабит может только разве что как юзерская карта, скачать с FTP файлец.

Верный признак урезанности - не умеет полноразмерные jumbo frames.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все верно излагаете. Карта интегрированная и у неё толи 8, то ли 16К буферов. Не понятно. В даташитах по этому вопросу ничего нет. Jumbo frames умеет, но Вы сами понимаете, что не рекомендуется с таким буфером. В данном, конретном лучае жевать надо до 200 Мбит проходящего трафика. Больше от неё и не требуется. По идее, должна справляться.

 

Естественно, конфигурация драйверов и системы требует доработки напильником, т.к. данная сетевая не предназначена вообще для работы в условиях сервера. Но ведь в этом-то и суть, т.к. позволяет разобраться во всех ньюансах работы системы без выполнения аппаратного апгрейда. Кроме того становиться очевидно зачем выполнять апгрейд и для каких условий какие сетевые больше подходят.

 

На самом деле, я недеюсь, что выполненные махинации описанные в этой теме являются хорошим подспорьем при разборке ситуаций с перегрузкой роутеров в виде выхода ksoftirqd. Нормальных тем в инете в этой теме вообще нет. Вся информация обрывками.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У меня эта карта теряла пакеты на 200-250Mbps, просто при пустом форвардинге, но с таблицей роутинга в 1300 записей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо, ценная информация, но пока, судя по тестам, на скоростях до 200 Мбит, показывает себя нормально. На машине > 3000 роутов.

 

Вообще я считаю, что Вы правы и больше 200 Мбит, на ней крутить не стоит. Рисковое это дело. Тем более сетевая карта для PC - это не плата для кошки, можно 100-200 баксов и потратить один раз. А без MSI разрулить больше 200 Мбит трафика будет как минимум проблематично.

 

Но почему была поднята вся эта тема: есть две одинаковые машины, именно с этими сетевыми и с проходящим одинаковым трафиком. Стоят друг за другом по маршрутизации. На одной все нормально ( Fedora 6, 2.6 ядро, да еще и pptp терминация ), на второй приходиться интенсивно работать напильником ( ASPLinux 9 с собраным последним ядром 2.4 ). Единственное принципиальное отличие - это на проблемной машине есть fprobe. То есть получается, что дело не только в сетевухах. Если бы сетевая начала терять пакеты - вопрос был бы снят вместе с сетевухой. А так, явно же разница в настройках играет роль. Вот, хочу разбораться где именно крутить гайки.

Изменено пользователем Dark_Angel

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

> Кому то удалось откомпилировать дрова e1000e с мульти MSI-X векторами? (типа make CFLAGS_EXTRA=-DCONFIG_E1000E_SEPARATE_TX_HANDLER) ???

 

Скомпилить - скомпилилось, но по идее не пашет (в /proc/interrupts на одну eth по 1 номеру прерывания), насколько я понимаю оно будет работать только на 82575 и 85276 based карточках.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На сколько я понимаю прерывания и остается одно. Вот только данные от/к карточке ходят уже по-другому принципу. Проясните, пожалуйста, немного этот момент, у кого получилось настроить несколько векторов. То есть где это можно увидеть в системе, за исключением пометки MSI-X в /proc/interrupts ?

 

ЗЫ Тем кто не в струе - полезная ссылка про MSI http://devresources.linux-foundation.org/d...n/MSI-HOWTO.txt

Изменено пользователем Dark_Angel

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
в e1000e можно этим параметром управлять динамически через ethtool -c
А можно подробенее?

 

Может кто-нибудь знает нормальную доку про ethtool?

rx_missed_errors: 12471649

tx_deferred_ok: 4302243

tx_restart_queue: 1780921

tx_tcp_seg_good: 3654

rx_flow_control_xon: 4372530

rx_flow_control_xoff: 4367738

tx_flow_control_xon: 436942

tx_flow_control_xoff: 447152

rx_long_byte_count: 2801363193093

rx_csum_offload_good: 3014004698

rx_csum_offload_errors: 791

 

Это хорошо или плохо? Нигде не могу найти нормального описания значений.

 

Стоит ли включать/выключать flow control?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Насчет переменных - я так понимаю, они driver specific, поэтому доки надо смотреть для драйвера, а не для ethtool.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сетевуха PRO/1000PT, драйвер e1000e.

 

А как на счёт изменения InterruptThrottleRate через ethtool?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
в e1000e можно этим параметром управлять динамически через ethtool -c
А можно подробенее?

 

Может кто-нибудь знает нормальную доку про ethtool?

rx_missed_errors: 12471649

tx_deferred_ok: 4302243

tx_restart_queue: 1780921

tx_tcp_seg_good: 3654

rx_flow_control_xon: 4372530

rx_flow_control_xoff: 4367738

tx_flow_control_xon: 436942

tx_flow_control_xoff: 447152

rx_long_byte_count: 2801363193093

rx_csum_offload_good: 3014004698

rx_csum_offload_errors: 791

 

Это хорошо или плохо? Нигде не могу найти нормального описания значений.

 

Стоит ли включать/выключать flow control?

rx_missed_errors: 12471649

Очень плохо. Но в зависимости от общего количества пакетов. Но все равно выглядит плохо.

Говорит о том, что ваша железка не успевает переваривать пакеты.

 

ethtool -g интерфейс покажите

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Очень плохо. Но в зависимости от общего количества пакетов. Но все равно выглядит плохо.

Говорит о том, что ваша железка не успевает переваривать пакеты.

Железка - C2D E8400 3.00GHz

сетевухи - двойная pro/1000pt + dlink DGE-530T

Оба ядра простаивают как минимум на 65-70%

 

total: 578.89 Mb/s In 464.12 Mb/s Out - 80351.1 p/s In 76345.1 p/s Out

eth0: 89.04 Mb/s In 205.86 Mb/s Out - 18797.9 p/s In 22802.6 p/s Out

eth1: 185.42 Mb/s In 66.01 Mb/s Out - 21251.1 p/s In 18324.6 p/s Out

eth2: 61.38 Mb/s In 63.27 Mb/s Out - 9525.5 p/s In 8446.6 p/s Out

Но это сейчас, вечером нагрузка, конечно, больше.

 

По идее должна успевать переварить всё.

 

ethtool -g интерфейс покажите
Ring parameters for eth0:

Pre-set maximums:

RX: 4096

RX Mini: 0

RX Jumbo: 0

TX: 4096

Current hardware settings:

RX: 256

RX Mini: 0

RX Jumbo: 0

TX: 256

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ethtool -G eth0 rx 2048

ethtool -G eth0 tx 2048

 

делать лучше всего при небольшой нагрузке, карта отвалится на несколько секунд

Простой ядра ничего не значит, вся мощность может например теряться в локингах в conntrack, например

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему нельзя в данном случае сделать

ethtool -G eth0 rx 4096

ethtool -G eth0 tx 4096

 

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

чрезмерное увеличение буферов может привести к повышенным cache misses...

Для начала надо отследить, привело ли увеличение буферов к уменьшению относительного количества потерь

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
ethtool -G eth0 rx 2048

ethtool -G eth0 tx 2048

Сделал, но rx_missed_errors всеравно понемногу увеличивается.

 

Простой ядра ничего не значит, вся мощность может например теряться в локингах в conntrack, например
Контрэка нет. Там iptables, ipset - пара десятков правил, пара десятков статических маршрутов, на сетевухи навешены 7 вланов.

 

oprofile показывает

346114257 38.1517 vmlinux

181987020 20.0602 e1000e

135328669 14.9171 ip_tables

112973591 12.4529 ip_set_nethash

38834175 4.2806 ip_set

 

opreport -l /usr/src/linux-2.6.27.11/vmlinux:

72201103 20.7549 mwait_idle

22860827 6.5716 irq_entries_start

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
azazello - если какая-то операция I/O заблокирует "нужную подсистему" локом - встанут все ядра, и буду ждать, пока закончит.

conntrack меня таким поведением доводил до белого каления... пока нашел в чем дело.

а можно вопрос... в чем было дело? если можно - по подробнее..

какие симптомы были и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
А где можно отследить наличие cache misses?
oprofile, установив соответствующий event

 

azazello - если какая-то операция I/O заблокирует "нужную подсистему" локом - встанут все ядра, и буду ждать, пока закончит.

conntrack меня таким поведением доводил до белого каления... пока нашел в чем дело.

а можно вопрос... в чем было дело? если можно - по подробнее..

какие симптомы были и т.п.

Симптом прост - роутер, хотя процессор и не загружен на 100% - отчаянно теряет пакеты.

Вообще похоже это скорее болезнь iptables.

Новые коммиты одного из разработчиков в исходники ядра частично эту проблему решат.

В 2.6.30 наверное будут уже в релизе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Как и обещал отписываюсь по тестам: установка ITR = 100K решила проблему перегрузки машины softirq. Прошло 30 дней. Полет нормальный.

Изменено пользователем Dark_Angel

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас