너무 많은 인터럽트를 생성하는 하드웨어가 CPU를 독점하게 됩니까?

너무 많은 인터럽트를 생성하는 하드웨어가 CPU를 독점하게 됩니까?

내 네트워크 인터페이스가 너무 많은 패킷을 수신하고 단일 코어 프로세서가 있다고 가정해 보겠습니다.

계속해서 코어를 중단하고 기본적으로 CPU를 독점하는 것을 막는 것은 무엇입니까(반, 반, 반)?

답변1

업무량이 너무 많으면맨 아래절반은 Softirqd: ksoftirqd 형태로, 커널 스레드로 실행되므로 다른 프로세스에 비해 "공정한" CPU 할당만 받습니다. 이 문제는 특히 당신이 언급한 네트워크 사례로 인해 2016년경에 수정되었습니다.

https://lwn.net/Articles/687617/

나는 Softirq가 알려진 모든 패킷을 처리할 때까지 상위 절반을 다시 활성화할 필요가 없다고 생각합니다. 그러나 이는 NAPI에만 해당될 수 있습니다. LWN.net에서 NAPI에 대한 이전 기사를 확인할 수 있습니다.

https://lwn.net/Articles/30107/

https://lwn.net/Articles/214457/

https://lwn.net/Articles/244640/

드라이버는 이전 2.4 기술을 계속 사용하여 네트워크 스택에 연결할 수 있으며 NAPI 변경의 이점을 누릴 수 없습니다. 커널에 NAPI를 추가해도 이전 버전과의 호환성이 손상되지 않습니다. 그러나 NAPI를 사용하려면 다음 기능을 사용할 수 있어야 합니다.

A) DMA 링 또는 소프트웨어 장치에 패킷을 저장하기에 충분한 RAM.

B) 패킷을 스택으로 보낼 수 있는 인터럽트나 이벤트를 끄는 기능.

--https://lwn.net/2002/0321/a/napi-howto.php3

관련 정보