roysbike Опубликовано 17 февраля, 2014 (изменено) · Жалоба Добрый вечер уважаемы коллеги. Прошу помощи в debian. Карта Intel X520-DA2 (82599). Как указать в ручную кол-во очередей? Во freebsd это делается loader.conf hw.igb.num_queues="1". Как я понял надо прописать опции драйвера в /etc/modprobe.d/ixgbe.conf . Чтобы после загрузки , проставились очереди карты в ручную , а не равному кол-ву ядер. Изменено 17 февраля, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
orlik Опубликовано 18 февраля, 2014 · Жалоба modinfo ixgbe parm: RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 18 февраля, 2014 · Жалоба modinfo ixgbe parm: RSS:Number of Receive-Side Scaling Descriptor Queues, default 0=number of cpus (array of int) Видимо драйер такой, нету это параметра. filename: /lib/modules/3.2.0-43-generic/kernel/drivers/net/ethernet/intel/ixgbe/ixgbe.ko version: 3.6.7-k license: GPL description: Intel(R) 10 Gigabit PCI Express Network Driver author: Intel Corporation, <linux.nics@intel.com> depends: mdio,dca intree: Y vermagic: 3.2.0-43-generic SMP mod_unload modversions parm: max_vfs:Maximum number of virtual functions to allocate per physical function (uint) parm: allow_unsupported_sfp:Allow unsupported and untested SFP+ modules on 82599-based adapters (uint) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ThreeDHead Опубликовано 18 февраля, 2014 · Жалоба Видимо драйер такой, нету это параметра. Так всегда. Качайте свежие исходники драйвера с Интела и компильте. Потом появятся все параметры. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Pasha_49 Опубликовано 13 марта, 2015 · Жалоба Добрый день! Имеется маршрутизатор с двумя CPU Xeon X5650 + сетевая карта Intel 82599EB на 2x10G порта. Debian 3.2.65-1+deb7u1 x86_64. В один порт трафик входит, с другого выходит. Изначально прерывания были раскиданы этим скриптом: #!/bin/bash ncpus=`grep -ciw ^processor /proc/cpuinfo` test "$ncpus" -gt 1 || exit 1 n=0 for irq in `cat /proc/interrupts | grep eth | awk '{print $1}' | sed s/\://g` do f="/proc/irq/$irq/smp_affinity" test -r "$f" || continue cpu=$[$ncpus - ($n % $ncpus) - 1] if [ $cpu -ge 0 ] then mask=`printf %x $[2 ** $cpu]` echo "Assign SMP affinity: eth$n, irq $irq, cpu $cpu, mask 0x$mask" echo "$mask" > "$f" let n+=1 fi done Прерывания раскидывались так: CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 CPU8 CPU9 CPU10 CPU11 CPU12 CPU13 CPU14 CPU15 CPU16 CPU17 CPU18 CPU19 CPU20 CPU21 CPU22 CPU23 0: 3891 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-edge timer 1: 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-edge i8042 8: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-edge rtc0 9: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi acpi 12: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-edge i8042 20: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb2 21: 249 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi ipmi_si 22: 761 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi uhci_hcd:usb4, uhci_hcd:usb6, hpilo 23: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi uhci_hcd:usb3, uhci_hcd:usb5 64: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 DMAR_MSI-edge dmar0 67: 1923899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge hpsa0 71: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1999966434 IR-PCI-MSI-edge eth1-TxRx-0 72: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 654769257 0 IR-PCI-MSI-edge eth1-TxRx-1 73: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 554865078 0 0 IR-PCI-MSI-edge eth1-TxRx-2 74: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 153405985 0 0 0 IR-PCI-MSI-edge eth1-TxRx-3 75: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 283292596 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-4 76: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1328107112 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-5 77: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1171289864 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-6 78: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1189658320 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-7 79: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1289436987 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-8 80: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 1148436405 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-9 81: 10 0 0 0 0 0 0 0 0 0 0 0 0 1254035872 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-10 82: 10 0 0 0 0 0 0 0 0 0 0 0 1639494454 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-11 83: 10 0 0 0 0 0 0 0 0 0 0 1037776483 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-12 84: 10 0 0 0 0 0 0 0 0 0 704568569 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-13 85: 10 0 0 0 0 0 0 0 0 670791112 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-14 86: 15 0 0 0 0 0 0 0 637873385 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-15 87: 10 0 0 0 0 0 0 7575773 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-16 88: 10 0 0 0 0 0 6808035 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-17 89: 10 0 0 0 0 7312367 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-18 90: 10 0 0 0 7394121 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-19 91: 10 0 0 6916941 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-20 92: 10 0 6789984 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-21 93: 10 6532196 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-22 94: 6674588 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth1-TxRx-23 95: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 307704 IR-PCI-MSI-edge eth1 96: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3659091713 0 IR-PCI-MSI-edge eth0-TxRx-0 97: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3987911310 0 0 IR-PCI-MSI-edge eth0-TxRx-1 98: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3872853838 0 0 0 IR-PCI-MSI-edge eth0-TxRx-2 99: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4207301007 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-3 100: 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 337404472 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-4 101: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 659930817 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-5 102: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 504036066 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-6 103: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 631274366 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-7 104: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 287377451 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-8 105: 7 0 0 0 0 0 0 0 0 0 0 0 0 397714442 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-9 106: 7 0 0 0 0 0 0 0 0 0 0 0 356545567 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-10 107: 7 0 0 0 0 0 0 0 0 0 0 4123982601 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-11 108: 7 0 0 0 0 0 0 0 0 0 3769032000 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-12 109: 7 0 0 0 0 0 0 0 0 3763553316 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-13 110: 7 0 0 0 0 0 0 0 3737570554 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-14 111: 8 0 0 0 0 0 0 186089124 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-15 112: 7 0 0 0 0 0 27065362 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-16 113: 7 0 0 0 0 27958899 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-17 114: 7 0 0 0 28832067 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-18 115: 7 0 0 29507216 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-19 116: 7 0 30988926 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-20 117: 7 27350298 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-21 118: 26788194 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth0-TxRx-22 119: 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2743521 IR-PCI-MSI-edge eth0-TxRx-23 120: 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 183073 0 IR-PCI-MSI-edge eth0 121: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6172091 0 0 IR-PCI-MSI-edge eth6-0 122: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1930017378 0 0 0 IR-PCI-MSI-edge eth6-1 123: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1960242293 0 0 0 0 IR-PCI-MSI-edge eth6-2 124: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2260292624 0 0 0 0 0 IR-PCI-MSI-edge eth6-3 125: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1750605489 0 0 0 0 0 0 IR-PCI-MSI-edge eth6-4 126: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1700149964 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth6-5 127: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1766248259 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth6-6 128: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1214345123 0 0 0 0 0 0 0 0 0 IR-PCI-MSI-edge eth6-7 NMI: 111020 119891 87509 93150 88111 97973 92063 302004 415474 426479 413839 407432 373946 385482 361609 411737 397528 409919 397537 437073 445543 421218 415299 310427 Non-maskable interrupts LOC: 61736524 63708133 43337824 40916803 47995119 42519973 49062746 184319289 218695111 218085477 219780064 218422471 209135343 209610724 254657842 223777066 218140241 221126960 233865693 219906474 219176039 214341953 211581521 149816027 Local timer interrupts SPU: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Spurious interrupts PMI: 111020 119891 87509 93150 88111 97973 92063 302004 415474 426479 413839 407432 373946 385482 361609 411737 397528 409919 397537 437073 445543 421218 415299 310427 Performance monitoring interrupts IWI: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 IRQ work interrupts RES: 6567450 5393672 5940375 3980666 5578303 4143103 4914192 3353556 7532778 3123193 5032316 4183244 356079 346598 562013 447568 323865 448250 267190 879307 245716 252700 266586 655123 Rescheduling interrupts CAL: 9137 600327 9167 9158 9121 9134 9383 9376 9349 9329 9367 9361 9353 9366 6450 6205 8849 8817 9371 9368 9242 9230 9331 9323 Function call interrupts TLB: 440 318 266 189 370 369 421 43749 95062 85067 91300 82070 72153 71219 620395 592822 277743 286203 247936 199033 136603 137548 91786 68392 TLB shootdowns TRM: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Threshold APIC interrupts MCE: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Machine check exceptions MCP: 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 3848 Machine check polls ERR: 0 MIS: 0 Но проблемы была в том, что первые 7 ядер не нагружались. В atop было видно, что на первых семи ядрах irq=0%, в htop не показывало нагрузку на первые ядра. В целом сервер работал хорошо, мршрутизировал без проблем. Но хотелось всё сделать красиво. Прочитал эту рекомендацию: Все хорошо, только для начала выясните какие ядра какому процу принадлежат, не факт что они идут по очереди! Очереди одной сетевой должны обрабатываться одним процом. Выполнил скрипт с того же сообщения, и выяснил, что ядра чередуются через одно с разных процессоров: Node #0 Core #18 Core #20 Core #22 Core #0 Core #2 Core #4 Core #6 Core #8 Core #10 Core #12 Core #14 Core #16 Node #1 Core #19 Core #21 Core #23 Core #1 Core #3 Core #5 Core #7 Core #9 Core #11 Core #13 Core #15 Core #17 Раскидал прерывания в соответствии с этим постом: ./interrupts.sh eth0 0 2 4 6 8 10 12 14 16 18 20 22 ./interrupts.sh eth1 1 3 5 7 9 11 13 15 17 19 21 23 и пробовал так: ./interrupts.sh eth0- 18 20 22 0 2 4 6 8 10 12 14 16 ./interrupts.sh eth1- 19 21 23 1 3 5 7 9 11 13 15 17 В результате прерывания раскидались красиво, нагрузка на ядра стала почти равномерной. Но с сервером начали происходить странные баги: Если пользовательский трафик доходит до 1.5 гбита и выше, то всё работает хорошо. Если пользовательский трафик меньше 1.5 гбита, то идёт резкая просадка по трафику до 281 мбита, со скачками до гигабита (примерно на 10 секунд - минута). Так же во время просадки наблюдаются дропы пакетов на сетевых интерфейсах, и только на линуксовом сервере, т.е. на интерфейсах сетевого оборудования на другой стороне сетевых карт ошибок нету. Ошибки идут в rx_missed_errors, fdir_miss, fdir_overflow, fdir_match. В результате по утрам и ночью интернет работает с просадкой по трафику. Как только нагрузка увеличивается выше 1.5 гбита, всё работает в штатном режиме. При возвращении прерываний по очереди, как с первого скрипта, сервер начинает работать без проблем, трафик становится в норме, ошибки на интерфейсах пропадают. Во время проблем нагрузка на процессор не возрастала. Ниже графики при прерываниях с первого скрипта, когда всё работает нормально: И графики при втором варианте раскидывания прерываний, когда наблюдаются проблемы. Красным отмечено проседание трафика, и иногда скачки битрейта до нормального состояния: У кого-нибудь есть предположения, в чём может быть проблема? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 13 марта, 2015 · Жалоба Половина проблем(с очередями/раскидыванием и незагрузкой всех ядер) у вас от включенного HT, на кой фиг он на маршрутизаторе?? Вторая половина(с провалами) подозреваю из-за невыключенного intel_idle, на низкой нагрузке система банально уходит в глубокий сон и начинает тупить. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
telecom Опубликовано 14 марта, 2015 · Жалоба ...невыключенного intel_idle, на низкой нагрузке система банально уходит в глубокий сон и начинает тупить. +1 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
k0ste Опубликовано 19 ноября, 2015 · Жалоба Все хорошо, только для начала выясните какие ядра какому процу принадлежат, не факт что они идут по очереди! Очереди одной сетевой должны обрабатываться одним процом. show-cpus.sh #!/bin/bash (cat /sys/devices/system/node/online | \ awk ' \ { \ split($1, parts, ","); \ for (part in parts) { \ split(parts[part], items, "-"); \ seq_start = items[1]; \ seq_end = items[2]; \ if (seq_start == "") {seq_start = 0;}; \ if (seq_end == "") {seq_end = seq_start;} \ for (seq = seq_start; seq <= seq_end; seq++) {print seq;} \ } \ }') | \ while read NODE do echo "Node #$NODE" (cat /sys/devices/system/node/node${NODE}/cpulist | \ awk ' \ { \ split($1, parts, ","); \ for (part in parts) { \ split(parts[part], items, "-"); \ seq_start = items[1]; \ seq_end = items[2]; \ if (seq_start == "") {seq_start = 0;}; \ if (seq_end == "") {seq_end = seq_start;} \ for (seq = seq_start; seq <= seq_end; seq++) {print seq;} \ } \ }') | \ while read CORE do echo -e "\tCore #$CORE" done done Пример вывода: Node #0 Core #0 Core #1 Core #2 Core #3 Core #8 Core #9 Core #10 Core #11 Node #1 Core #4 Core #5 Core #6 Core #7 Core #12 Core #13 Core #14 Core #15 Или так: numactl --hardware | grep cpus node 0 cpus: 0 1 2 3 4 5 12 13 14 15 16 17 node 1 cpus: 6 7 8 9 10 11 18 19 20 21 22 23 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...