การแก้ปัญหาอีเธอร์เน็ตจ้องจับผิดสุนัขเฝ้าบ้านจับเวลา


11

ฉันมีกล่อง debian linux (Debian Squeeze) ที่ deadlocks ทุกสองสามชั่วโมงถ้าฉันเรียกใช้สคริปต์หลามที่ sniffs อินเทอร์เฟซ ...

การติดตามสแต็กถูกแนบกับด้านล่างของคำถามนี้ โดยพื้นฐานแล้วฉันมีอินเทอร์เฟซ Broadcom ethernet ( bnx2ไดรเวอร์) ที่ดูเหมือนว่าจะตายเมื่อฉันเริ่มเซสชั่นการดมกลิ่นแล้วพยายามส่งเฟรมออกจากอินเตอร์เฟสเดียวกัน

จากสิ่งที่ฉันสามารถบอกได้ตัวจับเวลาจ้องจับผิดเคอร์เนลกำลังสะดุด ...

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

ฉันคิดว่ามีวิธีการควบคุมตัวจับเวลาจ้องจับผิดด้วยioctl(อ้างอิง: EmbeddedFreak: วิธีการใช้งาน linux watchdog )

คำถาม (ต้นฉบับ):

ฉันจะค้นหาตัวจับเวลาจ้องจับผิดที่ควบคุม eth3 ได้อย่างไร คะแนนโบนัสหากคุณสามารถบอกวิธีเปลี่ยนจับเวลาหรือแม้กระทั่งปิดใช้งานสุนัขเฝ้าบ้าน ...

คำถาม (แก้ไข):

ฉันจะป้องกันตัวจับเวลาจ้องจับผิดอีเธอร์เน็ตจากการทำให้เกิดปัญหาได้อย่างไร


การติดตามสแต็ก

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 ของคุณคืออะไร
นิลส์

คุณรู้จักถามอย่างไร ฉันตั้งค่าเป็น 9000 บนอินเทอร์เฟซนี้ด้วยตนเองก่อนเรียกใช้ sniff; ก่อนที่สคริปต์จะเสร็จฉันก็รีเซ็ตเป็น 1,500 อันที่จริงหลังจากปิดการใช้งานฟังก์ชั่นดมกลิ่นในสคริปต์ฉันเห็นการหยุดชะงักอีกครั้งเมื่อฉันทำงานsudo ip link set mtu 1500 dev eth3ในสคริปต์ คุณมีความคิดบางอย่างเกี่ยวกับการเปลี่ยน MTU บนอินเทอร์เฟซหรือไม่
Mike Pennington

@ ไม่มีมันเป็นไปได้มากว่านี่คือเคอร์เนล PAE ... โปรเซสเซอร์เป็นหน่วยประมวลผลแบบ Dual-CPU Quad core x86-64
Mike Pennington

น่าสนใจ ดูเหมือนว่า Linux และ OpenBSD มีเหมือนกันมากกว่าที่ฉันคิด
นิลส์

BTW - ทำไมคุณถึงเปลี่ยน MTU - คุณกำลังดมกลิ่น portmirror ในโหมด trunk หรือไม่?
นิลส์

คำตอบ:


5

ฉันได้อ่านเรื่องที่คล้ายกันจาก GeNUA วิธีแก้ปัญหาของพวกเขาคือรีสตาร์ทไดรเวอร์เครือข่าย (OpenBSD) บน Linux สิ่งนี้จะแปลเป็น: ifdown eth3 && rmmod bnx2 && modprobe bnx2 && ifup eth3.

ปัญหาหลักคือปัญหาการเข้ารหัสภายในของพอยน์เตอร์ในระบบ PAE ร่วมกับโปรแกรมควบคุมบรอดแบรนด์


คุณแนะนำให้ฉันรันคำสั่งเหล่านั้นเมื่อใด หลังจากที่ฉันเปลี่ยน MTU แล้วเท่านั้น
Mike Pennington

1
@ MikePennington ฉันเปลี่ยนลิงค์จากคำตอบเป็นเวอร์ชั่นภาษาอังกฤษ อ่าน ... ฉันคิดว่าคุณควรเปลี่ยนทุก ๆ 30 นาที
นิลส์

ฉันต้องดำเนินการในการผลิตเป็นเวลาสองสามวันก่อนที่ฉันจะยอมรับ ... มันใช้งานได้ฉันจะได้รับรางวัลมากมายเช่นกัน นี่เป็นการเตะก้นของฉันเป็นเวลาสองสัปดาห์
Mike Pennington

สันนิษฐานว่าฉันไม่ควรเห็นปัญหานี้หากส่วนต่อประสาน MTU ของฉันเป็นค่าเริ่มต้น (1500) ใช่ไหม ฉันลบรหัสที่แก้ไข MTU ของฉันแล้ว แต่ฉันยังเห็นการหยุดชะงัก
Mike Pennington

อินเทอร์เฟซของคุณทั้งหมดเป็นชนิดเดียวกันหรือไม่ ดูพวกเขาด้วยethtool -gบางทีคุณสามารถเพิ่มบัฟเฟอร์รับหรือส่งเพื่อหลีกเลี่ยงปัญหานี้
นิลส์

2

แสดงความคิดเห็นรหัสของฉันที่เรียกว่า ethtoolแก้ไขบัฟเฟอร์ NIC หยุดตัวจับเวลาจ้องจับผิดจากการสะดุดบนbnx2บัตร

ฉันยังต้องการค้นหาคำตอบสำหรับคำถามเกี่ยวกับตัวนับจ้องจับผิด แต่ฉันจะถามคำถามอื่น

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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.