Chúng tôi có một máy chủ Debian với một liên kết đến Vlan nội bộ và một liên kết đến bên ngoài - cả hai đều kết nối trực tiếp với cùng một công tắc.
Trên cả hai liên kết, chúng tôi thỉnh thoảng thấy số lượng sự kiện nhận không hợp lệ cao bất thường cũng như độ trễ cao.
Bảng giao diện hạt nhân
Iface MTU Gặp RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ethA 1500 0 884347583 0 49965509 49965509 1697514631 0 0 0 BMRU
ethB 1500 0 1611102819 0 77615811 77615811 819321274 0 0 0 BMRU
Chúng tôi cũng thấy các quy trình ksoftirqd cho cả hai giao diện đạt tối đa 90+% hầu hết thời gian, ngay cả khi mọi thứ bề ngoài có vẻ yên tĩnh.
44 gốc 20 0 0 0 0 R 98,8 0,0 2557:46 ksoftirqd/3
51 gốc 20 0 0 0 0 R 85,6 0,0 2722:33 ksoftirqd/5
Theo tôi hiểu, điều này có nghĩa là máy chủ đang sử dụng tối đa CPU được chỉ định để xử lý tất cả các gói đến trên giao diện này. Nhưng ngay cả khi chúng tôi thấy ~50Mb/giây đến, (và các máy chủ giống hệt nhau đang xử lý >800Mb/giây), các quy trình này có thể đạt mức tối đa và RX-DRP tăng vọt. irqbalance đang chạy và /proc/interrupts xác nhận rằng các CPU này không bận xử lý bất kỳ thứ gì khác.
Có bất kỳ nguyên nhân tiềm năng rõ ràng cho điều này?
Việc chỉ định nhiều CPU (thông qua smp_affinity) để xử lý các ngắt cho các giao diện đó có khả năng giúp ích không? Tôi không thể tìm thấy một ví dụ nào về việc ai đó gán nhiều CPU cho một giao diện mạng duy nhất, vì vậy, điều đó có vẻ khác thường ở mức tốt nhất, tệ nhất là có thể phá vỡ hệ thống.
Điều này đã gây ra sự cố trong quá trình sản xuất trong một thời gian, vì vậy tôi vui vẻ chấp nhận bất kỳ giải pháp thay thế tiềm năng nào.