ईथरनेट वॉचडॉग टाइमर गतिरोध को सुलझाने


11

मेरे पास एक डेबियन लिनक्स बॉक्स (डेबियन स्क्वीज़) है जो हर कुछ घंटों में गतिरोध करता है अगर मैं एक अजगर स्क्रिप्ट चलाता हूं जो एक इंटरफ़ेस को सूँघता है ...

स्टैक ट्रेस इस प्रश्न के नीचे से जुड़ा हुआ है। अनिवार्य रूप से, मेरे पास एक ब्रॉडकॉम ईथरनेट इंटरफ़ेस ( bnx2ड्राइवर) है जो मरने के लिए लगता है जब मैं एक सूँघना सत्र शुरू करता हूं और फिर यह उसी इंटरफ़ेस से एक फ्रेम को प्रसारित करने की कोशिश करता है।

मैं जो बता सकता हूं, उसमें से एक कर्नेल वॉचडॉग ट्रिपिंग है ...

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

मुझे लगता है कि वॉचडॉग टाइमर को नियंत्रित करने का एक तरीका है ioctl(रेफ: एंबेडेडफ्रीक: लिनक्स वॉचडॉग का उपयोग कैसे करें )।

प्रश्न (मूल):

मैं यह कैसे पता लगा सकता हूं कि कौन सा वॉचडॉग टाइमर (एस) एथ 3 को नियंत्रित कर रहा है? बोनस अंक अगर आप मुझे टाइमर बदलने या वॉचडॉग को अक्षम करने का तरीका भी बता सकते हैं ...

प्रश्न (संशोधित):

मैं ईथरनेट वॉचडॉग टाइमर को समस्या पैदा करने से कैसे रोक सकता हूं?


स्टैक ट्रेस

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
आपका एमटीयू क्या है?
निल्स

आप पूछना कैसे जानते हैं? मैंने मैन्युअल रूप से सूंघने से पहले इस इंटरफ़ेस पर इसे 9000 पर सेट किया; स्क्रिप्ट खत्म होने से ठीक पहले, मैंने इसे 1500 पर रीसेट कर दिया। वास्तव में, स्क्रिप्ट में स्निफर फ़ंक्शन को अक्षम करने के बाद, मैंने sudo ip link set mtu 1500 dev eth3स्क्रिप्ट में भागते समय एक और गतिरोध देखा (जैसा कि यह परिष्करण था)। क्या आपके पास इंटरफ़ेस पर एमटीयू बदलने के बारे में कुछ विचार हैं?
माइक पेनिंगटन

@ निल्स, यह बहुत संभव है कि यह एक पीएई कर्नेल है ... प्रोसेसर एक दोहरी-सीपीयू क्वाड कोर x86-64 है
माइक पेनिंगटन

दिलचस्प। ऐसा लगता है कि लिनक्स और ओपनबीएसडी मेरे विचार से अधिक आम हैं।
नेल्स

BTW - आप MTU को क्यों बदलते हैं - क्या आप ट्रंक मोड में पोर्टमिरर को सूँघ रहे हैं?
निल्स

जवाबों:


5

मैंने GeNUA की एक ऐसी ही कहानी पढ़ी है। उनका वर्कअराउंड नेटवर्क ड्राइवर (OpenBSD) को पुनरारंभ करना था। लिनक्स पर यह करने के लिए अनुवाद होगा: ifdown eth3 && rmmod bnx2 && modprobe bnx2 && ifup eth3

मुख्य समस्या ब्रॉडकॉम-चालक के साथ संयोजन में PAE प्रणाली पर संकेत के साथ एक आंतरिक कोडिंग समस्या थी।


जब आप वास्तव में सुझाव दे रहे हैं कि मैं उन कमांडों को चलाता हूं? केवल MTU बदलने के बाद?
माइक पेनिंगटन

1
@MikePennington मैंने अपने उत्तर से अंग्रेजी संस्करण के लिंक को बदल दिया। इसे पढ़ें ... मुझे लगता है कि आपको इसे हर 30 मिनट में बदलना चाहिए।
नेल्स

मुझे इसे स्वीकार करने से पहले कुछ दिनों के लिए उत्पादन में चलाने की आवश्यकता है ... यह काम करता है, मैं एक इनाम भी दूंगा। यह दो सप्ताह के लिए मेरे बट को मार रहा है
माइक पेनिंगटन

संभवत: मुझे यह मुद्दा नहीं देखना चाहिए कि क्या मेरा इंटरफ़ेस MTU डिफ़ॉल्ट (1500) है, है ना? मैंने अपने MTU को संशोधित करने वाले कोड को हटा दिया, लेकिन मैं अभी भी गतिरोध देख रहा हूँ
माइक पेनिंगटन

क्या आपके सभी इंटरफेस एक ही प्रकार के हैं? के साथ उन को देखो ethtool -gशायद अपने बढ़ा सकते हैं प्राप्त करते हैं या संचारित बफ़र्स इस समस्या से बचने के लिए।
नेल्स

2

ethtoolएनआईसी बफ़र्स को संशोधित करने के लिए कॉल करने वाले मेरे कोड पर टिप्पणी करते हुए वॉचडॉग टाइमर को 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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.