Có ai có một số dữ liệu hoặc tính toán cơ bản có thể trả lời khi cần kết hợp khung (NAPI) và khi một ngắt đơn cho mỗi khung là đủ?
Phần cứng của tôi: IBM BladeServer HS22, phần cứng Broadcom 5709 Gigabit (MSI-X), với bộ xử lý lõi tứ Xeon E5530. Mục đích chính là máy chủ proxy Squid. Switch là một dòng Cisco 6500 đẹp.
Vấn đề cơ bản của chúng tôi là trong thời gian cao điểm (lưu lượng 100 Mbps, chỉ 10.000 pps) mà độ trễ và mất gói tăng lên. Tôi đã thực hiện rất nhiều điều chỉnh và nâng cấp kernel lên 2.6,38 và nó đã cải thiện việc mất gói nhưng độ trễ vẫn còn kém. Pings là lẻ tẻ; nhảy thậm chí tới 200ms trên mạng LAN Gbps cục bộ. Phản ứng trung bình của mực nhảy từ 30ms đến 500 + ms mặc dù tải CPU / bộ nhớ vẫn ổn.
Các ngắt tăng lên khoảng 15.000 / giây trong thời gian cao điểm. Ksoftirqd không sử dụng nhiều CPU; Tôi đã cài đặt sự mất cân bằng để cân bằng các IRQ (8 mỗi cho eth0 và eth1) trên tất cả các lõi nhưng điều đó không giúp được gì nhiều.
Các NIC của Intel dường như không bao giờ gặp phải các loại vấn đề này, nhưng thực tế là phần cứng cấu hình cánh quạt và phần cứng cấu hình cố định, chúng tôi bị mắc kẹt với Broadcom.
Tất cả mọi thứ đang chỉ vào NIC là thủ phạm chính. Ý tưởng tốt nhất tôi có ngay bây giờ là thử giảm các ngắt trong khi vẫn giữ cả độ trễ thấp và thông lượng cao.
Thật không may, bnx2 không hỗ trợ thích nghi-rx hoặc tx.
Các Napi vs thích ứng Ngắt chủ đề trả lời cung cấp một cái nhìn qua vĩ đại của ngắt điều độ nhưng không có thông tin cụ thể về làm thế nào để tính toán tối ưu ethtool liên hiệp cài đặt cho workaround nhất định. Có một cách tiếp cận tốt hơn sau đó chỉ là thử nghiệm và lỗi?
Liệu khối lượng công việc và cấu hình phần cứng được đề cập ở trên thậm chí cần NAPI? Hoặc nó có thể sống trên một ngắt đơn trên mỗi gói không?