Ethernet watchdog zamanlayıcı kilitlenmelerini çözme


11

Bir arabirimi koklayan bir python komut dosyası çalıştırırsanız, her birkaç saatte bir kilitlenen bir debian linux kutusu (Debian Squeeze) var ...

Yığın izlemesi bu sorunun altına eklenir. Aslında, bnx2bir koklama oturumu başlattığımda ölecek gibi görünen bir Broadcom ethernet arabirimi ( sürücüsü) var ve daha sonra aynı arabirimden bir çerçeve iletmeye çalışıyor.

Söyleyebileceğim kadarıyla, bir çekirdek bekçi zamanlayıcısı devreye giriyor ...

NETDEV WATCHDOG: eth3 (bnx2): transmit queue 0 timed out

Watchdog zamanlayıcıları ile kontrol etmek için bir yol olduğunu düşünüyorum ioctl(ref: EmbeddedFreak: Linux watchdog nasıl kullanılır ).

Sorular (Orijinal):

Hangi watchdog zamanlayıcılarının eth3'ü kontrol ettiğini nasıl bulabilirim? Zamanlayıcıyı nasıl değiştirebileceğimi veya hatta bekçi köpeğini nasıl devre dışı bırakabileceğinizi söyleyebilirseniz bonus puan

Sorular (Düzeltilmiş):

Ethernet watchdog zamanlayıcısının soruna neden olmasını nasıl önleyebilirim?


Yığın izleme

Apr 30 08:38:44 Hotcoffee kernel: [275460.837147] ------------[ cut here ]------------
Apr 30 08:38:44 Hotcoffee kernel: [275460.837166] WARNING: at /build/buildd-linux-2.6_2.6.32-41squeeze2-amd64-NDo8b7/linux-2.6-2.6.32/debian/build/source_amd64_none/net/sched/sch_generic.c:261 dev_watchdog+0xe2/0x194()
Apr 30 08:38:44 Hotcoffee kernel: [275460.837169] Hardware name: PowerEdge R710
Apr 30 08:38:44 Hotcoffee kernel: [275460.837171] NETDEV WATCHDOG: eth3 (bnx2): transmit queue 0 timed out
Apr 30 08:38:44 Hotcoffee kernel: [275460.837172] Modules linked in: 8021q garp stp parport_pc ppdev lp parport pci_stub vboxpci vboxnetadp vboxnetflt vboxdrv ext2 loop psmouse power_meter button dcdbas evdev pcspkr processor serio_raw ext4 mbcache jbd2 crc16 sg sr_mod cdrom ses ata_generic sd_mod usbhid hid crc_t10dif enclosure uhci_hcd ehci_hcd megaraid_sas ata_piix thermal libata usbcore nls_base scsi_mod bnx2 thermal_sys [last unloaded: scsi_wait_scan]
Apr 30 08:38:44 Hotcoffee kernel: [275460.837202] Pid: 0, comm: swapper Not tainted 2.6.32-5-amd64 #1
Apr 30 08:38:44 Hotcoffee kernel: [275460.837204] Call Trace:
Apr 30 08:38:44 Hotcoffee kernel: [275460.837206]  <IRQ>  [<ffffffff81263086>] ? dev_watchdog+0xe2/0x194
Apr 30 08:38:44 Hotcoffee kernel: [275460.837211]  [<ffffffff81263086>] ? dev_watchdog+0xe2/0x194
Apr 30 08:38:44 Hotcoffee kernel: [275460.837217]  [<ffffffff8104df9c>] ? warn_slowpath_common+0x77/0xa3
Apr 30 08:38:44 Hotcoffee kernel: [275460.837220]  [<ffffffff81262fa4>] ? dev_watchdog+0x0/0x194
Apr 30 08:38:44 Hotcoffee kernel: [275460.837223]  [<ffffffff8104e024>] ? warn_slowpath_fmt+0x51/0x59
Apr 30 08:38:44 Hotcoffee kernel: [275460.837228]  [<ffffffff8104a4ba>] ? try_to_wake_up+0x289/0x29b
Apr 30 08:38:44 Hotcoffee kernel: [275460.837231]  [<ffffffff81262f78>] ? netif_tx_lock+0x3d/0x69
Apr 30 08:38:44 Hotcoffee kernel: [275460.837237]  [<ffffffff8124dda3>] ? netdev_drivername+0x3b/0x40
Apr 30 08:38:44 Hotcoffee kernel: [275460.837240]  [<ffffffff81263086>] ? dev_watchdog+0xe2/0x194
Apr 30 08:38:44 Hotcoffee kernel: [275460.837242]  [<ffffffff8103fa2a>] ? __wake_up+0x30/0x44
Apr 30 08:38:44 Hotcoffee kernel: [275460.837249]  [<ffffffff8105a71b>] ? run_timer_softirq+0x1c9/0x268
Apr 30 08:38:44 Hotcoffee kernel: [275460.837252]  [<ffffffff81053dc7>] ? __do_softirq+0xdd/0x1a6
Apr 30 08:38:44 Hotcoffee kernel: [275460.837257]  [<ffffffff8102462a>] ? lapic_next_event+0x18/0x1d
Apr 30 08:38:44 Hotcoffee kernel: [275460.837262]  [<ffffffff81011cac>] ? call_softirq+0x1c/0x30
Apr 30 08:38:44 Hotcoffee kernel: [275460.837265]  [<ffffffff8101322b>] ? do_softirq+0x3f/0x7c
Apr 30 08:38:44 Hotcoffee kernel: [275460.837267]  [<ffffffff81053c37>] ? irq_exit+0x36/0x76
Apr 30 08:38:44 Hotcoffee kernel: [275460.837270]  [<ffffffff810250f8>] ? smp_apic_timer_interrupt+0x87/0x95
Apr 30 08:38:44 Hotcoffee kernel: [275460.837273]  [<ffffffff81011673>] ? apic_timer_interrupt+0x13/0x20
Apr 30 08:38:44 Hotcoffee kernel: [275460.837274]  <EOI>  [<ffffffffa01bc509>] ? acpi_idle_enter_bm+0x27d/0x2af [processor]
Apr 30 08:38:44 Hotcoffee kernel: [275460.837283]  [<ffffffffa01bc502>] ? acpi_idle_enter_bm+0x276/0x2af [processor]
Apr 30 08:38:44 Hotcoffee kernel: [275460.837289]  [<ffffffff8123a0ba>] ? cpuidle_idle_call+0x94/0xee
Apr 30 08:38:44 Hotcoffee kernel: [275460.837293]  [<ffffffff8100fe97>] ? cpu_idle+0xa2/0xda
Apr 30 08:38:44 Hotcoffee kernel: [275460.837297]  [<ffffffff8151c140>] ? early_idt_handler+0x0/0x71
Apr 30 08:38:44 Hotcoffee kernel: [275460.837301]  [<ffffffff8151ccdd>] ? start_kernel+0x3dc/0x3e8
Apr 30 08:38:44 Hotcoffee kernel: [275460.837304]  [<ffffffff8151c3b7>] ? x86_64_start_kernel+0xf9/0x106
Apr 30 08:38:44 Hotcoffee kernel: [275460.837306] ---[ end trace 92c65e52c9e327ec ]---

1
MTU'nuz nedir?
Nils

Sormayı nasıl bildin? Sniff'i çalıştırmadan önce bu arayüzde manuel olarak 9000'e ayarladım; komut dosyası bitmeden hemen önce 1500'e sıfırladım. Aslında, koddaki sniffer işlevini devre dışı bıraktıktan sonra, komut dosyasında koştuğumda sudo ip link set mtu 1500 dev eth3( bittiği gibi ) başka bir kilitlenme gördüm . Arayüzdeki MTU'yu değiştirme hakkında bazı düşünceleriniz var mı?
Mike Pennington

@Nils, bunun bir PAE çekirdeği olması çok olası ... işlemci bir Çift CPU Dört çekirdekli x86-64
Mike Pennington

İlginç. Görünüşe göre Linux ve OpenBSD'nin düşündüğümden daha fazla ortak noktası var.
Nils

BTW - MTU'yu neden değiştiriyorsunuz - bagaj modunda bir portmirror kokluyorsunuz?
Nils

Yanıtlar:


5

GeNUA'dan benzer bir hikaye okudum. Çözümleri ağ sürücüsünü (OpenBSD) yeniden başlatmaktı. Linux'ta bu da uyarlanabilir: ifdown eth3 && rmmod bnx2 && modprobe bnx2 && ifup eth3.

Temel sorun, bir PAE sistemindeki işaretçilerle birlikte, broadcom sürücüsü ile birlikte dahili bir kodlama problemiydi.


Tam olarak ne zaman bu komutları çalıştırmamı önerirsiniz? Sadece MTU'yu değiştirdikten sonra mı?
Mike Pennington

1
@MikePennington Bağlantıyı İngilizce versiyona cevabım olarak değiştirdim. Oku ... Bence her 30 dakikada bir değiştirmelisin.
Nils

Kabul etmeden önce bunu birkaç gün boyunca üretimde çalıştırmam gerekiyor ... bu işe yarıyor, ben de bir ödül vereceğim. Bu iki haftadır popomu tekmeliyor
Mike Pennington

Muhtemelen benim arayüz MTU varsayılan (1500) ise bu sorunu görmemeliyim, değil mi? MTU'mu değiştiren kodu kaldırdım, ancak hala kilitlenmeleri görüyorum
Mike Pennington

Tüm arayüzleriniz aynı tipte mi? Onlara ethtool -gbelki de bu sorunu önlemek için alma veya iletme tamponlarını yükseltebilirsiniz.
Nils

2

ethtoolNIC arabelleklerini değiştirmek için çağrılan kodumu yorumlamak bekçi zamanlayıcılarının bnx2kartta açılmasını durdurdu .

Hala bekçi zamanlayıcıları hakkındaki soruya bir cevap bulmak istiyorum, ama başka bir soru soracağım

def _linux_buffer_alloc(iface=None, rx_ring_buffers=768,
    netdev_max_backlog=30000):

    default_rx = 255
    default_rx_jumbo = 0
    default_netdev_max_backlog = 1000
    ## Set linux rx ring buffers (to prevent tcpdump 'dropped by intf' msg)
## FIXME: removing for now due to systematic deadlocks with the bnx2 driver
#    sample: ethtool -G eth3 rx 768
#    cmd = 'ethtool -G %s rx %s' % (iface, rx_ring_buffers)
#    p = Popen(cmd.split(' '), stdout=PIPE)
#    p.communicate(); time.sleep(0.15)
#    sample: ethtool -G eth3 rx-jumbo 0
#    cmd = 'ethtool -G %s rx-jumbo %s' % (iface, default_rx_jumbo)
#    p = Popen(cmd.split(' '), stdout=PIPE)
#    p.communicate(); time.sleep(0.15)
## /FIXME
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.