![너무 많은 인터럽트를 생성하는 하드웨어가 CPU를 독점하게 됩니까?](https://linux55.com/image/132417/%EB%84%88%EB%AC%B4%20%EB%A7%8E%EC%9D%80%20%EC%9D%B8%ED%84%B0%EB%9F%BD%ED%8A%B8%EB%A5%BC%20%EC%83%9D%EC%84%B1%ED%95%98%EB%8A%94%20%ED%95%98%EB%93%9C%EC%9B%A8%EC%96%B4%EA%B0%80%20CPU%EB%A5%BC%20%EB%8F%85%EC%A0%90%ED%95%98%EA%B2%8C%20%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
내 네트워크 인터페이스가 너무 많은 패킷을 수신하고 단일 코어 프로세서가 있다고 가정해 보겠습니다.
계속해서 코어를 중단하고 기본적으로 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) 패킷을 스택으로 보낼 수 있는 인터럽트나 이벤트를 끄는 기능.