第二部分 AccCore多核多线程调度技术的内幕
内幕一——网络包无锁入栈技术
操作系统中为了保证关键数据结构读写的一致性,引入了锁的机制,但同时也带来了额外的系统开销,降低了系统的处理能力,延长了系统的处理时间。因此,怎样才能在保证系统正常运行的同时尽可能的减少甚至消除锁机制,一直是业界的一个难题。
我们的解决对策:
我们引入了网络包无锁入栈技术,根据系统中核的个数以及网卡的个数,构建多个(核-网卡)入栈环及出栈环。
对于每个入栈环而言,读者及写者是唯一确定的协议栈处理线程及网卡服务线程,对于每个出栈环而言,读者及写者是唯一确定的网卡服务线程及协议栈处理线程。
通过这种数据环的使用消除了多个协议栈处理线程和网卡服务线程对出入栈数据队列读写的潜在冲突,从而避免了采用锁机制,避免了这一部分的性能开销。
内幕二——基于数据挖掘的核态线程分派技术
在基于网路数据包端口或ip地址的线程分派技术中,容易存在某些端口或ip地址对应的数据处理任务复杂程度随时间变化剧烈,造成其对应的核负载分配不均衡,进而影响了系统的并发性能。
基于数据挖掘的核态线程分派技术,通过对应用场景的行为历史进行归纳分析,动态的把数据处理任务分派到最适合的协议栈处理线程上,达到了处理任务在多核之间的实时公平分配。
当前某些高性能处理器的核上包含多个指令解码器、多个整数执行单元、多个地址生成单元和多个浮点运算单元。
AccCore多核多线程调技术对内核代码进行了并行化组织,提高了运算的流水化。
多核产品处理器在运行过程中,处理器与主存之间的数据交换的速度瓶颈极大地影响了性能的进一步提升。处理器缓存(Cache Memory)位于处理器与主存之间,它的容量比主存小,但数据交换速率却很快。
AccCore多核多线程调技术动态分析内核高速协议栈线程之间的数据共享关系,把数据共享程度高的线程归并到一个线程调度组,属于同一线程调度组的线程在一个核上运行,减少了缓存失效导致的主存读写,从而提高了板卡的整体性能。
内幕三——端对端的反馈技术
多核产品的应用处理由运行在多个处理器核上的核心态线程组成。线程的优先级决定了该线程在系统的某个核上得到服务的实时性及服务时间长短,传统操作系统中线程的优先级通常按照全系统统一的策略进行调整。研究表明这种方式未区分具体应用负荷,容易造成实时性要求高的应用负载处理被延迟,而另一方面很多实时性要求不高的处理过程却过多过快地被服务,从总体上来看,该方式无法动态实时的均匀调度系统核心态线程,从而降低了系统的并发服务能力。
AccCore技术采用端对端的反馈技术,在服务线程中插入统计钩子点,操作系统线程调度模块分析从各个服务线程汇总的应用相关统计信息,利用线程优先级计算公式为每个服务线程计算出当前最适合的优先级,实现了核心态线程优先级与应用服务实时性需求的一致,动态实时的均匀调度系统核心态线程,进一步提升了系统的并发处理能力。
内幕四——超线程技术
区别于多核技术,超线程技术利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,减少了CPU的闲置时间,提高CPU的运行效率。
AccCore多核多线程调技术把对网络包处理任务进行动态细分,把数据共享程度高,且数据依赖性小的两个线程归并到同一超线程组,由同一处理器同时调度,充分发挥超线程技术的优势。
总结:
目前国内外已有多家厂商突破多核调度技术的难关,我们推出的AccCore多核多线程调度技术,最大化的利用了多核的运算处理能力,有效提升了多核产品的处理能力,使得产品具备高性能﹑高处理能力,实现了用户高效安全的诉求。
(责任编辑:)