"원격 함수 호출 인터럽트"(/proc 인터럽트의 CAL). 그것은 무엇입니까?

"원격 함수 호출 인터럽트"(/proc 인터럽트의 CAL). 그것은 무엇입니까?

저는 많은 스레드와 비동기 I/O를 생성하는 테스트 프로그램을 실행하고 있습니다. /proc/interrupts에서 볼 수 있는 이러한 인터럽트의 수가 너무 많아서 CPU의 Softirq 처리가 100% 포화되었기 때문에 프로그램이 특정 지점 이상으로 확장할 수 없습니다.

에 따르면:http://www.kernel.org/doc/man-pages/online/pages/man5/proc.5.htmlCAL은 "Remote Function Call Interrupt"의 약자이지만 Google에서 찾을 수 있는 정보는 그게 전부였습니다. 그럼...이게 무슨 뜻이에요? CAL 인터럽트로 인해 CPU를 많이 사용하지 않는 I/O 어댑터 카드에 smp_affinity가 할당되어 있습니다. 이는 내 프로그램이 잘못된 SMP 선호도로 실행되고 있음을 의미합니까?

답변1

원격 함수 호출 인터럽트는 다음 계열에 속합니다.프로세서 간 인터럽트즉, 한 프로세서에서 시스템의 다른 프로세서로 전송되는 인터럽트 신호는 IRQ 라인을 통과하지 않고 모든 CPU의 로컬 APIC를 연결하는 버스의 메시지로 직접 전달됩니다.

원격 함수 호출 인터럽트는 일반적으로 송신자를 제외한 모든 프로세서로 전송되어 해당 프로세서가 송신자가 전달한 기능을 실행하도록 합니다. Linux x86 커널에서:

해당 인터럽트 핸들러의 이름은 다음과 같습니다.호출 함수 인터럽트().
인터럽트는 일반적으로 다음을 통해 발생합니다.smp_call_function()시설특징.

일반적인 사용 사례에는 종료 시 모든 CPU 중지, 시계 보정, TLB 플러시 등이 포함됩니다..

물론 서로 다른 smp-affinity 설정은 TLB 플러시 수에 간접적으로 영향을 미칠 수 있지만 이 효과는 간접적이고 TLB 플러시가 함수 호출 중단의 유일한 원인이 아니기 때문에 해당 비율만으로 효율성을 판단하는 데 사용되어서는 안 됩니다. 1위 또는 선호도 설정.

smp-affinity에 의해 설정된 상관관계의 첫 번째 판단은 컨텍스트 전환 횟수입니다. 낮을수록 좋습니다.

관련 정보