关于裸奔我有一个疑问,在多核处理器中,裸奔如何发挥多核的威力?难道自己做一套SMP的运行环境(spinlock, 线程切换,per-cpu data),这个不是不可以做,但是是不是代价有点高? 另外,比较成熟的OS都能提供比较好的profiling工具,对于性能优化意义很大。如果裸奔,又如何能够方便的profiling and tuning?
To 首席:
你经常教导说河蟹党员从来不隐瞒自己的观点,请谈谈Application Aware Os
anonymous 于
2011-01-27 7:32 下午
@Hui Liu
首席只崇拜邓稼先,又不是霍元甲.
pp 于
2011-01-27 8:12 下午
裸奔怎么定义的?是只干很简单的事,没有OS?
沙加 于
2011-01-27 10:37 下午
To Hui Liu:
现在多核用的比较多的一种场景是整体的AMP,局部的SMP。一般会在部分核部署成熟的OS,但在对数据传输速率要求较高的核上,还是会部署一些定制的bare metal OS。裸奔的好处是,系统比较简单,定制化高,相比成熟的商用OS更能发挥性能上的优势。但是,从长远来看,我还是很认同首席的观点,即LINUX 一统。毕竟如你所说,裸跑相比于成熟的OS,在调测工具上的劣势是很明显的。裸跑OS基本来说就是自己实现一些Memory,Timer,mutex,中断管理,维测等功能。整个系统就是一个While的循环。目前阶段就我们的经验值来看,Linux在性能上跟裸跑相比还是很大。这也是我咨询首席ZOL的细节原因。如果Linux的性能真能达到裸跑的9成,且定制开发工作量不大,那真的没裸跑系统啥事了。
我为什么放一个计算复杂性的图作为logo,想表达的意思很清晰:系统设计没有最优,只有次优。世界上本不存在单纯的平台,只有为了某个特定应用的解决方案。沉淀下来的,然后抽象出来的就是平台。
RTC对网络系统是一把双刃的刀。关键是看工程师的理解。用的不好,系统很容易starving其他逻辑。在RTC模型下,能看见人性的贪婪。没人愿意轻易
yield CPU。
首席总结的精辟。。。在multithread下这个问题尤甚。。。
弯曲的评论是精华,首席又一次证明了这个观点。RTC我个人认为是实时系统的一个要求,如果是可抢占,调度的系统,执行时间没办法保障。在网络系统里面,资源基本上需要独占,但有时候又有共享的需求,所以在CPU调度,内存分配方面,有复杂化的趋势,这个趋势会让工程师的日子越来越难过。
The philosphy being embedded onto 弯曲评论 from my humble understanding are of the following two:
--自由软件人文精神:弯曲的本质
--大教堂和集市原理:评论的力量
合之为:弯曲评论。
学习 …
编者注:SMP vs AMP。一切都是折中。最重要的是底层是一个单一的OS环境。单独把某些核上运行一个bare mental的 RTOS 的年代基本上过去。目前看不出来有什么问题不能通过类似Zeor Overhead Linux/Freebsd不能解决的问题。如果在性能损失10%的情况或(和)上限的情况下,系统设计应该不要introduce proprietary OS。弊大于利 if otherwise。另外,感觉业务部署方面,还应该是AMP的模型,但底层OS是一个SMP的结构。
====================================
关于上述结论,想跟首席请教两个问题。
首先是关于zero overhead Linux的问题。要定制一个Zero overhead Linux系统,需要做哪几方面的工作?我个人猜测,大概可以包含:简化调度算法,锁定TLB,硬件核与进程绑定。请问理解是否正确,还有其他需要做的工作吗?比如关于驱动,是使用Linux的用户态驱动吗?如果要深入定制一个Zero overhead的Linux系统,个人感觉工作量好像不比引入一个Bare metal操作系统来得小。当然,BareMetal在工具链等方面确实很弱,这是其最大的缺陷。
第二个问题是关于性能的,首席提到性能损耗上限是10%。个人感觉如果性能真能做到这个水平,那确实用Linux一统是更好的OS方案。不过凭以前的经验数据,好像基本上只能达到裸跑性能的一半左右。能否详细告知10%上限判断的依据。
OS方面其实现在没啥好做的。Zero Overhead Linux其实也都是满天飞。没啥新颖的。
关键的问题是:Application Aware OS。
我有许多观点。但我今天不说。。。
To 沙加:
关于裸奔我有一个疑问,在多核处理器中,裸奔如何发挥多核的威力?难道自己做一套SMP的运行环境(spinlock, 线程切换,per-cpu data),这个不是不可以做,但是是不是代价有点高? 另外,比较成熟的OS都能提供比较好的profiling工具,对于性能优化意义很大。如果裸奔,又如何能够方便的profiling and tuning?
To 首席:
你经常教导说河蟹党员从来不隐瞒自己的观点,请谈谈Application Aware Os
@Hui Liu
首席只崇拜邓稼先,又不是霍元甲.
裸奔怎么定义的?是只干很简单的事,没有OS?
To Hui Liu:
现在多核用的比较多的一种场景是整体的AMP,局部的SMP。一般会在部分核部署成熟的OS,但在对数据传输速率要求较高的核上,还是会部署一些定制的bare metal OS。裸奔的好处是,系统比较简单,定制化高,相比成熟的商用OS更能发挥性能上的优势。但是,从长远来看,我还是很认同首席的观点,即LINUX 一统。毕竟如你所说,裸跑相比于成熟的OS,在调测工具上的劣势是很明显的。裸跑OS基本来说就是自己实现一些Memory,Timer,mutex,中断管理,维测等功能。整个系统就是一个While的循环。目前阶段就我们的经验值来看,Linux在性能上跟裸跑相比还是很大。这也是我咨询首席ZOL的细节原因。如果Linux的性能真能达到裸跑的9成,且定制开发工作量不大,那真的没裸跑系统啥事了。
很精辟,很多信息一下还无法彻底吸收,需要多看看,很受教.
另外探讨一个小问题,http 1.1 tunnel
mode, 这个东东是业界通用的表述吗,我一般都称之为keepalive方式?
To 沙加:
也就是说在某个特定的单核上裸奔,而不是在多核上裸奔,那难度就小了很多。
用单核裸奔来提高性能或者用多核+SMP os来提高性能 应该还是后者更靠谱一些。关键代码的伸缩性要好,要发挥多核的威力。
首席的点评是整个文章的点睛之笔呀,理解不了首席话是很难设计出优秀产品出来的,呵呵。
这个同学有希望。。。。。。