Para romper una sequía de varios días sin escribir, me vengo con un pequeño tip que puede resultar más valioso a modo teórico que a modo práctico.

El tip en cuestión es visualizar las interrupciones del procesador en tiempo real.

Entendemos por interrupción a la señal que recibe el procesador que le indica interrumpir, valga la redundancia, el flujo de la ejecución actual para ejecutar otro código para tratar dicha situación (interrupción). En Sistemas Operativos vemos al uso de interrupciones como alternativa al polling.

En Linux, el archivo /proc/interrupts guarda el número de interrupciones por IRQ en la arquitectura x86. Es un archivo estándar con información tabulada en al menos cuatro columnas. En caso de equipos con varios procesadores o procesadores multicore podremos ver una columna más (una por cada CPU adicional).

Un ejemplo del contenido de este archivo puede ser el siguiente:

$ cat /etc/interrupts
           CPU0       CPU1       
  0:         97          0   IO-APIC-edge      timer
  1:          0          2   IO-APIC-edge      i8042
  4:          0          2   IO-APIC-edge   
  7:          1          0   IO-APIC-edge   
  8:          0          0   IO-APIC-edge      rtc0
  9:          0          0   IO-APIC-fasteoi   acpi
 12:          0          4   IO-APIC-edge      i8042
 14:        590     279664   IO-APIC-edge      pata_amd
 15:          0          0   IO-APIC-edge      pata_amd
 21:        780     397040   IO-APIC-fasteoi   ohci_hcd:usb2
 22:       7216    7934003   IO-APIC-fasteoi   ehci_hcd:usb1, nvidia
 23:         17       6439   IO-APIC-fasteoi   sata_nv, HDA Intel
2300:      18575   18126664   PCI-MSI-edge      eth0
NMI:          0          0   Non-maskable interrupts
LOC:    4072839    5398580   Local timer interrupts
RES:     918622     654053   Rescheduling interrupts
CAL:      12552       8213   Function call interrupts
TLB:      14280      15894   TLB shootdowns
SPU:          0          0   Spurious interrupts
ERR:          1
MIS:          0

Muy bien, pero si nuestro objetivo es ver las interrupciones en "tiempo real", simplemente haremos un polling a dicho archivo cada un segundo y valiéndonos del comando watch. Para los desprevenidos, el comando watch nos permite ejecutar un mismo comando cada determinada cantidad de tiempo, de esta forma:

watch -n1 "cat /proc/interrupts"

nos muestra el archivo de interrupciones una vez cada segundo, siendo la opción -n1 el tiempo en segundos entre cada ejecución del comando.

Vía: Linux Journal