Jump to content

Сетевая использует одно ядро


Recommended Posts

Уважаемый ТС. Вам тут пудрят мозги. Ни SMP Affinity ни irq balance тем более тут непричем. Обратите внимание на то как определилась ваша сетевая. 19: 51709 45412455 IO-APIC-fasteoi eth0. Одно прерывание да еще и по APIC. Одно прерывание в ядрах до 2.6.32 не может обрабатываться больше чем одним ядром. Никогда. На то оно и прерывание. Говорят с 2.6.32 появились soft очереди, но лично я не тестил еще.

 

Для того чтобы решить вашу задачу - Вам нужно чтобы сетевая была правильно инициализирована ядром. С поддержкой MSI, MSI-X векторов. Для этого надо иметь минимум ядро 2.6 т.к. 2.4 не имеет поддержки MSI вообще.

Скорее не "пудрят мозги" а сами не до конца разбираются в теме. За hint с MSI/MSI-X спасибо. Я так понимаю для его использования должна быть поддержка со стороны устройства, карты и ядра?

Link to post
Share on other sites

Тема продолжается, зашол на машину на которой проц используется равномерно так вот что там

Сетевушшка d-link gigabit (если надо могу найти точную модель)

19: 449 449 IO-APIC-fasteoi uhci_hcd:usb2, ata-piix, eth0

uname -a

2.6.26-2-amd64

Кстати на моем роутере токоеже ядро u2.6.26-2-amd64

Link to post
Share on other sites

Уважаемый ТС. Вам тут пудрят мозги. Ни SMP Affinity ни irq balance тем более тут непричем. Обратите внимание на то как определилась ваша сетевая. 19: 51709 45412455 IO-APIC-fasteoi eth0. Одно прерывание да еще и по APIC. Одно прерывание в ядрах до 2.6.32 не может обрабатываться больше чем одним ядром. Никогда. На то оно и прерывание. Говорят с 2.6.32 появились soft очереди, но лично я не тестил еще.

 

Для того чтобы решить вашу задачу - Вам нужно чтобы сетевая была правильно инициализирована ядром. С поддержкой MSI, MSI-X векторов. Для этого надо иметь минимум ядро 2.6 т.к. 2.4 не имеет поддержки MSI вообще.

Извините, но бред. Стоит машина с федорой и 2.6.25 ядром, боротовые интеловские сетевки работающие с APIC_FASTIO и замечательно генерируются прерывания на любое число ядер в зависимости от smp_affinity. MSI с перрываниями вообще лишь косвенно связано, а в MSI-X появилась поддержка очередей и соответственно генерация нескольких векторов прерываний _одновременно_.

Link to post
Share on other sites

2madf: MSI, MSI-X должны уметь ядро, карта, драйвера к устройству. У интела с этим не наблюдается никаких проблем. Ядро 2.6.27 отлично с этим делом работает. Младшие ядра тоже должны. Читайте мануал к дровам интела, там толково расписано какие ядра для каких фич лучше использовать. Сами карты умеют кучу разных полезных выкрутасов делать, помимо разноса очередей по ядрам.

 

2kayotster: Вы разницу между APIC и MSI прерываниями улавливаете? Потому что судя по вашему посту - нет. То что прерывания генерируются на любое количество ядер говорит лишь о том, что у вас нет smp_affinity для конкретных прерываний ваших сетевых, вот их и разносит по всем ядрам. При этом прерывания генерируются _по-одному_ друг за другом, последовательно а не паралельно.

 

Если у Вас сетевых интерфейсов в карте фактически несколько, то, да, будет столько прерываний, сколько интерфейсов проинциализированно. Для APIC.

 

Сетевые же карты, не могут меть любое количество прерываний, на любое количество ядер, потому как прерывания на сетевых картах = количеству очередей, которая данная карта поддерживает. Чем больше очередей, тем, логичнее, дороже карта. Несколько очередей карты умеют только в режиме MSI-X.

 

А у Вас прямо идилия какая-то.

Link to post
Share on other sites

MSI умеют практически все(или все) pcie карты, но кроме этого его должен уметь еще и чипсет материнки. А вот с этим уже не так весело.

Ну а MSI-X работает у интелов начиная с 82575/82576(ET board), от материнки требуется умение работать с MSI.

Link to post
Share on other sites

2kayotster: Вы разницу между APIC и MSI прерываниями улавливаете? Потому что судя по вашему посту - нет. То что прерывания генерируются на любое количество ядер говорит лишь о том, что у вас нет smp_affinity для конкретных прерываний ваших сетевых, вот их и разносит по всем ядрам. При этом прерывания генерируются _по-одному_ друг за другом, последовательно а не паралельно.

Естественно у меня генерируются прерывания по очереди, и ядро раскидывает их по всем ядрам из smp_affinity. ТС как раз такой режим и хочет получить, а вот не работает.

 

Что такое APIC, MSI, MSI-X я знаю не по наслышке. Сам собирал и обслуживаю десяток серверов разного возраста с разнообразными матерями и сетевками, от простых бортовых до двухголовых intel ET, замечательно работающих в MSI-X..

Link to post
Share on other sites

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

Link to post
Share on other sites

Даже если у вас получится раскидать нагрузку по ядрам лучше не станет. Будет на обоих ядрах 50% и все, те же тормоза и чудеса))

Link to post
Share on other sites

Даже если у вас получится раскидать нагрузку по ядрам лучше не станет. Будет на обоих ядрах 50% и все, те же тормоза и чудеса))

А почему так?

Link to post
Share on other sites

Потому что обработкой в один момент времени занимается одно ядро. Хоть насколько раскидайте, но больше 100% с одного ядра забрать не получится. В top'e будет 50% одно, 50% второе, но на самом деле будет несколько раз в секунду 100% одно и 0% второе и наоборот.

Реально поможет или сетевка с очередями, или(возможно) ядро 2.6.35 с софтовыми очередями(RSS/RPS). Ну или еще одна сетевка, еще проще наверное)

Link to post
Share on other sites

вот тоже как раз тестируем 2.6.35+ (RPS+RFS) - у нас лучше нигде не стало, я бы даже сказал хуже ( возможно не те задачи жрут большую часть времени, и разброс очередей по процам ничего не дает. ну и инфы пока мало... понятно что фишка оч полезная, но толк от нее будет только при определененных проблемах.

 

железо - двухпроцессорный (2хXeon 2.8) 6Гб.

Link to post
Share on other sites

Долго боролся с этой проблемой, тестил, эксперементировал пробовал и т.п. Но решил ее установкой двухголовой сетевушки на чипсете intel 82575, работает на ура. Разбросал вручную все прерывания на все 8 ядер системмы. До этого было загружено только в ядра, на две отдельные сетевые.

Всем советую такое решение.

Link to post
Share on other sites

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

Link to post
Share on other sites
кернел паник

По-моему у меня было такое на релизе FreeBSD 8.1. Сыпало в первую консоль сплошным потоком. Пропатчил и сие ушло. Патч нашёл по Гуглю.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...