linux下的中断(interrupt)IRQ以及IRQ绑核小结

linux下的中断(interrupt)IRQ以及IRQ绑核小结本文转自 https blog csdn net wangjianno2 article details

大家好,欢迎来到IT知识分享网。

一、cpu工作模式

二、中断IRQ

Interrupt Request,简称IRQ,中断其实就是由硬件或软件所发送的一种称为IRQ(中断请求)的信号。中断允许让设备(如键盘,串口卡,并口等设备)表明它们需要CPU。一旦CPU接收了中断请求,CPU就会暂时停止执行正在运行的程序,并且调用一个称为中断处理器或中断服务程序(interrupt service routine)的特定程序。中断服务程序或中断处理器可以在中断向量表中找到,而这个中断向量表位于内存中的固定地址中。CPU处理完中断后,就会恢复执行之前被中断的程序。

三、linux中断分类

中断有两种,一种是硬中断,一种是软中断。

硬中断

软中断

这些中断是在CPU执行指令(也就是说在进程正在运行的时候)的时候产生的,因为在执行指令时,CPU(确切的说应是在CPU中的运算器)自身会产生一个异常(此处的异常也可理解为软中断)。例如,一个数字除以0(当然这是不可能的),此时就会导致一个divide-by-zero的异常,从而导致计算机将此计算取消或者显示一个错误的信息。

四、关于中断的查看/proc/interrupts和/proc/stat

(1)/proc/interrupts

在linux的机器上,/proc/interrupts这个文件包含有关于哪些中断正在使用和每个处理器各被中断了多少次的信息。

# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0:  0 0 0 IO-APIC-edge timer 1: 20 0 0 0 IO-APIC-edge i8042 6: 5 0 0 0 IO-APIC-edge floppy 7: 0 0 0 0 IO-APIC-edge parport0 8: 0 0 0 0 IO-APIC-edge rtc 9: 0 0 0 0 IO-APIC-level acpi 12: 240 0 0 0 IO-APIC-edge i8042 14:  0 0 0 IO-APIC-edge ide0 51:  0 0 0 IO-APIC-level ioc0 59: 1 0 0 0 IO-APIC-level vmci 67:  0 0 0 IO-APIC-level eth0 75:  0 0 0 IO-APIC-level eth1 NMI: 0 0 0 0 LOC:     ERR: 0 MIS: 0 

(2)/proc/stat

在文件/proc/stat中,包含了一些关于系统内核的统计信息,也包含了一些中断信息。

# cat /proc/stat cpu      90006  0 cpu0      90006  0 cpu1      0 64876 0 cpu2      0 64764 0 cpu3      0 65244 0 intr  --- Output Truncated 

在intr这一行,显示了自从系统启动以来所产生的中断数。第一列表示所有被服务的中断数。后续的每一列都表示一个特定中断的总数。

五、5.关于IRQ的CPU绑定方法

smp_affinity文件主要用于某个特定IRQ要绑定到哪个CPU核心上。在/proc/irq/IRQ_NUMBER/目录下都有一个smp_affinity文件,这个文件中,所表示的CPU核心以十六进制来表示的。例如,网卡的中断号是:

grep eth0 /proc/interrupts 67:  0 0 0 IO-APIC-level eth0 cat /proc/irq/67/smp_affinity 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 
# rpm -qa | grep irqbalance irqbalance-0.55-15.el5 # yum search irqbalance # yum install irqbalance.x86_64 

启动irqbalance服务后,中断在CPU上的分布如下:

# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0:  0 0 0 IO-APIC-edge timer 1: 13 0 0 0 IO-APIC-edge i8042 6: 96 10989 470 0 IO-APIC-edge floppy 7: 0 0 0 0 IO-APIC-edge parport0 8: 1 0 0 0 IO-APIC-edge rtc 9: 0 0 0 0 IO-APIC-level acpi 12: 109 1787 0 0 IO-APIC-edge i8042 15: 99  0 0 IO-APIC-edge ide1 51: 17371 0  0 IO-APIC-level ioc0 67: 1741 0 0  PCI-MSI eth0 83: 0 0 0 0 PCI-MSI vmci NMI: 0 0 0 0 LOC:     ERR: 0 MIS: 0 

irqbalance对于包含多个核心的系统来说是非常有用的。因为通常中断只被第一个CPU核心处理。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128943.html

(0)
上一篇 2025-08-27 21:00
下一篇 2025-08-27 21:15

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信