LINUX.ORG.RU
ФорумAdmin

ifconfig dropped packets и как изменить размер rx/tx буфера сетевой карты?


1

1

Изначально заметил, что в ifconfig есть dropped packets:

RX packets:12228181 errors:0 dropped:40207 overruns:0 frame:0

Сетевая карта TP-LINK TG-3269, чип Realtek RTL8169SC.

root@life:~# ethtool eth1
Settings for eth1:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 0
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000033 (51)
                               drv probe ifdown ifup
        Link detected: yes


root@life:~# ethtool -i eth1
driver: r8169
version: 2.3LK-NAPI
firmware-version: N/A
bus-info: 0000:04:02.0
supports-statistics: yes
supports-test: no
supports-eeprom-access: no
supports-register-dump: yes

На каком-то сайте прочитал, что эти пакеты могут дропаться из-за нехватки буфера. Как поменять? Пробовал вот так, как вычитал.. но не меняет.. возможно драйвер не поддерживает...

root@life:~# ethtool -g eth1
Ring parameters for eth1:
Cannot get device ring settings: Operation not supported

ОС: ubuntu 12.10

Есть предположения, почему дропаются пакеты в ifconfig и как изменить буфер сетевой?

ПС: на сервере стоят игровые сервера, на которые в пик загруженности поступает большое количество мелких UDP пакетов, и поэтому возможно не хватает буфера.. если это вообще из-за буфера...



Последнее исправление: post-factum (всего исправлений: 1)

Cannot get device ring settings: Operation not supported

что в переводе значит примерно «данная опция не поддерживается самой картой или драйвером на нее»

Pinkbyte ★★★★★
()

Если не путаю, то «Ring parameters» — это буфер внутри сетевой карточки (или внутри драйвера карточки). Если бы Линукс не успевал «вытаскивать» пакеты из сетёвки, то росло бы «overruns», а оно у вас ноль.

«Dropped» означает, что пакет был получен из буфера сетёвки в ОЗУ компьютера (сетевые буферы ядра), но не был доставлен до приложения. Либо у ядра не хватило памяти для обработки пакета, либо приложение не успело прочитать его из сокета. ИМХО, последнее наиболее вероятно в вашем случае.

Попробуйте покрутить:

/proc/sys/net/core/rmem_max
/proc/sys/net/core/rmem_default
/proc/sys/net/ipv4/udp_rmem_min
/proc/sys/net/ipv4/udp_mem
только сначала погуглите, что они настраивают.

mky ★★★★★
()
Последнее исправление: mky (всего исправлений: 1)
Ответ на: комментарий от mky

увеличил эти значения и еще несколько, что нагуглил. Спустя пару часов опять появились новые dropped пакеты....

Нашел еще интересную вещь. Из http://www.opennet.ru/docs/RUS/GigabitEthernet/ 3 колонка - Сколько раз обработка пакетов с устройства занимала слишком много времени.

root@life:~# cat /proc/net/softnet_stat

04e41b43 00000000 000003f1 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00305e6e 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

000037d4 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00003915 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

Преривание eth1 обрабатывает 1 проц.

root@life:~# cat /proc/interrupts

CPU0 CPU1 CPU2 CPU3

0: 41 223 3 0 IO-APIC-edge timer

1: 2 0 1 0 IO-APIC-edge i8042

6: 1 1 1 0 IO-APIC-edge floppy

8: 0 1 0 0 IO-APIC-edge rtc0

9: 0 0 0 0 IO-APIC-fasteoi acpi

12: 1 1 0 2 IO-APIC-edge i8042

16: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb3, pata_marvell

18: 148759745 3947 3933 3927 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5, uhci_hcd:usb8, eth1

19: 2213 1611 481535 184412 IO-APIC-fasteoi ata_piix, ata_piix, uhci_hcd:usb7

21: 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb4

23: 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6

43: 76 9405159 66 71 PCI-MSI-edge eth0

44: 63 62 61 62 PCI-MSI-edge snd_hda_intel

NMI: 26555 23637 24756 24316 Non-maskable interrupts

LOC: 704525356 789373156 651196877 661316393 Local timer interrupts

SPU: 0 0 0 0 Spurious interrupts

PMI: 26555 23637 24756 24316 Performance monitoring interrupts

IWI: 0 0 0 0 IRQ work interrupts

RES: 85244318 86120780 54575963 54559927 Rescheduling interrupts

CAL: 292705 5063 13491 10792 Function call interrupts

TLB: 18962 34733 18368 23926 TLB shootdowns

TRM: 0 0 0 0 Thermal event interrupts

THR: 0 0 0 0 Threshold APIC interrupts

MCE: 0 0 0 0 Machine check exceptions

MCP: 226 226 226 226 Machine check polls

ERR: 0

MIS: 0

vmart333
() автор топика
Ответ на: комментарий от vmart333
root@life:~# ethtool -S eth1
NIC statistics:
     tx_packets: 80219082
     rx_packets: 84249226
     tx_errors: 0
     rx_errors: 0
     rx_missed: 10912
     align_errors: 0
     tx_single_collisions: 0
     tx_multi_collisions: 0
     unicast: 83885594
     broadcast: 346501
     multicast: 17186
     tx_aborted: 0
     tx_underrun: 0
vmart333
() автор топика
Ответ на: комментарий от vmart333

Посмотрите статистику с помощью «ip -s -s link». Как я понимаю, у вас droped в ifconfig больше, чем rx_missed?

В usb порты ничего не воткнуто, что может генерить прерывание и мешать сетёвке? Вобще, ИМХО, странно, что у вас несколько устройств на одном прерывании.

mky ★★★★★
()
Ответ на: комментарий от mky

Нет, их столько же. Это я комп перегружал и не написал...

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:21:27:c6:c3:66 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped overrun mcast
    620788380  211561069 0       0       0       0
    RX errors: length  crc     frame   fifo    missed
               0        0       0       0       79341
    TX: bytes  packets  errors  dropped carrier collsns
    1101611196 191803694 0       0       0       0
    TX errors: aborted fifo    window  heartbeat
               0        0       0       0

Есть смысл увеличить количество процессоров на обработку прерываний?

RX packets:211671294 errors:0 dropped:79341 overruns:0 frame:0

vmart333
() автор топика
Ответ на: комментарий от mky

В usb порты ничего не воткнуто, 100%. Похоже, что только сетевая плата использует прерывания из тех устройств на одном прерывании.

vmart333
() автор топика

Давным давно, во времена 100Мбит, была подобная проблема. Всё решилось заменой Realtek сетевухи на Intel-скую с длинным буфером на самой карте.

Вообще Realtek никогда не годился для высокой сетевой нагрузки, хотя может сейчас что то поменялось.

Можете еще попробовать сетевухи на чипе Marvell, но я не знаю насколько хорош для них драйвер в Linux. Знакомый из магистрального провайдера видел их чипы в Cisco.

saper ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.