speedfire87 7 Posted 2010-10-06 13:54:59 Share Posted 2010-10-06 13:54:59 Поставил сутевушку Intel гигабитную, сервер двух ядерный amd 2.4 debian lanny в htop видно что использует одно ядро, как сетевушку заставить нагружать не одно ядро а 2 сразу, то есть использовать ресурс процессора равномерно. Link to post Share on other sites
Prime 51 Posted 2010-10-06 14:25:42 Share Posted 2010-10-06 14:25:42 распределить irq cat /proc/interrupts? cho "f" > /proc/irq/ололо/smp_affinity IO-APIC пыщ-пыщь? Link to post Share on other sites
madf 279 Posted 2010-10-06 14:37:15 Share Posted 2010-10-06 14:37:15 smp_affinity поможет пока в действие не вступит ksoftirqd. После этого жуткий перекос и лапки кверху. Собственно, то о чем я говорил в соседней теме. Link to post Share on other sites
Prime 51 Posted 2010-10-06 14:37:47 Share Posted 2010-10-06 14:37:47 на фре проще с этим Link to post Share on other sites
speedfire87 7 Posted 2010-10-06 14:41:34 Author Share Posted 2010-10-06 14:41:34 распределить 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 Link to post Share on other sites
KaYot 3,732 Posted 2010-10-06 15:06:39 Share Posted 2010-10-06 15:06:39 Одна сетевушка и должна/будет использовать одно ядро. Запись ff в smp_affinity сделает только хуже, заставляя обработчик прыгать по ядрам вымывая кеши и убивая в итоге сервер. Или ставить еще сетевку, или ставить сетевку типа intel ET board с multiqueue, или обновить ядро до 2.6.35.4 и потестить как работает тамошний софт-multiqueue.. Link to post Share on other sites
madf 279 Posted 2010-10-06 15:09:03 Share Posted 2010-10-06 15:09:03 распределить 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. Link to post Share on other sites
madf 279 Posted 2010-10-06 15:11:55 Share Posted 2010-10-06 15:11:55 Одна сетевушка и должна/будет использовать одно ядро. Запись ff в smp_affinity сделает только хуже, заставляя обработчик прыгать по ядрам вымывая кеши и убивая в итоге сервер. Или ставить еще сетевку, или ставить сетевку типа intel ET board с multiqueue, или обновить ядро до 2.6.35.4 и потестить как работает тамошний софт-multiqueue.. А почему должны вымываться кеши? Прерывание выполняется на одном ядре до самого конца. Если в процессе обработки прерывания возникает новое - оно уходит на второе ядро (если smp_affinity это позволяет). Если свободных ядер нет - оно ставится в очередь и в работу вступает ksoftirqd. Link to post Share on other sites
speedfire87 7 Posted 2010-10-06 15:13:22 Author Share Posted 2010-10-06 15:13:22 На подобной конфигурации только проц интел стояла сетевушка d-link тоже гигабит так ресурс проца использовался равномерно. И еще есть разница устанавливать линукс уже с сетевой или добавить ее после установки результат будет одинаков? И еще если можно распределить нагрузку как именно это зделать ? Link to post Share on other sites
madf 279 Posted 2010-10-06 15:14:48 Share Posted 2010-10-06 15:14:48 На двух сетевых баланс действительно будет лучше. На подобной конфигурации только проц интел стояла сетевушка d-link тоже гигабит так ресурс проца использовался равномерно. И еще есть разница устанавливать линукс уже с сетевой или добавить ее после установки результат будет одинаков? Да, это зависит и от сетевой тоже. По второму вопросу - результат будет одинаков. Link to post Share on other sites
KaYot 3,732 Posted 2010-10-06 15:16:26 Share Posted 2010-10-06 15:16:26 На подобной конфигурации только проц интел стояла сетевушка d-link тоже гигабит так ресурс проца использовался равномерно. И еще есть разница устанавливать линукс уже с сетевой или добавить ее после установки результат будет одинаков? Разница в той самой цифирке в proc/irq/nn. На одной системе там прописано "1", а на второй "f". Сделайте echo "f" > /proc/irq/19/smp_affinity и будет вам кажущееся счастье. Link to post Share on other sites
speedfire87 7 Posted 2010-10-06 15:20:23 Author Share Posted 2010-10-06 15:20:23 На подобной конфигурации только проц интел стояла сетевушка 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 ? Link to post Share on other sites
madf 279 Posted 2010-10-06 15:23:29 Share Posted 2010-10-06 15:23:29 На подобной конфигурации только проц интел стояла сетевушка 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 в соответствующем бите разрешает использовать соответствующее ядро. Link to post Share on other sites
KaYot 3,732 Posted 2010-10-06 15:24:50 Share Posted 2010-10-06 15:24:50 А почему должны вымываться кеши? Прерывание выполняется на одном ядре до самого конца. Если в процессе обработки прерывания возникает новое - оно уходит на второе ядро (если smp_affinity это позволяет). Если свободных ядер нет - оно ставится в очередь и в работу вступает ksoftirqd. Верно, прерывание обрабатывается целиком. Даже более, до конца обработки новое прерывание генерироваться не должно и никто его никуда не перекинет - выделение двух ядер для одного интерфейса не имеет смысла. В принципе для тупого пропускания трафика через 1 интерфейс падения видимого производительности не будет, а вот для двух интерфейсов скачущих по ядрам будет постоянная принудительная синхронизация кешей через ОЗУ, и соответственно лишние cache miss. Link to post Share on other sites
KaYot 3,732 Posted 2010-10-06 15:26:46 Share Posted 2010-10-06 15:26:46 На данный момент ситуация такова в файле /proc/irq/19/smp_affinity по умолчанию стояло ffffffff после echo "f" > /proc/irq/19/smp_affinity значение автоматом меняется на 00000003, и нагрузка на второе ядро продолжатся а первое как всегда курит в сторонке. Может сетевую утилизировать и поставить d-link ? Значение 3 позволяет использовать оба ядра, скорее всего у вас работает демон irq_balance. Которые очень неплохо было бы убить)) Link to post Share on other sites
speedfire87 7 Posted 2010-10-06 15:27:21 Author Share Posted 2010-10-06 15:27:21 Вердикт каков сетевая не умеет работать с двумя ядрами одновременно? Link to post Share on other sites
speedfire87 7 Posted 2010-10-06 15:28:30 Author Share Posted 2010-10-06 15:28:30 На данный момент ситуация такова в файле /proc/irq/19/smp_affinity по умолчанию стояло ffffffff после echo "f" > /proc/irq/19/smp_affinity значение автоматом меняется на 00000003, и нагрузка на второе ядро продолжатся а первое как всегда курит в сторонке. Может сетевую утилизировать и поставить d-link ? Значение 3 позволяет использовать оба ядра, скорее всего у вас работает демон irq_balance. Которые очень неплохо было бы убить)) irq_balance в процессах не нашол. Link to post Share on other sites
KaYot 3,732 Posted 2010-10-06 15:31:33 Share Posted 2010-10-06 15:31:33 service irqbalance status ? От сетевой работа с прерываниями не зависит, смотрите с proc/interrupts растет ли число прерываний для обоих ядер на 19ом прерывании. Link to post Share on other sites
speedfire87 7 Posted 2010-10-06 15:36:24 Author Share Posted 2010-10-06 15:36:24 service irqbalance status ? От сетевой работа с прерываниями не зависит, смотрите с proc/interrupts растет ли число прерываний для обоих ядер на 19ом прерывании. service irqbalance status irqbalance: unrecognized service смотрел не растет. Link to post Share on other sites
KaYot 3,732 Posted 2010-10-06 15:49:26 Share Posted 2010-10-06 15:49:26 Чудес ведь не бывает. Пробуй записать в smp_affinity "1", посмотреть прерывания. Потом "2", и еще посмотреть, будет ли меняться активное ядро. Ну и надо найти волшебника меняющего аффинити без нашего ведома) Link to post Share on other sites
Небесный 26 Posted 2010-10-06 16:52:20 Share Posted 2010-10-06 16:52:20 Значение 3 позволяет использовать оба ядра, скорее всего у вас работает демон irq_balance. Которые очень неплохо было бы убить)) Бррррр, а чем плох irq_balance? Особо спорить не хочу на эту тему, не вникал, но хотел бы узнать плохие стороные этого. Link to post Share on other sites
KaYot 3,732 Posted 2010-10-06 17:43:38 Share Posted 2010-10-06 17:43:38 Он не всегда правильно раскидывает прерывания, если для десктопной машины ему можно всю работу доверить и не заморачиваться, то для сервера лучше настроить все ручками. Link to post Share on other sites
speedfire87 7 Posted 2010-10-06 20:19:37 Author Share Posted 2010-10-06 20:19:37 Чудес ведь не бывает. Пробуй записать в smp_affinity "1", посмотреть прерывания. Потом "2", и еще посмотреть, будет ли меняться активное ядро. Ну и надо найти волшебника меняющего аффинити без нашего ведома) Нагрузка меняется в зависимости от того какое ядро поставить и первое и второе но два вместе не работает. Link to post Share on other sites
speedfire87 7 Posted 2010-10-06 20:21:08 Author Share Posted 2010-10-06 20:21:08 А вообще от чего это зависит равномерное использование двух ядерного проца? От проца материнской платы сетевушки ? А то настает вечер бывает на втором ядре и полка, а первое загружено на 5-15% . Link to post Share on other sites
Dark_Angel 5 Posted 2010-10-07 07:10:25 Share Posted 2010-10-07 07:10:25 Уважаемый ТС. Вам тут пудрят мозги. Ни 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 вообще. Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now