Sobre / proc / interrompe o que são MIS e ERR?

0

Tocando em voz alta olhando / proc / interrupts A saída abaixo mostra ERR e MIS nas linhas 26 e 27, respectivamente. O que são estes e porque eles têm contagens (embora de zero) para CPU0 mas nenhum outro, assim como nenhuma descrição? Estou certo em pensar que eles estão realmente a ver se o PIC se equivoca?

Obrigado ErikF pela resposta. Por que essas interrupções só aparecem para o CPU0? É porque somente essa CPU receberá uma interrupção se houver um erro com o sistema PIC / Interrupt?

    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  
    
por UPChoo 17.03.2018 / 01:15

1 resposta

2

Você está correto: eles estão relacionados ao sistema IO-APIC. ERR está documentado na documentação do kernel em Documentation/filesystems/proc (linhas 677 -680):

ERR is incremented in the case of errors in the IO-APIC bus (the bus that connects the CPUs in a SMP system. This means that an error has been detected, the IO-APIC automatically retry the transmission, so it should not be a big problem, but you should read the SMP-FAQ.

AFAICT você não deve ver isso a menos que haja um problema de hardware. Como a documentação indica, é algo que você mostra nota e investiga se isso acontece com frequência.

MIS não aparece na documentação, mas esta mensagem no fórum do Gentoo de 2005 fala sobre isso. O atual arch/x86/apic/io_apic.c (linhas 1797-1806) tem o seguinte comentário:

It appears there is an erratum which affects at least version 0x11 of I/O APIC (that's the 82093AA and cores integrated into various chipsets). Under certain conditions a level-triggered interrupt is erroneously delivered as edge-triggered one but the respective IRR bit gets set nevertheless. As a result the I/O unit expects an EOI message but it will never arrive and further interrupts are blocked from the source. The exact reason is so far unknown, but the phenomenon was observed when two consecutive interrupt requests from a given source get delivered to the same CPU and the source is temporarily disabled in between.

Como este comentário (e código) não mudou significativamente em mais de 10 anos (além da reestruturação do kernel), não tenho certeza de quão relevante ele é hoje, mas é muito pequeno e protege contra um estranho problema de hardware.

Os arquivos que eu olhei eram da versão 4.15.10 do kernel. Suas fontes podem variar.

    
por 17.03.2018 / 01:50