누구든지 프레임 통합 (NAPI)이 필요할 때와 프레임 당 단일 인터럽트가 충분할 때 대답 할 수있는 일부 데이터 또는 기본 계산이 있습니까?
내 하드웨어 : IBM BladeServer HS22, Broadcom 5709 기가비트 NIC 하드웨어 (MSI-X), 이중 Xeon E5530 쿼드 코어 프로세서. 주요 목적은 오징어 프록시 서버입니다. 스위치는 멋진 Cisco 6500 시리즈입니다.
우리의 기본 문제는 피크 타임 (100Mbps 트래픽, 10,000pps) 동안 대기 시간과 패킷 손실이 증가한다는 것입니다. 2.6.38로 많은 조정 및 커널 업그레이드를 수행했으며 패킷 손실이 개선되었지만 대기 시간이 여전히 부족합니다. 핑은 산발적입니다. 로컬 Gbps LAN에서 200ms까지 점프 CPU / 메모리로드가 양호하더라도 오징어 평균 응답이 30ms에서 500 + ms로 증가합니다.
인터럽트는 피크 동안 약 15,000 / 초로 올라갑니다. Ksoftirqd는 많은 CPU를 사용하지 않습니다. 모든 코어에서 IRQ (eth0 및 eth1 각각 8)의 균형을 맞추기 위해 irqbalance를 설치했지만 그다지 도움이되지 않았습니다.
인텔 NIC에는 이러한 종류의 문제가없는 것으로 보이지만 블레이드 시스템 및 고정 구성 하드웨어의 사실을 수행하면 Broadcom에 갇혀 있습니다.
모든 것이 NIC를 주범으로 지적하고 있습니다. 내가 지금 가지고있는 가장 좋은 아이디어는 대기 시간을 줄이고 처리량을 높이면서 인터럽트를 줄이려고 시도하는 것입니다.
불행히도 bnx2는 adaptive-rx 또는 tx를 지원하지 않습니다.
적응 인터럽트 대 NAPI 스레드 대답은 인터럽트 조절의 큰 이상보기 만에 구체적인 정보를 제공하는 방법을 계산 최적의 ethtool을 병합 설정 주어진 문제를 해결하기위한 것이다. 시행 착오보다 나은 접근 방법이 있습니까?
위에서 언급 한 워크로드 및 하드웨어 구성에도 NAPI가 필요합니까? 아니면 패킷 당 단일 인터럽트로 작동 할 수 있어야합니까?