飞凌嵌入式今年6月推出的——FET1043A-C核心板,采用NXP公司的QorIQ® LS1043A处理器设计,拥有四颗ARMv8-A架构的Cortex-A53核,主频1.6G,低功耗,高能效。四通道高达10GB的SerDes包含多种灵活配置,在飞凌设计的配套底板中最大程度上发挥了QorIQ®LS1043A 处理器网络性能,采用一个万兆,六个千兆的设计,配合处理器内部的DPAA1加速引擎,再加上2GB大容量DDR4内存简直就是网络性能怪兽。
硬件如此的优秀,那么传统的Linux内核还是否与其门当户对?答案是否定的。
原因有以下几个方面:
❶ 中断处理。当网络中大量数据包到来时,会产生频繁的硬件中断请求,这些硬件中断可以打断之前较低优先级的软中断或者系统调用的执行过程,如果这种打断频繁的话,将会产生较高的性能开销。
❷ 内存拷贝。正常情况下,一个网络数据包从网卡到应用程序需要经过如下的过程:数据从网卡通过DMA等方式传到内核开辟的缓冲区,然后从内核空间拷贝到用户态空间,在Linux内核协议栈中,这个耗时操作甚至占到了数据包整个处理流程的57.1%。
❸ 上下文切换。频繁到达的硬件中断和软中断都可能随时抢占系统调用的运行,这会产生大量的上下文切换开销。另外,在基于多线程的服务器设计框架中,线程间的调度也会产生频繁的上下文切换开销,同样,锁竞争的耗能也是一个非常严重的问题。
❹ 局部性失效。如今主流的处理器都是多个核心的,这意味着一个数据包的处理可能跨多个CPU 核