Linux SMP 优化设计:控制面+数据面

发布于 2022-10-15 05:33:49 字数 798 浏览 21 评论 0

linux smp 应用极力避免的缺点:
1,频繁的调度,时钟中断造成的上下文切换
2,数据的内核用户空间拷贝
3,异常的发生,tlb缺页异常
4,进程迁移造成cache等性能波动

如何设计优化避免这些缺点呢?
  1,数据面核关闭所有中断,除了mailbox中断(控制面通知数据面用)。只跑一个内核线程。 关闭时钟后并不会带来系统性的错误。但要调整rcu lock。
  2,数据面核值跑在内核态线程,不用担心内存拷贝问题
  3,内核中使用非映射段(mips:kseg0),其他体系结构内核对应自己的设计。可以避免tlb缺页异常。
  4,线程绑定,控制面线程都cpu_allows 设为控制面的核,init,kthread线程都只和控制面核亲和。 数据面,跑一个实时线程即可。新增控制面通知数据面接口。其他修改,此处省略。

实际优化设计运行情况: 在cavium mips 多核上,成功实现设计,性能和cavium极力推荐的SE(一个循环)一样,因为并无区别。但SMP优势又很明显: 数据面核可以有效的利用现有linux内核的丰富代码,方便的核间共享数据(同一地址空间),良好的可移植性(linux代码风格,无需另搞一套)。

http://my.chinaunix.net/space.ph ... =blog&id=341685

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(9

无法回应 2022-10-22 05:33:49

这段时间也在考虑这个问题(网络转发层面)。
想法是用一个CPU处理通用功能,其它CPU尽量处理软中断。目前这种架构,我觉得SMP下没有必要每个CPU要进行一大堆的调度工作。

数理化全能战士 2022-10-22 05:33:49

回复 2# 独孤九贱
个人觉得九贱兄的方法不错

度的依靠╰つ 2022-10-22 05:33:49

本人觉得看你性能考虑程度,要是转发是关键那么,我感觉就是要用SE模式
SMP过多的系统开销是满足不了性能的。

本人只用过SE的,因为真的不用考虑系统开销,关键是考虑锁,避免锁的设计能拉升多核的强劲性能。

LZ能否多阐述一下SMP下的实现呢,大家学习一下

━╋う一瞬間旳綻放 2022-10-22 05:33:49

关闭时钟中断,和其他中断后,就没有进程调度了,兄台。 也就是一直轮询,和se没两样。但可以用的代码全面,se里面没有协议栈,其他都没有,可移植性也差,se内存管理也差。

挽梦忆笙歌 2022-10-22 05:33:49

LZ  是恒杨的陈鹏?

苯莒 2022-10-22 05:33:49

不是。 我是吐蕃

南…巷孤猫 2022-10-22 05:33:49

只是发现你们搞的思路和平台惊人的相似

提笔落墨 2022-10-22 05:33:49

恒杨 是什么公司 ?

迷爱 2022-10-22 05:33:49

1,数据面核关闭所有中断,除了mailbox中断(控制面通知数据面用)。只跑一个内核线程。 关闭时钟后并不会带来系统性的错误。但要调整rcu lock。
对rcu_lock的调整是否会影响控制平面核的处理呢?
3,内核中使用非映射段(mips:kseg0),其他体系结构内核对应自己的设计。可以避免tlb缺页异常。
这个是针对数据平面和控制平面共享的数据而言吧!

此外,当前的这种优化方式应该也和Cavium的SE方式优化相同了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文