두 이더넷 인터페이스의 인터럽트를 별도의 코어로 라우팅하는 방법이 있습니까?

두 이더넷 인터페이스의 인터럽트를 별도의 코어로 라우팅하는 방법이 있습니까?

Petalinux를 실행하는 Xilinx FPGA 보드의 PCIe 포트에 두 개의 이더넷 포트(x550-T2)가 설치된 Intel의 10G 이더넷 어댑터가 있습니다. 두 개의 10G 포트에서 동시에 iperf3 서버-클라이언트 연결을 실행하여 네트워크 대역폭을 테스트하고 있습니다. 그러나 2x 10G 링크의 대역폭은 1x 10G 링크와 동일합니다. 그 이유는 병목 현상이 링크 용량이 아니라 인터럽트 처리에 있기 때문입니다. Xilinx FPGA PCIe 인터페이스는 RSS(Receive Side Scaling)를 지원하지 않으므로 모든 인터럽트가 CPU0으로 전달되어 CPU0이 인터럽트 처리로 과부하를 받게 됩니다. 이는 1x 또는 2x 10G 링크가 활성 상태인지 여부에 관계없이 적용됩니다. 그래서 eth1 인터럽트를 CPU0으로, eth2 인터럽트를 CPU1로 전달할 수 있는지 궁금했습니다. 그러면 10G 링크가 1x에서 2x로 갈 때 최소한 네트워크 대역폭이 증가하는 것을 볼 수 있습니다.

관련 정보