Jump to content

Recommended Posts

Posted

Помогите плиз.

Идут 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

 

Posted

# 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

 

Posted (edited)

как вариант - уйти с IO-APIC-leve на MSI по прерываниям.

Ядреный кот тут много собак на этом съел, есть даже темка гдето тут , как раз обсуждается момент по прерываниям

Edited by martini
Posted

Не факт, что на этой мамке нет проблем с 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

Вот то что я описал выше - может вполне себе произойти.

 

И сделали они это, уж извините за слово, из-за каких-то ***ов-биржевиков (из-за которых мы все можем оказаться в глубокой жопе), так как этим индивидуумам дескать имеют значения микросекунды, чтоб знать когда именно пришел пакет по сделке. (К конечном счете их это не спасло как я вижу).

 

 

Posted

Эм... А можно спрошу?

[root@files2 ~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource

jiffies

 

Это файловый сервер. Отдача - до 1-1.2 гбита... Пытаюсь разогнать побольше - не получается....

Posted

Спасибо за ответы.

 

дебаги вроде убраны в ядре.

nat'ов и шейперов нет.

 

Попробую задрать RX ring по результатам отпишусь.

Почитаю про IO-APIC-leve на MSI.

 

Вопрос как узнать включается и поддерживается ли на этой карте NAPI Polling?

Posted
Эм... А можно спрошу?

[root@files2 ~]# cat /sys/devices/system/clocksource/clocksource0/current_clocksource

jiffies

 

Это файловый сервер. Отдача - до 1-1.2 гбита... Пытаюсь разогнать побольше - не получается....

Нужно смотреть в oprofile - где именно затык. У файлового сервера обычно нет больших потребностей в таймерах.

Кроме того именно jiffies может быть и неплохо, я не помню точно как они работают (у меня они не встречаются).

 

Таймеры любят шейперы, conntrack с большим кол-вом соединений.

 

nickD скорее всего, если отдельной опции NAPI - уже все включено

Posted

Ставишь

Поддержка в ядре должна быть включена

opcontrol --init --vmlinux=/путь/кисходникамядра/vmlinux (vmlinux сразу в корне, обязательно того ядра что юзаешь)

потом в момент наибольшего загруза

opcontrol --start

желательно секунд 30 хотяб чтоб пособирал данные

opcontrol --stop

opreport -l|more - вот это и кидать сюда - обьясню результаты

Posted

vmlinux - имеется в виду несжатое ядро?

На сервере стоит CentOS 5.2 x86_64.

Что то мне подсказывает, что придется ставить сорцы ядра и компилить...

Posted (edited)

В rhel4 был несжатый и нестрипаный образ ядра, лежал в kernel-debuginfo, с Дебианом хуже - только ребилд.

Edited by DemYaN

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.