Перейти до

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


Рекомендованные сообщения

Поставил сутевушку Intel гигабитную, сервер двух ядерный amd 2.4 debian lanny в htop видно что использует одно ядро, как сетевушку заставить нагружать не одно ядро а 2 сразу, то есть использовать ресурс процессора равномерно.

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

smp_affinity поможет пока в действие не вступит ksoftirqd. После этого жуткий перекос и лапки кверху. Собственно, то о чем я говорил в соседней теме.

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

распределить irq

cat /proc/interrupts?

 

cho "f" > /proc/irq/ололо/smp_affinity

IO-APIC пыщ-пыщь?

Чет не вьехал, пыщ-пыщь? что это? /ололо/ так же не понял

 

nano /proc/irq/что именно выбрать?/smp_affinity

0/ 1/ 10/ 11/ 12/ 13/ 14/ 15/ 19/ 2/ 21/ 22/ 23/ 3/ 4/ 5/ 6/ 7/ 8/ 9/

 

cat /proc/interrupts

CPU0 CPU1

0: 33 1 IO-APIC-edge timer

1: 0 2 IO-APIC-edge i8042

7: 1 0 IO-APIC-edge parport0

8: 0 1 IO-APIC-edge rtc0

9: 0 0 IO-APIC-fasteoi acpi

14: 0 0 IO-APIC-edge ide0

19: 51709 45412455 IO-APIC-fasteoi eth0

21: 872 82932 IO-APIC-fasteoi sata_nv, HDA Intel

22: 0 1 IO-APIC-fasteoi ehci_hcd:usb2, sata_nv

23: 0 1 IO-APIC-fasteoi ohci_hcd:usb1, sata_nv

NMI: 0 0 Non-maskable interrupts

LOC: 5790061 19095122 Local timer interrupts

RES: 7218409 361574 Rescheduling interrupts

CAL: 950 696 function call interrupts

TLB: 2915 2256 TLB shootdowns

TRM: 0 0 Thermal event interrupts

THR: 0 0 Threshold APIC interrupts

SPU: 0 0 Spurious interrupts

ERR: 1

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

Одна сетевушка и должна/будет использовать одно ядро. Запись ff в smp_affinity сделает только хуже, заставляя обработчик прыгать по ядрам вымывая кеши и убивая в итоге сервер.

Или ставить еще сетевку, или ставить сетевку типа intel ET board с multiqueue, или обновить ядро до 2.6.35.4 и потестить как работает тамошний софт-multiqueue..

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

распределить irq

cat /proc/interrupts?

 

cho "f" > /proc/irq/ололо/smp_affinity

IO-APIC пыщ-пыщь?

Чет не вьехал, пыщ-пыщь? что это? /ололо/ так же не понял

 

nano /proc/irq/что именно выбрать?/smp_affinity

0/ 1/ 10/ 11/ 12/ 13/ 14/ 15/ 19/ 2/ 21/ 22/ 23/ 3/ 4/ 5/ 6/ 7/ 8/ 9/

 

cat /proc/interrupts

CPU0 CPU1

0: 33 1 IO-APIC-edge timer

1: 0 2 IO-APIC-edge i8042

7: 1 0 IO-APIC-edge parport0

8: 0 1 IO-APIC-edge rtc0

9: 0 0 IO-APIC-fasteoi acpi

14: 0 0 IO-APIC-edge ide0

19: 51709 45412455 IO-APIC-fasteoi eth0

21: 872 82932 IO-APIC-fasteoi sata_nv, HDA Intel

22: 0 1 IO-APIC-fasteoi ehci_hcd:usb2, sata_nv

23: 0 1 IO-APIC-fasteoi ohci_hcd:usb1, sata_nv

NMI: 0 0 Non-maskable interrupts

LOC: 5790061 19095122 Local timer interrupts

RES: 7218409 361574 Rescheduling interrupts

CAL: 950 696 function call interrupts

TLB: 2915 2256 TLB shootdowns

TRM: 0 0 Thermal event interrupts

THR: 0 0 Threshold APIC interrupts

SPU: 0 0 Spurious interrupts

ERR: 1

19: 51709 45412455 IO-APIC-fasteoi eth0

19-е прерывание. Для него крути smp_affinity.

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

Одна сетевушка и должна/будет использовать одно ядро. Запись ff в smp_affinity сделает только хуже, заставляя обработчик прыгать по ядрам вымывая кеши и убивая в итоге сервер.

Или ставить еще сетевку, или ставить сетевку типа intel ET board с multiqueue, или обновить ядро до 2.6.35.4 и потестить как работает тамошний софт-multiqueue..

А почему должны вымываться кеши? Прерывание выполняется на одном ядре до самого конца. Если в процессе обработки прерывания возникает новое - оно уходит на второе ядро (если smp_affinity это позволяет). Если свободных ядер нет - оно ставится в очередь и в работу вступает ksoftirqd.

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

На подобной конфигурации только проц интел стояла сетевушка d-link тоже гигабит так ресурс проца использовался равномерно. И еще есть разница устанавливать линукс уже с сетевой или добавить ее после установки результат будет одинаков? И еще если можно распределить нагрузку как именно это зделать ?

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

На двух сетевых баланс действительно будет лучше.

 

На подобной конфигурации только проц интел стояла сетевушка d-link тоже гигабит так ресурс проца использовался равномерно. И еще есть разница устанавливать линукс уже с сетевой или добавить ее после установки результат будет одинаков?

Да, это зависит и от сетевой тоже.

По второму вопросу - результат будет одинаков.

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

На подобной конфигурации только проц интел стояла сетевушка d-link тоже гигабит так ресурс проца использовался равномерно. И еще есть разница устанавливать линукс уже с сетевой или добавить ее после установки результат будет одинаков?

Разница в той самой цифирке в proc/irq/nn. На одной системе там прописано "1", а на второй "f". Сделайте echo "f" > /proc/irq/19/smp_affinity и будет вам кажущееся счастье.

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

На подобной конфигурации только проц интел стояла сетевушка d-link тоже гигабит так ресурс проца использовался равномерно. И еще есть разница устанавливать линукс уже с сетевой или добавить ее после установки результат будет одинаков?

Разница в той самой цифирке в proc/irq/nn. На одной системе там прописано "1", а на второй "f". Сделайте echo "f" > /proc/irq/19/smp_affinity и будет вам кажущееся счастье.

 

На данный момент ситуация такова в файле /proc/irq/19/smp_affinity по умолчанию стояло ffffffff после echo "f" > /proc/irq/19/smp_affinity значение автоматом меняется на 00000003, и нагрузка на второе ядро продолжатся а первое как всегда курит в сторонке. Может сетевую утилизировать и поставить d-link ?

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

На подобной конфигурации только проц интел стояла сетевушка d-link тоже гигабит так ресурс проца использовался равномерно. И еще есть разница устанавливать линукс уже с сетевой или добавить ее после установки результат будет одинаков?

Разница в той самой цифирке в proc/irq/nn. На одной системе там прописано "1", а на второй "f". Сделайте echo "f" > /proc/irq/19/smp_affinity и будет вам кажущееся счастье.

 

На данный момент ситуация такова в файле /proc/irq/19/smp_affinity по умолчанию стояло ffffffff после echo "f" > /proc/irq/19/smp_affinity значение автоматом меняется на 00000003

Значит балансировка уже была. Это значение - битовая маска по процессорам. 1 в соответствующем бите разрешает использовать соответствующее ядро.

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

А почему должны вымываться кеши? Прерывание выполняется на одном ядре до самого конца. Если в процессе обработки прерывания возникает новое - оно уходит на второе ядро (если smp_affinity это позволяет). Если свободных ядер нет - оно ставится в очередь и в работу вступает ksoftirqd.

Верно, прерывание обрабатывается целиком. Даже более, до конца обработки новое прерывание генерироваться не должно и никто его никуда не перекинет - выделение двух ядер для одного интерфейса не имеет смысла.

В принципе для тупого пропускания трафика через 1 интерфейс падения видимого производительности не будет, а вот для двух интерфейсов скачущих по ядрам будет постоянная принудительная синхронизация кешей через ОЗУ, и соответственно лишние cache miss.

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

На данный момент ситуация такова в файле /proc/irq/19/smp_affinity по умолчанию стояло ffffffff после echo "f" > /proc/irq/19/smp_affinity значение автоматом меняется на 00000003, и нагрузка на второе ядро продолжатся а первое как всегда курит в сторонке. Может сетевую утилизировать и поставить d-link ?

Значение 3 позволяет использовать оба ядра, скорее всего у вас работает демон irq_balance. Которые очень неплохо было бы убить))

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

На данный момент ситуация такова в файле /proc/irq/19/smp_affinity по умолчанию стояло ffffffff после echo "f" > /proc/irq/19/smp_affinity значение автоматом меняется на 00000003, и нагрузка на второе ядро продолжатся а первое как всегда курит в сторонке. Может сетевую утилизировать и поставить d-link ?

Значение 3 позволяет использовать оба ядра, скорее всего у вас работает демон irq_balance. Которые очень неплохо было бы убить))

 

irq_balance в процессах не нашол.

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

service irqbalance status ?

От сетевой работа с прерываниями не зависит, смотрите с proc/interrupts растет ли число прерываний для обоих ядер на 19ом прерывании.

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

service irqbalance status ?

От сетевой работа с прерываниями не зависит, смотрите с proc/interrupts растет ли число прерываний для обоих ядер на 19ом прерывании.

 

service irqbalance status

irqbalance: unrecognized service

 

смотрел не растет.

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

Чудес ведь не бывает. Пробуй записать в smp_affinity "1", посмотреть прерывания. Потом "2", и еще посмотреть, будет ли меняться активное ядро.

Ну и надо найти волшебника меняющего аффинити без нашего ведома)

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

Значение 3 позволяет использовать оба ядра, скорее всего у вас работает демон irq_balance. Которые очень неплохо было бы убить))

 

Бррррр, а чем плох irq_balance? Особо спорить не хочу на эту тему, не вникал, но хотел бы узнать плохие стороные этого.

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

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

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

Чудес ведь не бывает. Пробуй записать в smp_affinity "1", посмотреть прерывания. Потом "2", и еще посмотреть, будет ли меняться активное ядро.

Ну и надо найти волшебника меняющего аффинити без нашего ведома)

Нагрузка меняется в зависимости от того какое ядро поставить и первое и второе но два вместе не работает.

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

А вообще от чего это зависит равномерное использование двух ядерного проца? От проца материнской платы сетевушки ? А то настает вечер бывает на втором ядре и полка, а первое загружено на 5-15% .

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

Уважаемый ТС. Вам тут пудрят мозги. Ни 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 вообще.

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

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

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

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

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

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

Вхід

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

Войти сейчас
  • Зараз на сторінці   0 користувачів

    Немає користувачів, що переглядають цю сторінку.

×
×
  • Створити нове...