/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행):
ERR
IO-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에서 가져온 것입니다. 소스는 다를 수 있습니다.