Painter Опубликовано 22 января, 2014 (изменено) · Жалоба Судя по статистике локов, большая часть из них это шейпер. Но как это влияет на tx_restart_queue, я не знаю (а может все наоборот). Предположение: шейпер загружает CPU, CPU не успевает генерировать прерывания, сетевушка не успевает забирать пакеты из буфера, буфер переполняется, счетчик увеличивается. А если отключить шейпер, убрать qdisc с интерфейса, _ticket_spinlock так же на первом месте? увеличиваются ли tx_restart_queue? А еще какие-то счетчики увеличиваются вместе с tx_restart_queue? Я бы еще попробовал обновить ядро и модуль ixgbe Наврятли можно как-то решить проблему с локами в htb, только использовать другие дисциплины (mqprio, multiq), которые лучше параллелятся на несколько CPU и очередей сетевой карты. Но там вылазиет еще куча проблем. Изменено 22 января, 2014 пользователем Painter Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
heap Опубликовано 22 января, 2014 · Жалоба Судя по статистике локов, большая часть из них это шейпер. Но как это влияет на tx_restart_queue, я не знаю (а может все наоборот). Предположение: шейпер загружает CPU, CPU не успевает генерировать прерывания, сетевушка не успевает забирать пакеты из буфера, буфер переполняется, счетчик увеличивается. А если отключить шейпер, убрать qdisc с интерфейса, _ticket_spinlock так же на первом месте? увеличиваются ли tx_restart_queue? А еще какие-то счетчики увеличиваются вместе с tx_restart_queue? Я бы еще попробовал обновить ядро и модуль ixgbe Наврятли можно как-то решить проблему с локами в htb, только использовать другие дисциплины (mqprio, multiq), которые лучше параллелятся на несколько CPU и очередей сетевой карты. Но там вылазиет еще куча проблем. Я снимал стат не на сервере, где ixgbe, а с другого для анализа почему лок в принципе в топе везде. Там где ixgbe он уходил в гораздо более ощутимый отрыв, когда возникала проблема. Однако провести там анализ будет затруднительно, так как там где я тестировал с этими опциями нагрузка на CPU увеличивалась в разы, а значит я даже не смогу прожевать там тот объем трафика, с которого начиналась проблема. Пока наблюдаю за поведением с rx-usecs выставленным в значение, а не адаптивным. Также все же меня интересует вопрос с gro. Полопатив вчера гуголь и почитав на его тему - я не вижу от него ощутимого вреда для роутера (ну разве что для малых значений скоростей в шейпере). TSO/GSO судя по всему действительно лишнее. А вот с GRO ощутимо уменьшается нагрузка на CPU роутера в то время, как PPS и полоса остаются те же. По крайней мере в моем случае, так как по одну сторону от роутера бордер - 1 мак, по другую несколько агрегаторов - несколько маков. В итоге судя по описанию он на уровне сетевой собирает пакеты и пачкой передает на обработку в ядро, что, по видимому, сказывается в том числе на количестве прерываний и нагрузке. На джиттере также ничего военного не заметил. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 26 января, 2014 · Жалоба Кстати полное отключение intel_idle и установка idle_max=1(halt only) вообще не изменило реальное энергопотребление сервера(разница 2-3Вт, это уже погрешность измерений). Под idle_max=1 - имеется ввиду опция драйвера intel_idle.max_cstate? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 27 января, 2014 · Жалоба NiTr0 intel_idle.max_cstate=0 processor.max_cstate=1 Так в tuning guides для 10g карточек рекомендуют, процессор дальше C1(halt) не уходит. И энергосбережение работает, и по ресурсам бесплатно. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 27 января, 2014 · Жалоба Спасибо, поэкспериментирую. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Tamahome Опубликовано 3 февраля, 2014 (изменено) · Жалоба Кто подскажет как бороться/оптимизировать если: 15.01% [kernel] [k] fib_table_lookup ? 3.12.8-gentoo #1 SMP PREEMPT i686 Intel® Xeon® CPU E31220 @ 3.10GHz GenuineIntel GNU/Linux 313.38 Kpps/2.03 Gbps не ЧНН. Подозреваю что это результат вот этого.. http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=89aef8921bfbac22f00e04f8450f6e447db13e42 Изменено 3 февраля, 2014 пользователем Tamahome Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 20 марта, 2014 (изменено) · Жалоба Добрый вечер, уважаемые коллеги. На форму встречал, что выпиливают intel_idle из ядра. Подскажите, для чего он и как его выпилить из ядра(слить и пересобрать ядро?), тачка в продакшене , молотить 4 Гбит. Ubuntu 12.04 ядро 3.2.0-43, NAT Карты 82599ES. Вот весь вывод 8,38% [kernel] [k] intel_idle 6,57% [kernel] [k] __ticket_spin_lock 4,50% [ixgbe] [k] ixgbe_clean_rx_irq 4,24% [nf_conntrack] [k] ____nf_conntrack_find 3,82% [kernel] [k] ip_route_input_common 3,30% [ip_tables] [k] ipt_do_table 2,81% [kernel] [k] irq_entries_start 2,51% [ioatdma] [k] ioat2_issue_pending 2,42% [kernel] [k] dma_issue_pending_all 2,10% [kernel] [k] add_interrupt_randomness 2,02% [ixgbe] [k] ixgbe_clean_tx_irq 1,49% [kernel] [k] rcu_needs_cpu 1,22% [kernel] [k] dev_queue_xmit 1,21% [kernel] [k] nf_iterate 1,08% [kernel] [k] kfree 0,99% [kernel] [k] kmem_cache_free 0,98% [ixgbe] [k] ixgbe_tx_map 0,94% [kernel] [k] __netif_receive_skb 0,93% [kernel] [k] __slab_free 0,93% [kernel] [k] __slab_alloc 0,91% [kernel] [k] __napi_complete 0,71% [kernel] [k] ktime_get_real 0,66% [nf_conntrack] [k] tcp_in_window 0,64% [kernel] [k] __alloc_skb 0,64% [kernel] [k] native_read_tsc 0,63% [ixgbe] [k] ixgbe_alloc_rx_buffers 0,62% [kernel] [k] menu_select 0,58% [kernel] [k] netif_skb_features 0,58% [nf_conntrack] [k] nf_conntrack_in 0,57% [ixgbe] [k] ixgbe_poll 0,56% [kernel] [k] __napi_schedule 0,56% [nf_nat] [k] find_appropriate_src 0,55% [kernel] [k] free_pages_prepare 0,52% [kernel] [k] _raw_read_lock 0,51% [nf_conntrack] [k] nf_conntrack_tuple_taken 0,50% [kernel] [k] prep_new_page 0,49% [ixgbe] [k] ixgbe_select_queue 0,48% [kernel] [k] rcu_exit_nohz 0,48% [kernel] [k] do_csum 0,47% [kernel] [k] ip_finish_output 0,46% [ixgbe] [k] ixgbe_msix_clean_rings 0,45% [kernel] [k] net_rx_action 0,45% [kernel] [k] local_bh_enable В час пик 4 гбит на вход 470 PPS по 50 процентов на ядро (12шт) процессор Intel E5-2430 0 @ 2.20GHz Изменено 20 марта, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 20 марта, 2014 · Жалоба roysbike Ну дык. Или пересобрать ядро без модуля intel_idle(он так и называется в конфиге), или добавить в параметры загрузки строку парой постов выше. Второй вариант естественно проще. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
roysbike Опубликовано 20 марта, 2014 (изменено) · Жалоба А для чего он, нужен ли он в сервере , если сервак форвардит ? Изменено 20 марта, 2014 пользователем roysbike Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 20 марта, 2014 · Жалоба экономить электроэнергию Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 23 июня, 2014 · Жалоба Мистика какая-то блин. Имеется карта: 01:00.0 Ethernet controller: Intel Corporation 82599EB 10-Gigabit SFI/SFP+ Network Connection (rev 01) Имеется постоянно висящий в perf top intel_idle: Events: 13K cycles 15.03% [kernel] [k] intel_idle 5.59% [ixgbe] [k] ixgbe_poll 3.60% [kernel] [k] skb_copy_bits 3.31% [pf_ring] [k] copy_data_to_ring 2.70% [kernel] [k] irq_entries_start 2.40% [pf_ring] [k] skb_ring_handler 2.40% [kernel] [k] atomic_add_return 2.14% fastnetmon [.] boost::unordered::detail::ptr_node<std::pair<unsigned int const, map_element> >* boost::unordered::detail::tabl 1.76% [kernel] [k] rcu_needs_cpu 1.52% [kernel] [k] add_interrupt_randomness 1.49% [kernel] [k] __netif_receive_skb 1.31% [pf_ring] [k] add_skb_to_ring 1.22% [kernel] [k] __alloc_skb Как и рекомендуют в сети, делаю вот так: intel_idle.max_cstate=0 processor.max_cstate=1 В параметрах ядра GRUB_CMDLINE_LINUX в /etc/default/grub (у меня Debian 7 + 3.2 ядро). После этого обновляю grub: update-grub grub-install /dev/sda reboot А на выходе имею: cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-amd64 root=UUID=6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 ro И тот же жрущий проц cpu_idle. Что за барабашка? :) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 23 июня, 2014 · Жалоба softraid? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 23 июня, 2014 · Жалоба softraid? Не-а :( Аппаратный Adaptec 6XXX серии. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
passer Опубликовано 23 июня, 2014 (изменено) · Жалоба grub-2 ? Если grub-0.9, то в /etc/default/grub не факт что смотрит. Если grub-2, тогда команды обновления конфига несколько устарели... А если стоят оба, то все на своих местах... Изменено 23 июня, 2014 пользователем passer Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DVM-Avgoor Опубликовано 23 июня, 2014 · Жалоба ну а в grub.cfg глянуть? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 23 июня, 2014 · Жалоба после груб-апдейт в конфиг груба реально попадает нужная опция? cat /boot/grub/grub.cfg | grep vmlinu Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 23 июня, 2014 · Жалоба Естественно, с конфигами все ок: root@netflow ~ # update-grub2 Generating grub.cfg ... Found linux image: /boot/vmlinuz-3.2.0-4-amd64 Found initrd image: /boot/initrd.img-3.2.0-4-amd64 done root@netflow ~ # cat /boot/grub/grub.cfg |grep csta linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 ro intel_idle.max_cstate=0 processor.max_cstate=1 linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 ro single intel_idle.max_cstate=0 processor.max_cstate=1 Мистика блин =) Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 23 июня, 2014 · Жалоба может у вас два /boot, а реальный не примонтирован и вы пишите в //boot Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 23 июня, 2014 · Жалоба cat /proc/cmdline что говорит? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 23 июня, 2014 · Жалоба cat /proc/cmdline что говорит? Как раз он говорит, что таких параметров не знает вовсе: cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-amd64 root=UUID=6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 ro Блин, мистика :) Отправил техников завтра смотреть по KVM что и как там в BIOS и при загрузке. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
s.lobanov Опубликовано 23 июня, 2014 · Жалоба fdisk -l, cat /proc/fstab, mount -v, cat /boot/grub/grub.cfg целиком Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Abram Опубликовано 23 июня, 2014 · Жалоба А можно сразу grub-install. Вдруг там древний LILO, например. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 23 июня, 2014 · Жалоба fdisk -l Disk /dev/sda: 899.8 GB, 899785162752 bytes 255 heads, 63 sectors/track, 109392 cylinders, total 1757392896 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x0005a249 Device Boot Start End Blocks Id System /dev/sda1 2048 7813119 3905536 83 Linux cat /etc/fstab proc /proc proc defaults 0 0 none /dev/pts devpts gid=5,mode=620 0 0 # /dev/sda1 none swap sw 0 0 UUID=3e37ae89-e548-4db1-a52a-4c33d17f29ef none swap sw 0 0 # /dev/sda2 / ext4 defaults 0 0 UUID=6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 / ext4 defaults 0 0 Для истории - когда я найду проблему я почувствую себя идиотом :) # # DO NOT EDIT THIS FILE # # It is automatically generated by grub-mkconfig using templates # from /etc/grub.d and settings from /etc/default/grub # ### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default="0" if [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi function savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi } function load_video { insmod vbe insmod vga insmod video_bochs insmod video_cirrus } insmod part_msdos insmod ext2 set root='(/dev/sda,msdos2)' search --no-floppy --fs-uuid --set=root 6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 if loadfont /usr/share/grub/unicode.pf2 ; then set gfxmode=640x480 load_video insmod gfxterm insmod part_msdos insmod ext2 set root='(/dev/sda,msdos2)' search --no-floppy --fs-uuid --set=root 6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 set locale_dir=($root)/boot/grub/locale set lang=en_US insmod gettext fi terminal_output gfxterm set timeout=5 ### END /etc/grub.d/00_header ### ### BEGIN /etc/grub.d/05_debian_theme ### set menu_color_normal=cyan/blue set menu_color_highlight=white/blue ### END /etc/grub.d/05_debian_theme ### ### BEGIN /etc/grub.d/10_linux ### menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64' --class debian --class gnu-linux --class gnu --class os { load_video insmod gzio insmod part_msdos insmod ext2 set root='(/dev/sda,msdos2)' search --no-floppy --fs-uuid --set=root 6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 echo 'Loading Linux 3.2.0-4-amd64 ...' linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 ro intel_idle.max_cstate=0 processor.max_cstate=1 echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-3.2.0-4-amd64 } menuentry 'Debian GNU/Linux, with Linux 3.2.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os { load_video insmod gzio insmod part_msdos insmod ext2 set root='(/dev/sda,msdos2)' search --no-floppy --fs-uuid --set=root 6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 echo 'Loading Linux 3.2.0-4-amd64 ...' linux /boot/vmlinuz-3.2.0-4-amd64 root=UUID=6b3b84d5-3e4b-4cf7-9aa0-24834403fad1 ro single intel_idle.max_cstate=0 processor.max_cstate=1 echo 'Loading initial ramdisk ...' initrd /boot/initrd.img-3.2.0-4-amd64 } ### END /etc/grub.d/10_linux ### ### BEGIN /etc/grub.d/20_linux_xen ### ### END /etc/grub.d/20_linux_xen ### ### BEGIN /etc/grub.d/30_os-prober ### ### END /etc/grub.d/30_os-prober ### ### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. ### END /etc/grub.d/40_custom ### ### BEGIN /etc/grub.d/41_custom ### if [ -f $prefix/custom.cfg ]; then source $prefix/custom.cfg; fi ### END /etc/grub.d/41_custom ### Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
DVM-Avgoor Опубликовано 23 июня, 2014 · Жалоба Не проще скомпилить ядро без intel_idle? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pavel.odintsov Опубликовано 24 июня, 2014 · Жалоба Неа, не проще :) Машина не профильный софт-роутер, а анализатор пакетов, поэтому очень не хочется городить с кастомными ядрами. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...