Show Table of Contents
4.3. 인터럽트 및 IRQ 튜닝
인터럽트 요청 (IRQ)은 하드웨어 레벨에서 전송되는 서비스에 대한 요청입니다. 인터럽트는 전용 하드웨어 라인이나 정보 패킷 (메시지 인터럽트 신호 또는 MSI)과 같은 하드웨어 버스를 통해 전송될 수 있습니다.
인터럽트가 활성화되면 IRQ 수신은 인터럽트 컨텍스트로의 전환을 묻는 메세지를 표시합니다. 커널 인터럽트 디스패치 코드는 IRQ 번호와 관련된 등록된 ISR (Interrupt Service Routines)의 목록을 검색하고 각 ISR을 차례로 호출합니다. ISR은 인터럽트를 승인하고 동일한 ISR에서 중복 인터럽트를 무시한 후 인터럽트 처리 완료 및 향후 인터럽트 무시에서 ISR을 중지시키기 위해 보류 처리기를 대기열에 넣습니다.
/proc/interrupts 파일은 I/O 장치 당 CPU 당 인터럽트 수를 나열합니다. 이는 IRQ 번호, 각 CPU 코어에 의해 처리되는 인터럽트 수, 인터럽트 유형, 인터럽트를 수신하도록 등록된 콤마로 구분된 드라이버 목록을 표시합니다. (보다 자세한 내용은 man 5 proc proc(5) man 페이지에서 참조하십시오.
IRQ에는 관련 "친화도" 속성
smp_affinity가 있어 해당 IRQ의 ISR 실행을 허용하는 CPU 코어를 정의합니다. 이러한 속성은 하나 이상의 특정 CPU 코어에 인터럽트 친화도 및 애플리케이션의 스레드 친화도를 할당하여 애플리케이션의 성능을 향상시키는데 사용될 수 있습니다. 이를 통해 지정된 인터럽트와 애플리케이션 스레드 간의 캐시 라인을 공유할 수 있습니다.
특정 IRQ 번호의 인터럽트 친화도 값은 관련
/proc/irq/IRQ_NUMBER/smp_affinity 파일에 저장되어 있으며 이는 root 사용자로 수정 및 확인할 수 있습니다. 이 파일에 저장된 값은 시스템에 있는 모든 CPU 코어를 나타내는 16 진수 비트 마스크입니다.
예를 들어 네 개의 CPU 코어를 갖는 서버 상의 이더넷 드라이버에 대한 인터럽트 친화도를 설정하려면 이더넷 드라이버와 관련된 IRQ 번호를 지정해야 합니다:
# grep eth0 /proc/interrupts 32: 0 140 45 850264 PCI-MSI-edge eth0
해당
smp_affinity 파일을 배치하려면 IRQ 번호를 사용합니다:
# cat /proc/irq/32/smp_affinity f
smp_affinity의 기본값인
f는 IRQ가 시스템에 있는 모든 CPU에서 서비스할 수 있다는 것을 의미합니다. 다음과 같이 이 값을 1로 설정하면 CPU 0 만이 이 인터럽트를 서비스할 수 있다는 것을 의미합니다:
# echo 1 >/proc/irq/32/smp_affinity # cat /proc/irq/32/smp_affinity 1
콤마를 사용하여 분리된 32 비트 그룹의
smp_affinity 값을 구분하는데 사용할 수 있습니다. 이는 32 개 이상의 코어를 갖는 시스템에 필요합니다. 예를 들어 다음의 예에서는 IRQ 40이 64 코어 시스템의 모든 코어에서 서비스되는 것을 보여줍니다:
# cat /proc/irq/40/smp_affinity ffffffff,ffffffff
64 코어 시스템의 상위 32 코어에 있는 IRQ 40을 서비스하려면 다음을 수행해야 합니다:
# echo 0xffffffff,00000000 > /proc/irq/40/smp_affinity # cat /proc/irq/40/smp_affinity ffffffff,00000000
참고
인터럽트 스티어링을 지원하는 시스템에서 IRQ의
smp_affinity를 수정하여 하드웨어를 설정하고 인터럽트를 특정 CPU에서 실행하는 결정을 커널에서의 간섭없이 하드웨어 수준에서 수행할 수 있습니다.

Where did the comment section go?
Red Hat's documentation publication system recently went through an upgrade to enable speedier, more mobile-friendly content. We decided to re-evaluate our commenting platform to ensure that it meets your expectations and serves as an optimal feedback mechanism. During this redesign, we invite your input on providing feedback on Red Hat documentation via the discussion platform.