iis默认网站打不开,成都有哪些网站开发公司,个人无网站怎样做cps广告,去势 wordpress在 Linux 系统中#xff0c;/proc/interrupts 文件提供了系统中断的详细信息#xff0c;是性能分析和故障排除的重要工具。本文将重点解析 RK3568环境下该文件的输出格式及其背后的结构。
什么是 /proc/interrupts#xff1f;
/proc/interrupts 文件记录了所有中断的信息/proc/interrupts 文件提供了系统中断的详细信息是性能分析和故障排除的重要工具。本文将重点解析 RK3568环境下该文件的输出格式及其背后的结构。
什么是 /proc/interrupts
/proc/interrupts 文件记录了所有中断的信息包括每个中断在各个 CPU 上的触发次数、对应的中断源以及中断控制器类型等。这些信息对于调试和优化系统性能至关重要。它定义在fs/proc/interrupts.c文件中#cat /proc/interrupts会触发函数show_interrupts来完成打印输出。
# cat /proc/interruptsCPU0 CPU1 CPU2 CPU35: 78720 81935 81943 77682 GICv3 26 Level arch_timer6: 0 0 0 0 GICv3 141 Level rk_timer7: 0 0 0 0 GICv3 260 Level arm-pmu8: 0 0 0 0 GICv3 261 Level arm-pmu9: 0 0 0 0 GICv3 262 Level arm-pmu10: 0 0 0 0 GICv3 263 Level arm-pmu11: 0 0 0 0 GICv3 128 Level ahci[fc800000.sata]12: 0 0 0 0 GICv3 162 Level ehci_hcd:usb113: 0 0 0 0 GICv3 163 Level ohci_hcd:usb314: 2 0 0 0 GICv3 165 Level ehci_hcd:usb215: 33 0 0 0 GICv3 166 Level ohci_hcd:usb416: 443 0 0 0 GICv3 78 Level fdd40000.i2c17: 0 0 0 0 GICv3 183 Level fde4b000.iommu, fde40000.npu18: 504 0 0 0 GICv3 71 Level fde60000.gpu19: 0 0 0 0 GICv3 73 Level fde60000.gpu20: 308 0 0 0 GICv3 72 Level fde60000.gpu21: 0 0 0 0 GICv3 171 Level fdea0400.vdpu22: 0 0 0 0 GICv3 170 Level fdea0800.iommu23: 0 0 0 0 GICv3 122 Level rga24: 0 0 0 0 GICv3 94 Level fded0000.jpegd25: 0 0 0 0 GICv3 93 Level fded0480.iommu26: 0 0 0 0 GICv3 96 Level fdee0000.vepu27: 0 0 0 0 GICv3 95 Level fdee0800.iommu28: 0 0 0 0 GICv3 88 Level fdef0800.iommu, fdef0000.iep29: 0 0 0 0 GICv3 172 Level fdf40000.rkvenc30: 0 0 0 0 GICv3 173 Level fdf40f00.iommu31: 0 0 0 0 GICv3 174 Level fdf40f00.iommu32: 0 0 0 0 GICv3 123 Level fdf80200.rkvdec33: 0 0 0 0 GICv3 124 Level fdf80800.iommu37: 0 0 0 0 GICv3 91 Level fdff1a00.iommu38: 0 0 0 0 GICv3 64 Level eth039: 0 0 0 0 GICv3 61 Level eth040: 1939 0 0 0 GICv3 180 Level fe043e00.iommu, fe040000.vop41: 3856 0 0 0 GICv3 77 Level fe0a0000.hdmi, dw-hdmi-cec42: 62 0 0 0 GICv3 132 Level dw-mci48: 0 0 0 0 GICv3 59 Level eth149: 0 0 0 0 GICv3 56 Level eth150: 0 0 0 0 GICv3 130 Level dw-mci51: 0 0 0 0 GICv3 133 Level rksfc52: 28170 0 0 0 GICv3 51 Level mmc056: 208 0 0 0 GICv3 46 Level fe530000.dmac57: 0 0 0 0 GICv3 45 Level fe530000.dmac58: 25 0 0 0 GICv3 48 Level fe550000.dmac59: 0 0 0 0 GICv3 47 Level fe550000.dmac60: 0 0 0 0 GICv3 34 Level can061: 0 0 0 0 GICv3 35 Level can162: 2 0 0 0 GICv3 79 Level fe5a0000.i2c63: 0 0 0 0 GICv3 82 Level fe5d0000.i2c64: 44 0 0 0 GICv3 83 Level fe5e0000.i2c66: 418 0 0 0 GICv3 135 Level fe610000.spi71: 0 11 0 0 GICv3 115 Level rk_pwm_irq74: 0 0 0 0 GICv3 147 Level rockchip_thermal75: 868 0 0 0 GICv3 125 Level fe720000.saradc76: 1 0 0 0 GICv3 167 Level rockchip_usb2phy77: 1 0 0 0 GICv3 168 Level rockchip_usb2phy84: 54 0 0 0 GICv3 150 Level debug85: 53 0 0 0 GICv3 201 Level dwc386: 0 0 0 0 GICv3 202 Level xhci-hcd:usb587: 0 0 0 0 gpio0 3 Level rk81788: 0 0 0 0 rk817 0 Edge rk805_pwrkey_fall89: 0 0 0 0 rk817 1 Edge rk805_pwrkey_rise
112: 0 0 0 0 gpio0 27 Edge hym8563
113: 0 0 0 0 gpio2 31 Edge bt_default_wake_host_irq
IPI0: 7129 21830 19937 18 Rescheduling interrupts
IPI1: 50 54 49 7 Function call interrupts
IPI2: 0 0 0 0 CPU stop interrupts
IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts
IPI4: 0 0 0 0 Timer broadcast interrupts
IPI5: 1921 1726 1928 1 IRQ work interrupts
IPI6: 0 0 0 0 CPU wake-up interrupts
Err: 0输出解析
基本结构 CPU0 CPU1 CPU2 CPU35: 78720 81935 81943 77682 GICv3 26 Level arch_timer6: 0 0 0 0 GICv3 141 Level rk_timer7: 0 0 0 0 GICv3 260 Level arm-pmu列解析
1 中断 ID 每一行的第一列是Linux中断的编号作为索引用于访问 irq_desc。在内核代码中经常以变量名virq出现。2 CPU 列 每一列表示一个 CPU 的中断计数对应于 irq_desc.kstat_irqs 成员显示该中断在各个 CPU 上的触发次数。3 中断控制器类型 输出中的 GICv3 表示使用的中断控制器为 GICv3通用中断控制器版本 3对应irq_desc-irq_data.chip-name。4 中断源编号 每行中的数字如 26, 165是硬件中断请求编号hwirq对应desc-irq_data.hwirq5 中断类型 Level 表示中断的触发方式为电平触发来自如下输出
irqd_is_level_type(desc-irq_data) ? Level : Edge
6 中断名称 最后一列显示中断源的名称例如 arch_timer 或 ehci_hcd:usb2对应于 irq_desc.name 成员。
IPIInter-Processor Interrupts
在输出中可能还会看到 IPIInter-Processor Interrupts相关的行这些中断用于 CPU 之间的通信通常会单独列出。
IPI0: 7129 21830 19937 18 Rescheduling interrupts
IPI1: 50 54 49 7 Function call interrupts
IPI2: 0 0 0 0 CPU stop interrupts
IPI3: 0 0 0 0 CPU stop (for crash dump) interrupts
IPI4: 0 0 0 0 Timer broadcast interrupts
IPI5: 1921 1726 1928 1 IRQ work interrupts
IPI6: 0 0 0 0 CPU wake-up interrupts
按中断类型划分
在 ARM64 架构中中断主要分为四类
SGI (Software Generated Interrupts): SGI 是由软件产生的中断通常用于进程间通信IPC或特定的系统调用。当某个进程需要通知另一个进程时可以触发 SGI。GIC V3中SGI范围是0~15。在Linux中定义IPI 是核心之间的中断IPI使用SGI来实现例如
IPI0: 7129 21830 19937 18 Rescheduling interrupts
IPI1: 50 54 49 7 Function call interrupts
PPI (Private Peripheral Interrupts): PPI 是特定于 CPU 的中断通常用于处理某个特定硬件设备的请求。这些中断一般不会被其他 CPU 共享通常用于较为私有的设备如定时器或某些内部设备。虽然 PPI 在输出中没有特别标记但可以通过硬件中断号来推测其类型。GIC V3中PPI范围是16~31。例如上面的arch_timer的硬件中断号是26就是PPI。 CPU0 CPU1 CPU2 CPU35: 78720 81935 81943 77682 GICv3 26 Level arch_timer
SPI (Shared Peripheral Interrupts): SPI 是多个设备共享的中断通常由外部设备通过中断控制器发送。共享中断允许多个设备使用同一个中断线从而节省资源。SPI 的中断源通常在输出中直接显示设备名称例如 USB 控制器或网络接口卡。GIC V3中SPI硬件中断号的范围是32~1019。例如上面的ehci_hcd:usb1的硬件中断号是162就是SPI。 CPU0 CPU1 CPU2 CPU3
12: 0 0 0 0 GICv3 162 Level ehci_hcd:usb1
LPI(Locality-specific Peripheral Interrupts) LPI 是一种使用消息机制和边沿触发的中断。例如当 PCIe 设备需要中断 CPU 时它会通过 MSI(Message Signaled Interrupts) 机制发送中断信号通常是写入特定内存地址。ITS 将接收到的 MSI 中断请求解析并将其转换为 LPI。转换后的 LPI 被发送到相应的 Redistributor最终处理器核心接收到 LPI。GIC V3中LPI硬件中断号的范围是大于等于8192。显然上面RK3568的输出没有LPI中断。 共同成长感谢点赞关注