0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

linux内核支持硬中断嵌套吗

Linux阅码场 来源:Linux阅码场 作者:Linux阅码场 2022-04-10 15:57 次阅读

火焰图中就是找不到函数名,怀疑符号被优化

提问:yly

参与:自行车 成不晒ᯤ⁶ᴳ

你这个图是有的内核函数还是基本全部符号看不到,用的系统自带的perf的话可以考虑下载对应内涵源码,自己把perf在机器上重新编译一下,我自己已经遇到这个问题好几次了

加noinline强制编译器不要inline

Linux Trace 系统介绍

提问:李泉

参与:广成子 guoqiang Gang 逸 游~游~游 pwl999 乘风破浪的凌杰

mindjet mindmanager 画的架构图:

ef29be12-b7a7-11ec-aa7f-dac502259ad0.jpg

ef40f0b4-b7a7-11ec-aa7f-dac502259ad0.jpg

有使用atrace+prefetto+sql前端工具组合

Vmcore 分析工具

提问:游~游~游

参与:pwl999

crash

linux-ramdump-parser

VAATools

死机后查看 Trace 日志

提问:晴天

参与:Gang ~jeff CH

crash工具支持扩展的trace命令,如果有kdump的话,可以使用crash> trace show显示trace日志

SOC 增加 Kdump 机制支持

参与:CH pwl999

Linux Kdump 机制详解

栈空间的变量被踩定位

提问:Li

栈空间的变量进入函数时不为空,到某一处就变为空了,中间没有对该变量的操作

参与:LittleEmpero 李佳龙 Gang ~jeff pwl999

大概率是运行时栈内存被踩了。

如果地址恒定,可以尝试用gdb watch命令捕捉:


// 先打印这个栈变量的地址

p &stack_var

0x12345678

// 然后

watch *(long*)0x12345678

栈空间的变量,切换栈,地址就变了?可以尝试把watch和command命令一起用,在函数入口下个断点,在command里下watch,这就相当于动态下观测点,这样跑一晚上估计明天来了就看到踩内存的现场了。

watch失效后,程序就停止了,怎么让它继续往下?在函数退出的地方,或者说在watch失效前的地方,再加个断点,在这个断点的command里把观测点删掉。通常情况下,源代码维度即使有多个返回点,编译成指令后,就只有一个返回点,所有的return都会通过jxx指令跳到唯一返回点,当然通常情况下是这样。可以用disass指令对函数反汇编,然后看看ret指令是不是唯一的,如果ret指令是唯一的,就在ret指令前面用b*0x12345678这种语法,打一个绝对地址断点。

没有单独delete watchpoints,del all就会把断点这都删除了。

可以试下objtrace。可以设置一个跟踪点,把一个函数参数设置为跟踪点,如果在其它地方访问到(经过了其它的函数参数)会被捕捉到。Introduce objtrace trigger to trace the kernel object

objtrace

objtrace

Introduce objtrace trigger to trace the kernel object

谢欢:向linux内核引进object trace

gdb 录制执行

参与:Li LittleEmpero

rr-project

handlespeculativefault

提问:viho he参与:LittleEmpero 郑杨

投机性缺页异常处理

cache false sharing 定位

提问:nicolas参与:kaka 李佳龙 天空微蓝 pwl999

perf抓取cache miss类的event吧,再分析pc之间的关系,有没有可能是false sharing 造成的

perf c2c

虚拟内存增长怎么分析

提问:Gang

ef50741c-b7a7-11ec-aa7f-dac502259ad0.png

参与:LittleEmpero rocklee viho he nicolas pwl999

感觉虚拟内存即使泄露了应该也没啥风险,64位系统,虚拟地址空间大得很。不过不可否认这肯定不正常,代码肯定有问题。

每隔一段时间cat 一下/proc/PID/smap,然后对比之前的,先看看是哪段地址在增长。是mmap忘了unmap,还是系统堆区在不断增长,然后再具体分析。

手机上虚拟内存可以直接看maps,结合smaps进行分类,和对应物理内存大小,pc上应该也是类似。

或许倒是可以从slab来查,到底是谁在申请大量虚拟内存?vmareastructs。

Memory Overcommit

性能书籍推荐

参与:viho he guoqiang

soft lockup / hard lockup 定义

提问:游~游~游

参与:自行车 pwl999

softlockup是抢占被关了,hardlockup是中断被关了

如果一个内核线程关中断(不持有锁,只是关中断)并且睡眠,会发生什么?

提问:viho he

参与:~jeff 逸 pwl999

关中断的情况下, 如果发生调度,schedule()就会打开中断,会引入中断重入的问题,也对sched out进程在不知情的情况下打开了中断

huge page 对性能的提升

提问:viho he

参与:自行车 pwl999

huge page只是影响了tlb,对cache无影响吧

我们为什么要禁用 THP

Huge Page 是否是拯救性能的万能良药?

linux 内核支持硬中断的嵌套吗?

提问:hw

参与:郑杨 木子丶棒

Linux的中断可以嵌套吗?

FPGA开发者和内核开发者打通

参与:guoqiang hw 小林

pmu 和 Ftrace 是两把钥匙

当你去主导一个基于zynq的图像质检项目,你就会发现,负责项目研发的人如果有一个全通的,会事半功倍

整个华东区未来是全世界的电动车产业集群,上海需要大量这样的人,房子都不一定能赶上这类人才的薪资增长率。

AI和HPC是性能需求的推动者。其实还有个需求是美国实体名单带来的,比如原来7nm的处理器,美国非不让你,你就只能28nm,怎么在28nm的芯片上跑出来更高的性能。

AI 算法书籍推荐

参与:CH guoqiang

有两个细分方向,如果图像就是冈萨雷斯的数字图像处理,如果是机器学习,就是周志华的西瓜书:

这一本作为通识 了解入门级来看 看全貌用的:

这一本再看具体分类:(其它的 在深入细分方向就看paper 综述、做实验)

再往后 往深的走,就需要补数学了,优化理论等:(目前人工智能的本质其实就是求解优化问题,获取次优解)

dma-buf

参与:guoqiang viho he Peter 孙雷 Oops Wenhui

dma-buf的底层机制,安卓的ION也是基于此搭建出来的。但是ION在staging过程中受阻 ,最终upstream放弃了合入ION,而由John Stultz主领,在同样的dma-buf机制上,做了一个叫DMA-BUF Heaps的东西来替代ION。安卓社区也列了相应计划从ION迁移到DMA-BUF Heaps:LVC21-120 Moving to DMA BUF Heaps Now is the time!,从dma-buf往上,ION也好,dma-buf heaps也罢,这一整套方案就是想搞定数据在这些众多硬件之间流转的零拷贝难题:

f02ad120-b7a7-11ec-aa7f-dac502259ad0.png

啥应用场景有这样的需求呢?目前需求最大的就是图形图像领域,图像这种大数据处理不共享太慢,dma来回搬太慢。这个图里,7个硬件全要在同一块数据上做读写。如果用拷贝、搬运的话,想想这个性能损耗有多大,分析以后,可能还要送给GPU去绘图(比如手机上人脸识别,打出来的那个框就是GPU绘的)。

在图像处理的时候,比如一帧图像,可能会经过isp, 畸变校正,缩放裁剪,最后可能会送到ai模块作分析 这个过程中的每个环节几乎都是硬件来完成的,如果单纯的使用dma来搬数据,效率就很低了。

TEE也来做零拷贝,会不会有安全隐患?share memory本来就是暴露给linux(REE)的,本来就是安全薄弱的环节。加上Infirmation flow integrity tag checking 就可以安全的share了 Google doc怎么share 内存就可以怎么share。

dma-buf学习分享

Destaging ION

DMA-BUF系列文章

宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)

RR实时调度策略,时间片一般是多少?

提问:rocklee

参与:pwl999 viho he

f0469900-b7a7-11ec-aa7f-dac502259ad0.png

Linux schedule 2、调度算法

有没有这种变态用法?A B线程同一优先级,A线程是fifo调度,B线程是RR调度,这时系统怎么调度?看了一下代码,同一优先级是按先后顺序放在同一个链表上的,如果当前进程是 FIFO 会一直跑完为止,如果当前进程是 RR 时间片用完换链表上的下一个进程。涉及到的关键函数有 tasktickrt()、picknextrtentity()、enqueuert_entity()。

原文标题:彭伟林:火焰图、trace工具、dma-buf和图书推荐

文章出处:【微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

审核编辑:彭菁

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    447

    文章

    47838

    浏览量

    409214
  • 数字图像处理

    关注

    7

    文章

    103

    浏览量

    18806
  • LINUX内核
    +关注

    关注

    1

    文章

    311

    浏览量

    21389

原文标题:彭伟林:火焰图、trace工具、dma-buf和图书推荐

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux内核中断设计与实现

    裸机编程中使用中断比较麻烦,需要配置寄存器、使能IRQ等等。而在Linux驱动编程中,内核提供了完善的终端框架,只需要申请中断,然后注册中断
    发表于 07-29 08:57 638次阅读

    linux 中断和设备驱动

    linux 中断和设备驱动 本章介绍L i n u x内核是如何维护它支持的文件系统中的文件的,我们先介绍 V F S ( Vi r t u a lFile System,虚拟文件
    发表于 02-09 14:13 24次下载

    STM32中断嵌套NVIC快速入门

    //CM3 有 最多240个中断(通常外部中断写作IRQs),就是 软件上说的 IRQ CHANAELx(中断通道号x) 每个中断有自己的可编程的
    发表于 02-11 14:08 127次下载

    STM32中断嵌套快速入门(NVIC)

    STM32中断嵌套快速入门(NVIC),喜欢的朋友可以下载来学习。
    发表于 01-15 17:45 41次下载

    STM32中断嵌套NVIC快速入门

    STM32 中断嵌套NVIC 快速入门,喜欢的朋友可以下载来学习。
    发表于 01-15 17:45 20次下载

    Linux 2.4.x内核中断机制

    本文从Linux内核几种软中断机制相互关系和发展沿革入手,分析了这些机制的实现方法,给出了它们的基本用法。 软中断概况 软中断是利用硬件
    发表于 11-02 11:01 0次下载

    STM32中断嵌套NVIC快速入门

    寄存器 】.由于CM3支持 硬件中断嵌套,所以可以有 256 级的可编程优先级和 256级中断嵌套【 书上称:抢占(preempt) 优先级
    发表于 11-30 03:18 878次阅读

    Linux驱动技术之一内核中断

    在硬件上,中断源可以通过中断控制器向CPU提交中断,进而引发中断处理程序的执行,不过这种硬件中断体系每一种CPU都不一样,而
    发表于 05-08 13:49 558次阅读

    华芯微特MCU的嵌套向量中断控制器与外部中断/事件控制器的使用方法

    01. 嵌套向量中断控制器(NVIC) NVIC的全称是Nested vectoredinterrupt controller,即嵌套向量中断控制器。 Cortex-M0和Cortex
    的头像 发表于 06-04 12:08 3077次阅读
    华芯微特MCU的<b class='flag-5'>嵌套</b>向量<b class='flag-5'>中断</b>控制器与外部<b class='flag-5'>中断</b>/事件控制器的使用方法

    MCU中断嵌套总结--51,STM32,DSP,ARM

    MCU中断嵌套总结--51,STM32,DSP,ARM一、51单片机1、默认中断优先级(逻辑优先级)为:2、IP寄存器设置了某一位(物理优先级),比如:PS (IP.4):串行口中断
    发表于 11-05 20:35 7次下载
    MCU<b class='flag-5'>中断</b><b class='flag-5'>嵌套</b>总结--51,STM32,DSP,ARM

    【CC2530授课笔记】⑥ 外部中断中断嵌套 (51内核单片机)

    摘要本文章主要介绍了CC2530外部中断的使用,通过两个按键P1.2和P0.1实现两个中断,打断主函数,实现嵌套的功能。
    发表于 11-22 12:51 3次下载
    【CC2530授课笔记】⑥ 外部<b class='flag-5'>中断</b>及<b class='flag-5'>中断</b><b class='flag-5'>嵌套</b> (51<b class='flag-5'>内核</b>单片机)

    linux内核-时钟中断

    在所有的外部中断中,时钟中断起着特殊的作用,其作用远非单纯的计时所能相比。当然,即使是单纯的计时也已经足够重要了。别的不说,没有正确的时间关系,你用来重建内核的工具make就不能正常运行了,因为
    发表于 11-23 17:51 12次下载
    <b class='flag-5'>linux</b><b class='flag-5'>内核</b>-时钟<b class='flag-5'>中断</b>

    Linux内核中整合对 Rust 的支持

    Linux Plumbers Conference 2022 大会上举行了一个 Rust 相关的小型会议,该会议讨论的大方向大致为:正在进行的使 Rust 成为一种合适的系统编程语言的工作,以及在主线 Linux 内核中整合对
    的头像 发表于 09-19 11:06 987次阅读

    Linux内核外部中断解析(下)

    上篇文章我们从内核工程师的角度剖析了内核的外部中断,这节我们从BSP工程师的角度剖析一下外部中断
    发表于 06-23 15:19 277次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>内核</b>外部<b class='flag-5'>中断</b>解析(下)

    Cortex-M 内核中断/异常系统、中断优先级/嵌套 详解

    Cortex-M 内核中断/异常系统、中断优先级/嵌套 详解
    的头像 发表于 09-27 15:29 844次阅读
    Cortex-M <b class='flag-5'>内核</b><b class='flag-5'>中断</b>/异常系统、<b class='flag-5'>中断</b>优先级/<b class='flag-5'>嵌套</b> 详解