Giải quyết các bế tắc đồng hồ bấm giờ Ethernet


11

Tôi có một hộp linux debian (Debian Squeeze) cứ sau vài giờ tôi lại chạy một đoạn script python đánh hơi một giao diện ...

Dấu vết ngăn xếp được gắn vào dưới cùng của câu hỏi này. Về cơ bản, tôi có một giao diện ( bnx2trình điều khiển) Broadcom dường như sẽ chết khi tôi bắt đầu một phiên đánh hơi và sau đó nó cố gắng truyền một khung ra cùng một giao diện.

Từ những gì tôi có thể nói, một bộ đếm thời gian theo dõi hạt nhân đang vấp ngã ...

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

Tôi nghĩ rằng có một cách để kiểm soát bộ định thời watchdog bằng ioctl(ref: EmbeddedFreak: Cách sử dụng linux watchdog ).

Câu hỏi (Bản gốc):

Làm thế nào tôi có thể tìm thấy (các) bộ đếm thời gian theo dõi đang kiểm soát eth3? Điểm thưởng nếu bạn có thể cho tôi biết cách thay đổi bộ đếm thời gian hoặc thậm chí vô hiệu hóa cơ quan giám sát ...

Câu hỏi (Sửa đổi):

Làm thế nào tôi có thể ngăn chặn bộ đếm thời gian theo dõi ethernet gây ra vấn đề?


Dấu vết ngăn xếp

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 của bạn là gì?
Nils

Làm thế nào bạn biết để hỏi? Tôi tự cài đặt nó thành 9000 trên giao diện này trước khi chạy sniff; ngay trước khi tập lệnh kết thúc, tôi đặt lại thành 1500. Thực tế, sau khi vô hiệu hóa chức năng sniffer trong tập lệnh, tôi đã thấy một bế tắc khác khi tôi chạy sudo ip link set mtu 1500 dev eth3trong tập lệnh (vì nó đang hoàn thiện). Bạn có suy nghĩ gì về việc thay đổi MTU trên giao diện không?
Mike Pennington

@Nils, rất có thể đây là hạt nhân PAE ... bộ xử lý là lõi kép Quad-CPU x86-64
Mike Pennington

Hấp dẫn. Có vẻ như Linux và OpenBSD có nhiều điểm chung hơn tôi nghĩ.
Nils

BTW - tại sao bạn thay đổi MTU - bạn đang đánh hơi một portmirror ở chế độ trung kế?
Nils

Câu trả lời:


5

Tôi đã đọc một câu chuyện tương tự từ GeNUA. Cách giải quyết của họ là khởi động lại trình điều khiển mạng (OpenBSD). Trên Linux, điều này sẽ dịch sang : ifdown eth3 && rmmod bnx2 && modprobe bnx2 && ifup eth3.

Vấn đề cốt lõi là một vấn đề mã hóa nội bộ với các con trỏ trên hệ thống PAE kết hợp với trình điều khiển rộng.


Khi chính xác là bạn đề nghị tôi chạy các lệnh đó? Chỉ sau khi tôi thay đổi MTU?
Mike Pennington

1
@MikePennington Tôi đã thay đổi liên kết từ câu trả lời của tôi sang phiên bản tiếng Anh. Đọc nó ... Tôi nghĩ bạn nên thay đổi nó cứ sau 30 phút.
Nils

Tôi cần phải chạy sản xuất này trong một vài ngày trước khi tôi có thể chấp nhận ... nó hoạt động, tôi cũng sẽ nhận được tiền thưởng. Điều này đã đá vào mông tôi trong hai tuần
Mike Pennington

Có lẽ tôi không nên thấy vấn đề này nếu MTU giao diện của tôi là mặc định (1500), phải không? Tôi đã xóa mã đã sửa đổi MTU của mình, nhưng tôi vẫn thấy các bế tắc
Mike Pennington

Có phải tất cả các giao diện của bạn cùng loại? Nhìn vào chúng có ethtool -glẽ bạn có thể tăng bộ đệm nhận hoặc truyền để tránh vấn đề này.
Nils

2

Nhận xét mã của tôi được gọi ethtoolđể sửa đổi bộ đệm NIC đã dừng bộ định thời giám sát khỏi vấp trên bnx2thẻ.

Tôi vẫn muốn tìm một câu trả lời cho câu hỏi về bộ đếm thời gian theo dõi, nhưng tôi sẽ hỏi một câu hỏi khác

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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.