深入解析 ARM64 SOC RK3568的 /proc/interrupts 输出

在 Linux 系统中,/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 中断源编号
    • 每行中的数字(如 26165)是硬件中断请求编号(hwirq),对应desc->irq_data.hwirq
  • 5 中断类型
    • Level 表示中断的触发方式为电平触发,来自如下输出
irqd_is_level_type(&desc->irq_data) ? "Level" : "Edge"
  • 6 中断名称
    • 最后一列显示中断源的名称,例如 arch_timer 或 ehci_hcd:usb2,对应于 irq_desc.name 成员。

IPI(Inter-Processor Interrupts)

在输出中可能还会看到 IPI(Inter-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中断。

共同成长,感谢点赞关注!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1548836.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Qt_网络编程

目录 1、Qt的UDP Socket 1.1 用Udp实现服务器 1.2 用Udp实现客户端 2、Qt的TCP Socket 2.1 用Tcp实现服务器 2.2 用Tcp实现客户端 3、Qt的HTTP 3.1使用Qt的HTTP 结语 前言: 网络协议是每个平台都必须遵守的,只是不同的平台所提供的网络API不…

工业缺陷检测——Windows 10本地部署AnomalyGPT工业缺陷检测大模型

0. 引言 在缺陷检测中,由于真实世界样本中的缺陷数据极为稀少,有时在几千甚至几万个样品中才会出现一个缺陷数据。因此,以往的模型只需在正常样本上进行训练,学习正常样品的数据分布。在测试时,需要手动指定阈值来区分…

实现语音合成的三种方法:HTML5 Web Speech 、speak-tts、百度语音合成

1. 使用HTML5 Web Speech API 1.1 使用方法 window.speechSynthesis 是HTML5 Web Speech API的一部分,是浏览器原生提供的文本转语音功能。它允许开发者在网页上通过JavaScript调用,将文本转换为语音进行播放。 https://developer.mozilla.org/zh-CN/d…

渗透测试--文件上传常用绕过方式

文件上传常用绕过方式 1.前端代码,限制只允许上传图片。修改png为php即可绕过前端校验。 2.后端校验Content-Type 校验文件格式 前端修改,抓取上传数据包,并且修改 Content-Type 3.服务端检测(目录路径检测) 对目…

LMDeploy 量化部署实践

任务 使用结合W4A16量化与kv cache量化的internlm2_5-1_8b-chat模型封装本地API并与大模型进行一次对话 复现过程 按照教材安装环境。https://github.com/InternLM/Tutorial/blob/camp3/docs/L2/LMDeploy/readme.md 使用LMDeploy部署原版的1.8b大模型,占用显存2…

Centos怎么执行脚本

方法一:切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本 cd /data/shell ./hello.sh 方法二:以绝对路径的方式去执行bash shell脚本 /data/shell/hello.sh 方法三:直接使用bash 或sh 来执行…

Kubernetes深入详解(一)

目录 第一部分 K8s概念和架构 1、k8s概述和特性 2、K8s架构组件 3、k8s核心概念 第二部分 从零搭建k8s集群 1、搭建k8s环境平台规划 2、服务器硬件配置要求 3、搭建k8s集群部署方式 (1) 基于客户端工具kubeadm 1、安装Docker 2、添加阿里云YUM软件源 3、安 装kubea…

代码随想录Day 58|拓扑排序、dijkstra算法精讲,题目:软件构建、参加科学大会

提示:DDU,供自己复习使用。欢迎大家前来讨论~ 文章目录 图论part08**拓扑排序精讲**题目:117. 软件构建拓扑排序的背景解题思路:模拟过程 **dijkstra(朴素版)精讲**题目:47. 参加科学大会解题思…

腾讯特效 SDK

腾讯云视立方腾讯特效 SDK(Tencent Effect)是音视频终端 SDK (腾讯云视立方)的子产品 SDK 之一,提供美颜特效功能。基于优图精准的 AI 能力和天天 P 图丰富的实时特效处理,为各类视频处理场景提供丰富的产品…

SpringCloud-Netflix第一代微服务快速入门

1.springCloud常用组件 Netflix Eureka 当我们的微服务过多的时候,管理服务的通信地址是一个非常麻烦的事情,Eureka就是用来管理微服务的通信地址清单的,有了Eureka之后我们通过服务的名字就能实现服务的调用。 Netflix Ribbon\Feign : 客…

卫星导航定位原理学习(三)

GNSS信号体制及其性能分析 GNSS信号体制直接影响卫星导航系统的性能,是卫星导航系统设计的重要内容。卫星导航信号体制主要包括信号频率、信号结构、导航电文3部分。其中信号结构又包括调制波形、频率带宽、扩频码码长、码速率、码结构、信号功率等内容。导航电文设…

8086介绍

内部结构 执行部件EU(Execution Unit) 包含运算器、通用寄存器组、EU控制单元。 只负责控制,不和外部总线打交道 总线接口部件BIU(Bus Interface Unit) 包含指令队列缓冲器、16位指令指针寄存器IP、16位段寄存器&am…

【L波段差分干涉SAR卫星(陆地探测一号01组)】

L波段差分干涉SAR卫星(陆地探测一号01组) L波段差分干涉SAR卫星(陆地探测一号01组)是我国自主研发的重要卫星系统,以下是对该卫星的详细介绍: 一、基本信息 卫星组成:陆地探测一号01组由A星…

全网最适合入门的面向对象编程教程:53 Python字符串与序列化-字符串与字符编码

全网最适合入门的面向对象编程教程:53 Python 字符串与序列化-字符串与字符编码 摘要: 在 Python 中,字符串是文本的表示,默认使用 Unicode 编码,这允许你处理各种字符集,字符编码是将字符转换为字节的规则…

一文上手SpringSecurity【三】

一、认证流程分析 上篇文章当中,我们一步一步查阅源码方式对认证流程有了一些认证,本章节梳理一下整个流程,最后形成一张图,以更直观的方式来理解认证的整个流程. 1.1 认证当中步及的接口和类 1.1.1 【抽象类】AbstractAuthenticationProcessingFilter 实现了GenericFilter…

OFDM通信系统发射端需要做ifftshift的原因分析

对频率为15Hz的正弦波信号进行FFT分析,并且直接画图,matlab代码如下: fs 100; % sampling frequency t 0:(1/fs):(10-1/fs); % time vector S cos(2*pi*15*t); n length(S); X fft(S); f (0:n-1)*(fs/n); %frequenc…

使用canvas截取web camera指定区域,并生成图片

目标&#xff0c;截取红色色块背后的视频区域。 代码结构如下&#xff1a; <div id"p1"><video id"v1" autoplay playsinline></video><div id"mrz"></div><canvas id"captureCanvas"></can…

优化|深入解读DeepOPF:一种用于安全约束直流最优潮流问题的深度神经网络方法

原文信息&#xff08;包括题目、发表期刊、原文链接等&#xff09;&#xff1a; DeepOPF: A Deep Neural Network Approach for Security-Constrained DC Optimal Power Flow https://ieeexplore.ieee.org/document/9205647 原文作者&#xff1a;Xiang Pan; Tianyu Zhao; Ming…

机器学习-聚类

http://en.wikipedia.org/wiki/Multispectral_pattern_recognition 聚类基础知识 凝层次聚类 K-means 聚类 基于EM算法的聚类 聚类基础知识 聚类&#xff1a;将数据划分到不同的类里&#xff0c;使相似的数据在同一类里&#xff0c;不相似的数据在不同的类里&#xff08;物…

芝法酱学习笔记(0.5)——使用jenkins做自动打包

前言 上节讲了SpringBoot上的打包。但这些过程都是手动的&#xff0c;在实际的开发测试时&#xff0c;自动化的打包部署&#xff0c;可以大大提升团队开发的效率 一、去官网下载 1.1 官网安装命令 对于如何安装的问题&#xff0c;我向来推荐官网 wget -O /usr/share/keyri…