/proc/interrupts 정보 MIS와 ERR은 무엇입니까?

/proc/interrupts 정보 MIS와 ERR은 무엇입니까?

/proc/interrupts를 보면 아래 출력에서 ​​각각 26행과 27행에 ERR과 MIS가 표시됩니다. 이것들은 무엇입니까? CPU0(0임에도 불구하고)에 대한 개수는 있지만 다른 개수와 설명은 없는 이유는 무엇입니까? 실제로 PIC 자체의 오류와 관련이 있다고 생각합니까?

답변을 보내주신 ErikF에게 감사드립니다. 이러한 인터럽트가 CPU0에만 나타나는 이유는 무엇입니까? PIC/인터럽트 시스템에 문제가 생기면 해당 CPU만 인터럽트를 받기 때문인가요?

    1.  username@domain:/proc$ cat interrupts  
    2.             CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7  
    3.    0:    1221738          0          0          0          0          0          0          0   IO-APIC   2-edge      timer  
    4.    1:          9          0          0          0          0          0          0          0   IO-APIC   1-edge      i8042  
    5.    6:          3          0          0          0          0          0          0          0   IO-APIC   6-edge      floppy  
    6.    8:          0          0          0          0          0          0          0          0   IO-APIC   8-edge      rtc0  
    7.    9:          0          0          0          0          0          0          0          0   IO-APIC   9-fasteoi   acpi  
    8.   12:        169          0          0          0          0          0          0          0   IO-APIC  12-edge      i8042  
    9.   14:          0          0          0          0          0          0          0          0   IO-APIC  14-edge      ata_piix  
    10.  15:         96      65508          0          0          0          0          0          0   IO-APIC  15-edge      ata_piix  
    11. NMI:          0          0          0          0          0          0          0          0   Non-maskable interrupts  
    12. LOC:        402        123        273         78        134        110        118        110   Local timer interrupts  
    13. SPU:          0          0          0          0          0          0          0          0   Spurious interrupts  
    14. PMI:          0          0          0          0          0          0          0          0   Performance monitoring interrupts  
    15. IWI:         95         83         81         94         90         97         86         76   IRQ work interrupts  
    16. RTR:          0          0          0          0          0          0          0          0   APIC ICR read retries  
    17. RES:    2769117    3625540    1918695    3115064    2249434    2089381    1783180    2173439   Rescheduling interrupts  
    18. CAL:       3468      22419      21729      15320      20704      31602      15100      18188   Function call interrupts  
    19. TLB:      11579      12003      12034      10741      10855      11647       9593      11018   TLB shootdowns  
    20. TRM:          0          0          0          0          0          0          0          0   Thermal event interrupts  
    21. THR:          0          0          0          0          0          0          0          0   Threshold APIC interrupts  
    22. DFR:          0          0          0          0          0          0          0          0   Deferred Error APIC interrupts  
    23. MCE:          0          0          0          0          0          0          0          0   Machine check exceptions  
    24. MCP:        224        224        224        224        224        224        224        224   Machine check polls  
    25. HYP:    2620495    2791215   12310023    2806541    2615199    1920111    2463082    2627540   Hypervisor callback interrupts  
    26. ERR:          0  
    27. MIS:          0  
    28. PIN:          0          0          0          0          0          0          0          0   Posted-interrupt notification event  
    29. PIW:          0          0          0          0          0          0          0          0   Posted-interrupt wakeup event  

답변1

당신 말이 맞습니다. IO-APIC 시스템과 관련이 있습니다. ERR커널 문서에 문서화되어 있음존재하다Documentation/filesystems/proc(677-680행):

ERRIO-APIC 버스(SMP 시스템에서 CPU에 연결된 버스)에 오류가 있는 경우 증가합니다. 이는 오류가 감지되었고 IO-APIC가 자동으로 전송을 재시도했음을 의미하므로 큰 문제는 아니지만 SMP-FAQ를 읽어야 합니다.

AFAICT 하드웨어 문제가 없는 한 이 내용이 표시되어서는 안 됩니다. 문서에 나와 있듯이 이러한 일이 자주 발생하는지 주의를 기울여 조사해야 합니다.

MIS문서에는 나오지 않지만2005년 젠투 포럼 뉴스그것에 대해 얘기.현재의arch/x86/apic/io_apic.c(라인 1797-1806)에는 다음과 같은 설명이 있습니다.

적어도 I/O APIC 버전 0x11(예: 82093AA 및 다양한 칩셋에 통합된 코어)에 영향을 미치는 정오표가 있는 것 같습니다. 어떤 경우에는 레벨 트리거 인터럽트가 실수로 에지 트리거 인터럽트로 전달되지만 해당 IRR 비트는 여전히 설정됩니다. 결과적으로 I/O 장치는 EOI 메시지를 기대하지만 결코 도착하지 않으며 소스에서 추가 인터럽트가 차단됩니다. 정확한 원인은 현재 알려지지 않았지만, 이 현상은 특정 소스에서 두 번의 연속 인터럽트 요청이 동일한 CPU로 전달되고 중간 소스가 일시적으로 비활성화될 때 관찰됩니다.

이 주석(및 코드)은 10년 넘게(커널 재구성 제외) 크게 변경되지 않았기 때문에 이것이 오늘날 얼마나 관련성이 있는지는 잘 모르겠지만 꽤 사소하고 이상한 하드웨어 문제를 방지합니다.

내가 보고 있는 파일은 커널 버전 4.15.10에서 가져온 것입니다. 소스는 다를 수 있습니다.

관련 정보