Tôi biết đây là câu hỏi 1 năm tuổi nhưng nó là số 1 trên Google nên có lẽ tôi có thể thêm 5 xu cho nó.
Đầu tiên tôi không biết quy tắc mod 8 này trên trường khung ... Đây là quy tắc trình điều khiển hay quy tắc kernel?
Theo kinh nghiệm nhỏ mà tôi có, những con số này khá chung chung và có thể lấy thêm thông tin từ ethtool
(nếu trình điều khiển hỗ trợ) ví dụ: đây là từ watch
lệnh.
Every 1s: ethtool -S eth1 | grep rx_ && echo && ifconfig eth1 1970-01-01 00:21:07
rx_octets: 12635134290
rx_frames: 8488675
rx_broadcast_frames: 103
rx_multicast_frames: 0
rx_pause_frames: 0
rx_64_byte_frames: 113
rx_65_127_byte_frames: 47
rx_128_255_byte_frames: 186340
rx_256_511_byte_frames: 1
rx_512_1023_byte_frames: 0
rx_1024_1518_byte_frames: 8302174
rx_greater_than_1518_byte_frames: 0
rx_undersized_frames: 0
rx_oversize_frames: 0
rx_jabbers: 0
rx_frame_check_sequence_errors: 0
rx_length_field_frame_errors: 0
rx_symbol_errors: 0
rx_alignment_errors: 0
rx_resource_errors: 283
rx_overruns: 132
rx_ip_header_checksum_errors: 0
rx_tcp_checksum_errors: 0
rx_udp_checksum_errors: 0
eth1 Link encap:Ethernet HWaddr AA:BB:CC:DD:20:16
inet addr:192.168.0.10 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::a8bb:ccff:fedd:2016/64 Scope:Link
UP BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:8488675 errors:415 dropped:4 overruns:132 frame:283
TX packets:647464 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3892403548 (3.6 GiB) TX bytes:62273943 (59.3 MiB)
Interrupt:147 Base address:0xc000
Tùy thuộc vào trình điều khiển, sẽ có các trường khác nhau ethtool
và
ifconfig
các trường cũng có thể trỏ đến các khung quá khổ / quá khổ.
Nếu trình điều khiển & trình điều khiển của bạn hỗ trợ, bạn có thể (hoặc nên) làm:
ifdown eth1 && modprobe -r macb && modprobe macb && ifup eth1 && ethtool -offload eth1 rx off tx off && ethtool -K eth1 gso off && ethtool --show-offload eth1
để có thêm thông tin (cho phép hiển thị thông tin trong ethtool). Tôi đang sử dụng trình điều khiển macb ở đây ... vì vậy hãy kiểm tra ethtool
trình điều khiển của bạn.
ethtool -i eth1
Đây là những gì giúp tôi hiểu thường những gì đang xảy ra.
Đôi khi không có lỗi nhưng các gói bị hỏng ... thì đó là vấn đề về trình điều khiển hoặc trình điều khiển ... và đôi khi trình thám thính hiển thị mọi thứ đều đúng nhưng có một vấn đề sau khi trình điều khiển / kernel (đây là trường hợp trên thực ra).
Một số chi tiết khác có thể được lấy từ netstat -s
hoặc nếu bạn đặt đoạn mã này vào tập lệnh (đối với các hệ thống nhúng nhỏ):
awk '(f==0) { i=1; while ( i<=NF) {n[i] = $i; i++ }; f=1; next} (f==1){ i=2; while ( i<=NF){ printf "%s = %d\n", n[i], $i; i++}; f=0}' /proc/net/netstat
vì netstat -s
có thể không có sẵn.