第3章 Linux内核调试手段之三

640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png640?wx_fmt=png


640?wx_fmt=png


之前的内核调试,我觉得应该再加上下面的东西,只有好好把下面的几个问题研究透了,你可能才是一个真正的内核高手,或者说,你还不是一个高手,就是一个内核的普通工程师,这个是我和Z总聊天说的,我当时问他,你对Linux内核熟悉吗?Z总给我说了一句,还可以吧。然后,这些内容都是他给我总结的,这些内容,我觉得,没有经过多年的项目捶打,光靠看书看报,百度搜狗出来是没有用的,现在总结出来,希望给正在一线的同学们一些帮助和建议。


性能优化方式总结:


  • 多核多队列并行处理

  1. 将多个任务分发绑定在不同核上,减少任务调度切换上下文的开销,提升了cache命中率,并行处理提升性能

  2. 将不同任务间的资源分离,不要共享,比如每个核有单独的首发队列,避免竞争

  3. 负载均衡,设备端处理后的数据散列到不同的CPU收发队列中,均衡各core的负载


  • DMA

  1. 使用设备的DMA引擎,降低CPU占用率,提升性能

  2. 负载均衡,CPU给不同的DMA引擎收发队列散列差不多的数据,保证各个DMA引擎负载均衡


  • 中断聚合

  1. 保证时延的情况下将设备的多个中断汇聚成1个中断,在一次中断函数中处理,减少中断抢占带来的开销

  2. 中断中处理读写BD时,尽量按照cache lin对齐的方式,比如一个BD是16字节,cacheline是  64字节,那就一次处理4个BD,提升cache命中率

  3. 设置中断亲和性,是中断处理绑定在指定的core上,可以通过cat /proc/interrupts命令查看中断在各个CPU上的分布


  • 降低TLB miss

  1. 可以采用huge page,采用huge page的虚拟地址和物理地址的转换映射条目就比较少,而且TLB中有专门的条目保存huge page映射,保证在huge page的命中率,减少了进程页表的频繁读取,提升了性能


  • 减少内存拷贝

  1. 用户态驱动用mmap将物理地址映射到用户态虚拟地址,减少内核态与用户态数据的拷贝


  • 提升cache命中率

  1. 代码中少用静态变量和全局变量,因为他们保存在数据段和BSS段,不在栈内(栈使用频繁,一般都会cache命中),频繁的访问静态变量和全局变量就需要多次对cache换入换出,影响性能。


  • cache line

  1. 数据结构cache line对齐,因为CPU每次按照cache line大小从内存取数据,不对齐就需要取2次,对齐就只要取1次

  2. 多核共享的数据,尽量将只读数据和可写数据分开,因为某个core写数据后与其他core的cache中数据不一致了,就需要将数据刷入内存,其他core从内存读,才能保证数据一致性


  • 分支预测

  1. 代码中if else分支用likely/unlikely这样的宏,这样编译时就把likely分支和前面的代码靠近,提升指令cache的命中率同时减少跳转指令的开销。

640?wx_fmt=jpeg


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中希尔排序例题代码_【数据结构与算法】这或许是东半球分析十大排序算法最好的一篇文章...

码农有道 历史文章目录(请戳我)关于码农有道(请戳我)前言本文全长 14237 字,配有 70 张图片和动画,和你一起一步步看懂排序算法的运行过程。预计阅读时间 47 分钟,强烈建议先收藏然后通过电脑端进行阅读。No.1 冒泡排序冒泡排序无疑是最为出名…

星期四随笔

周二的晚上,发了一篇文章,题目是《要用什么态度去面对生活》,发文是凌晨1点,早上7点起来,用手机刷了一下,很多回复,其中几个回复有点偏激,感觉被刺痛了,毕竟是睡着的&…

根据大小分割大文本_基于深度学习的图像分割在高德地图的实践

一、前言图像分割(Image Segmentation)是计算机视觉领域中的一项重要基础技术,是图像理解中的重要一环。图像分割是将数字图像细分为多个图像子区域的过程,通过简化或改变图像的表示形式,让图像能够更加容易被理解。更简单地说,图…

别人不让你发传单怎么办?

人生在世难免遇到几个傻逼,我今天没有上班,去外面兼职发了一天的传单,也许你们没有过发传单的经历,当然了,我也不是想为了增加人生阅历去发传单,单纯就是今天没什么事情,刚刚好公司停电&#xf…

模块化加载_谈谈双亲委派模型的第四次破坏-模块化

前言JDK9引入了Java模块化系统(Java Platform Moudle System)来实现可配置的封装隔离机制,同时JVM对类加载的架构也做出了调整,也就是双亲委派模型的第四次破坏。前三次破坏分别是:双亲委派模型推出之前,SPI机制,以及O…

第4章 原子操作

有一件事情,你不得不承认,C语言相对汇编来说是高级语言,为什么,因为高级语言会形成封装,比如,我需要把一个变量A,对于CPU来说,先从内存里把这个变量读进运算寄存器,然后运…

龙芯下中标系统C语言查找设备号_龙芯:主控进驻国产激光打印机并适配麒麟OS...

导读:龙芯中科宣布,龙芯1C0300B作为主控芯片,已经批量用于天津光电出品的多款激光打印机中,在打印扫描、通信控制、协议解析方面发挥着重要的作用。图:龙芯1C0300B 主控芯片龙芯1C系列是基于GS232处理器核的高性价比单…

随笔日记

最近加班比较多,昨晚上又坐了最后一班地铁回家,回到家已经是一点了,在路上遇到一个美团外卖的小哥,小哥跟我说,嗨,帅哥,我想借你的头盔用一下,你们可以想象一下,在晚上12…

C#的命名空间

对于大型组织而言,如果涉及到产品线,项目,公共平台很多,如何通过命名空间将所有代码有效的组织起来。就一个目的,用的时候能够很容易的找到。 对于命名空间在大型项目中,必须组织好,一般命名空间…

今日头条关键词排名怎么搜索_公众号搜索关键词排名、公众号怎么排名靠前

真正的互联网老鸟其实都知道,不管在线上推广什么产品都好,其实都没有所谓的难度,获取流量方式其实就是简单的一批,哪里有怎么玄乎,不管以后遇到什么问题,除了首先需要知道的核心关键词,无非就是…

​CPU单挑到群架发展史

CPU 又称中央处理器,搞软件开发的兄弟已经耳熟能详了,CPU 的发展史最基本的矛盾就是软件性能需求的快速提升与 CPU 技术工艺性能提升发展相对缓慢之间的矛盾。摩尔定律也是基于此背景,将硬件性能的有限提升给软件开发者一个预期,告…

JDK、JRE、JVM三者间的关系

JDK(Java Development Kit)是针对Java开发员的产品,是整个Java的核心,包括了Java运行环境JRE、Java工具和Java基础类库。Java Runtime Environment(JRE)是运行JAVA程序所必须的环境的集合,包含J…

典型方法_裴礼文老师编数学分析中的典型问题与方法练习参考答案的说明

裴礼文老师编《数学分析中的典型问题与方法》练习参考答案该书共计7章36节1036页,各章由知识点总结、例题和练习组成,知识点基本按照传统《数学分析》教材先后顺序跟进。例题和练习出自《数学分析》经典习题和近年《数学分析》考研试题,极具代…

第4章 原子操作 第二节

-------------------------------------------------------------上一章节说的原子操作,有同学在下面留言说,原子操作不是万能的吧?确实是,原子操作不是万能的,体系结构在完成原子操作部分也是花费了很大的心思&#x…

表格字体缩小 php_如何快速找出两个Excel表格不同的地方?

上一篇文章介绍了如何快速找出两个word文档不同的地方,这篇文章来说说如何快速找出两个Excel表格不同的地方,这里说的两个Excel表格,可以是同一个工作簿的不同sheet,也可以是两个不同的Excel文件,如下图:黄…

周一地铁遐想

连续两周的早上8点出门到晚上12点到家,今天中午睡不着,下午调试代码的时候感觉脑子眼睛有点迷糊,旁晚吃饭的时候,有几个同学还在微信私聊我问题,因为都是加了我的知识星球的同学,咨询的是个人的规划还有以后…

再说鸿蒙

上一篇文章已经被骂狗血了,我一直想找个时间好好澄清一些东西,正好今天晚上睡不着,现在是凌晨4点,我觉得应该再发下东西,当然了,还是以我特有的尿性,没有摆事实讲道理,就是我以为。1…

shell--基本语法

继续运算符模块。 part1 算术运算符 - * / % part2 关系操作 与(&#xff08;&#xff09;)连用 < > < > ! && || 注意&#xff1a;一个等号是赋值操作&#xff0c;两个等号是判断 test命令相关&#xff0c;[]可以达到一样的效果 part3 赋值运算符 * /…

锻炼身体

这周还没有发技术文章&#xff0c;着实是因为忙晕了头&#xff0c;不过不管有多忙&#xff0c;该吃饭的时候还是吃饭&#xff0c;该打球的时候还是打球&#xff0c;打球不是为了赚钱&#xff0c;但是是为了更好的赚钱&#xff0c;很多时候忽略了一些小事情&#xff0c;往往这些…

你今天忘本了吗?

我从小在农村长大&#xff0c;我们村前面有一条很长的河&#xff0c;我家在河的后面的那个小山坡上&#xff0c;背靠着大山&#xff0c;很多大师来我们家&#xff0c;都说我家这里是风水宝地&#xff0c;幸运的是&#xff0c;我就在这块风水宝地里长大了。后来&#xff0c;我很…