博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第3章 Linux内核调试手段之三
阅读量:1980 次
发布时间:2019-04-27

本文共 1146 字,大约阅读时间需要 3 分钟。

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://lorpf.baihongyu.com/

你可能感兴趣的文章
vscode git
查看>>
基于MATLAB的二进制数字调制与解调信号的仿真——2FSK
查看>>
基于MATLAB的二进制数字调制与解调信号的仿真——2PSK
查看>>
基于MATLAB的模拟调制信号与解调的仿真——AM
查看>>
基于MATLAB的模拟调制信号与解调的仿真——DSB
查看>>
基于MATLAB的模拟调制信号与解调的仿真——SSB
查看>>
pyc文件
查看>>
POJ - 2299 Ultra-QuickSort 求逆序对数(树状数组离散化/归并排序)
查看>>
操作系统实验之生产者和消费者程序
查看>>
操作系统实验之猴子过桥问题的模拟程序
查看>>
POJ - 3067 Japan (树状数组 思维)
查看>>
POJ - 2352 Stars (树状数组 入门题)
查看>>
HDU - 1166 敌兵布阵 (树状数组模板题/线段树模板题)
查看>>
CodeForces - 761C Dasha and Password (思维 暴力)
查看>>
POJ - 2481 Cows (树状数组 入门题)
查看>>
ACM-ICPC 2018 焦作赛区网络预赛 I. Save the Room
查看>>
计蒜客ACM-ICPC 2018 焦作赛区网络预赛 L. Poor God Water(BM/矩阵快速幂)
查看>>
CodeForces - 987C Three displays (暴力/dp)
查看>>
计蒜客 NAIPC 2016 F. Mountain Scenes(dp)
查看>>
牛客国庆集训派对Day4——I 连通块计数(思维)
查看>>