Chinaunix首页 | 论坛 | 博客
  • 博客访问: 94693
  • 博文数量: 19
  • 博客积分: 1471
  • 博客等级: 上尉
  • 技术积分: 272
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 19:48
文章分类

全部博文(19)

文章存档

2011年(2)

2010年(17)

分类: LINUX

2011-05-29 18:24:04


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代码风格,无需另搞一套)。

                                                                   msn:  mewmaker@163.com



阅读(3021) | 评论(1) | 转发(0) |
0

上一篇:workqueue 分析

下一篇:没有了

给主人留下些什么吧!~~

friend12682011-06-13 11:00:13

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

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