nickD Posted October 6, 2008 Posted October 6, 2008 Помогите плиз. Идут drop'ы на ethernet интрефейсе Linux router'а. Увеличиваются когда скорость больше 100МБит/c. OS LINUX kernel 2.6.24.7. По CRC на интерфейсах ошибок нет. #lspci 0e:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5721 Gigabit Ethernet PCI Express (rev 11) # ethtool eth0 Settings for eth0: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on Supports Wake-on: g Wake-on: g Current message level: 0x000000ff (255) Link detected: yes #ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:1A:4B:0A:85:08 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2079207571 errors:0 dropped:28955 overruns:0 frame:15171 TX packets:2604387915 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2719515263 (2.5 GiB) TX bytes:1020089104 (972.8 MiB) Interrupt:16 #ethtool -S eth0 NIC statistics: rx_octets: 2858882371 rx_fragments: 0 rx_ucast_packets: 2078881775 rx_mcast_packets: 505817 rx_bcast_packets: 289427 rx_fcs_errors: 0 rx_align_errors: 0 rx_xon_pause_rcvd: 0 rx_xoff_pause_rcvd: 0 rx_mac_ctrl_rcvd: 0 rx_xoff_entered: 0 rx_frame_too_long_errors: 0 rx_jabbers: 0 rx_undersize_packets: 0 rx_in_length_errors: 0 rx_out_length_errors: 0 rx_64_or_less_octet_packets: 0 rx_65_to_127_octet_packets: 0 rx_128_to_255_octet_packets: 0 rx_256_to_511_octet_packets: 0 rx_512_to_1023_octet_packets: 0 rx_1024_to_1522_octet_packets: 0 rx_1523_to_2047_octet_packets: 0 rx_2048_to_4095_octet_packets: 0 rx_4096_to_8191_octet_packets: 0 rx_8192_to_9022_octet_packets: 0 tx_octets: 1439261655 tx_collisions: 0 tx_xon_sent: 0 tx_xoff_sent: 0 tx_flow_control: 0 tx_mac_errors: 0 tx_single_collisions: 0 tx_mult_collisions: 0 tx_deferred: 0 tx_excessive_collisions: 0 tx_late_collisions: 0 tx_collide_2times: 0 tx_collide_3times: 0 tx_collide_4times: 0 tx_collide_5times: 0 tx_collide_6times: 0 tx_collide_7times: 0 tx_collide_8times: 0 tx_collide_9times: 0 tx_collide_10times: 0 tx_collide_11times: 0 tx_collide_12times: 0 tx_collide_13times: 0 tx_collide_14times: 0 tx_collide_15times: 0 tx_ucast_packets: 2604144030 tx_mcast_packets: 211702 tx_bcast_packets: 539965 tx_carrier_sense_errors: 0 tx_discards: 0 tx_errors: 0 dma_writeq_full: 0 dma_write_prioq_full: 0 rxbds_empty: 15171 rx_discards: 28955 rx_errors: 0 rx_threshold_hit: 0 dma_readq_full: 0 dma_read_prioq_full: 0 tx_comp_queue_full: 0 ring_set_send_prod_index: 0 ring_status_update: 0 nic_irqs: 0 nic_avoided_irqs: 0 nic_tx_threshold_hit: 0 Вставить ник Quote
Илья Дмитриевич Posted October 6, 2008 Posted October 6, 2008 дропы были на 3com 905 к удивление моему перестали сыпать на обычных rlt 8139 Вставить ник Quote
nuclearcat Posted October 6, 2008 Posted October 6, 2008 ethtool -g eth0 что покажет? Какой процессор? Что говорит mpstat -P ALL 1 ? (пакет sysstat) cat /proc/interrupts;sleep 5;cat /proc/interrupts что тут покажет? Вставить ник Quote
nickD Posted October 6, 2008 Author Posted October 6, 2008 # ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 511 RX Mini: 0 RX Jumbo: 0 TX: 511 Current hardware settings: RX: 200 RX Mini: 0 RX Jumbo: 0 TX: 511 # cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 15 model name : Intel® Xeon® CPU 5130 @ 2.00GHz stepping : 6 cpu MHz : 1995.107 cache size : 4096 KB physical id : 0 siblings : 2 core id : 0 cpu cores : 2 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 10 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 m bogomips : 3993.27 clflush size : 64 mpstat -P ALL 1 Linux 2.6.24.7 (b1-bone) 10/06/2008 01:20:38 PM CPU %user %nice %sys %iowait %irq %soft %steal %idle intr/s 01:20:39 PM all 19.90 0.00 0.50 0.00 2.49 6.47 0.00 70.65 23264.65 01:20:39 PM 0 36.36 0.00 0.00 0.00 2.02 6.06 0.00 55.56 11738.38 01:20:39 PM 1 4.04 0.00 1.01 0.00 2.02 7.07 0.00 87.88 11527.27 cat /proc/interrupts CPU0 CPU1 0: 85 1 IO-APIC-edge timer 1: 0 0 IO-APIC-edge i8042 8: 4 1 IO-APIC-edge rtc 9: 0 0 IO-APIC-fasteoi acpi 14: 31 6 IO-APIC-edge ide0 16: 20592 478038240 IO-APIC-fasteoi eth0 18: 4840 2743661 IO-APIC-fasteoi libata 19: 40 1 IO-APIC-fasteoi uhci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb3, ehci_hcd:usb4 20: 775559567 3759 IO-APIC-fasteoi eth1 NMI: 0 0 Non-maskable interrupts LOC: 116379018 116379566 Local timer interrupts RES: 771264 954873 Rescheduling interrupts CAL: 15129 16310 function call interrupts TLB: 7369 6962 TLB shootdowns TRM: 0 0 Thermal event interrupts SPU: 0 0 Spurious interrupts ERR: 0 MIS: 0 Вставить ник Quote
martini Posted October 6, 2008 Posted October 6, 2008 (edited) как вариант - уйти с IO-APIC-leve на MSI по прерываниям. Ядреный кот тут много собак на этом съел, есть даже темка гдето тут , как раз обсуждается момент по прерываниям Edited October 6, 2008 by martini Вставить ник Quote
nuclearcat Posted October 7, 2008 Posted October 7, 2008 Не факт, что на этой мамке нет проблем с MSI. ЧТо приходит в голову: ethtool -G поставить максимальный RX ring buffer (задрать до 511) обновить ядро (надо посмотреть какие фиксы делали в tg3) включить flow control (он должен поддерживаться на всех участках сети общающихся с этим сервером) Еще вопрос - на машине conntrack/nat есть? В смысле запущены? Еще имеют немаловажное значение опции ядра, с которыми оно было собрано. В частности "тяжеловесные" дебаги. Ну и интересует сколько HZ стоит, есть ли tickless, highres таймеры и шейперы, есть ли шейперы на вход (ingress? ifb?). И последнее. Посмотите на кол-во прошедших пакетов и дропы. Вы статистически смотрели? Это вроде 0.00139259785332899700% потерь. Интересно, какая именно скорость на интерфейсе в данный момент? можете ifconfig eth0;sleep 10;ifconfig eth0 показать? Чтоб прикинуть масштаб проблемы. Отступление от темы, крик души... мож уже конечно писал: Имеет значение таймер, если он не tsc (а hpet,apic или не дай бог pic), лучше на нагруженной тачке ping и tcpdump не запускать ни под каким соусом. Я долго спорил с netdev девелоперами, что запущенный юзером пинг не должен уводить тачку в кому. Как только какое-то приложение ставит udp/raw сокету SO_TIMESTAMP, и через машину протекает хороший поток - машинке настает кирдык, т.к. она начинает в IRQ контексте читать таймеры (а они тормознутые/дорогие для процессора). У меня есть такой яркий пример, Opteron (продукты AMD страдают корявым TSC, в итоге пользуемся в лучшем случае HPET). Через машинку пробегает мегабит 300-400 траффика. Машина двухкотловая, дорогая (Sun Fire X4100), но если я забываюсь и запускаю на ней пинг - мне очень непросто будет уже нажать Ctrl+C. Ну и другим на заметку. Если у вас: Router-Dora /sys # cat /sys/devices/system/clocksource/clocksource0/current_clocksource hpet Вот то что я описал выше - может вполне себе произойти. И сделали они это, уж извините за слово, из-за каких-то ***ов-биржевиков (из-за которых мы все можем оказаться в глубокой жопе), так как этим индивидуумам дескать имеют значения микросекунды, чтоб знать когда именно пришел пакет по сделке. (К конечном счете их это не спасло как я вижу). Вставить ник Quote
martin74 Posted October 7, 2008 Posted October 7, 2008 Эм... А можно спрошу? [root@files2 ~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource jiffies Это файловый сервер. Отдача - до 1-1.2 гбита... Пытаюсь разогнать побольше - не получается.... Вставить ник Quote
nickD Posted October 7, 2008 Author Posted October 7, 2008 Спасибо за ответы. дебаги вроде убраны в ядре. nat'ов и шейперов нет. Попробую задрать RX ring по результатам отпишусь. Почитаю про IO-APIC-leve на MSI. Вопрос как узнать включается и поддерживается ли на этой карте NAPI Polling? Вставить ник Quote
nuclearcat Posted October 7, 2008 Posted October 7, 2008 Эм... А можно спрошу?[root@files2 ~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource jiffies Это файловый сервер. Отдача - до 1-1.2 гбита... Пытаюсь разогнать побольше - не получается.... Нужно смотреть в oprofile - где именно затык. У файлового сервера обычно нет больших потребностей в таймерах.Кроме того именно jiffies может быть и неплохо, я не помню точно как они работают (у меня они не встречаются). Таймеры любят шейперы, conntrack с большим кол-вом соединений. nickD скорее всего, если отдельной опции NAPI - уже все включено Вставить ник Quote
martin74 Posted October 7, 2008 Posted October 7, 2008 ... научите пользоваться oprofile.... Вставить ник Quote
nuclearcat Posted October 7, 2008 Posted October 7, 2008 Ставишь Поддержка в ядре должна быть включена opcontrol --init --vmlinux=/путь/кисходникамядра/vmlinux (vmlinux сразу в корне, обязательно того ядра что юзаешь) потом в момент наибольшего загруза opcontrol --start желательно секунд 30 хотяб чтоб пособирал данные opcontrol --stop opreport -l|more - вот это и кидать сюда - обьясню результаты Вставить ник Quote
martin74 Posted October 7, 2008 Posted October 7, 2008 vmlinux - имеется в виду несжатое ядро? На сервере стоит CentOS 5.2 x86_64. Что то мне подсказывает, что придется ставить сорцы ядра и компилить... Вставить ник Quote
DemYaN Posted October 7, 2008 Posted October 7, 2008 (edited) В rhel4 был несжатый и нестрипаный образ ядра, лежал в kernel-debuginfo, с Дебианом хуже - только ребилд. Edited October 7, 2008 by DemYaN Вставить ник Quote
nuclearcat Posted October 7, 2008 Posted October 7, 2008 http://www.centos.org/docs/5/html/Deployme...onfiguring.html Для CentOS Вставить ник Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.