NUMA:Non Uniform Memory Access Architecture,非统一内存访问架构; QOS:Quality of Service,服务质量,指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力, 是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。 NIC:Network Interface Card,网卡,网卡是局域网中最基本的部件之一,它是...
DPDK网卡驱动完全抛弃中断模式,基于轮询方式收包,避免了中断开销。 **NUMA ** dpdk 内存分配上通过 proc 提供的内存信息,使 CPU 核心尽量使用靠近其所在节点的内存,避免了跨 NUMA 节点远程访问内存的性能问题。 CPU 亲和性 dpdk 利用 CPU 的亲和性将一个线程或多个线程绑定到一个或多个 CPU 上,这样在线程执行...
DPDK 网卡驱动完全抛弃中断模式,基于轮询方式收包,避免了中断开销。 6.6 NUMA DPDK 内存分配上通过 proc 提供的内存信息,使 CPU 核心尽量使用靠近其所在节点的内存,避免了跨 NUMA 节点远程访问内存的性能问题。 6.7 CPU 亲和性 DPDK 利用 CPU 的亲和性将一个线程或多个线程绑定到一个或多个 CPU 上,这样在线程...
使用NUMA 亲和:避免 CPU 跨 NUMA 访问内存。 使用CPU 绑核:避免跨 CPU 的线程/进程切换。 使用大页内存:避免 TLB Cache Miss。 使用DPDK:DPDK 改造了传统的协议栈数据包转发路径,避免了频繁的硬件中断和无效数据拷贝。 DPDK DPDK(Data Plane Development Kit,数据平面开发套件)是一个开源的、快速处理数据平面数据...
从多核角度分析:要尽量减少线程的调度和切换,最好每个OS进程绑定一个核,每个核上数据结构都大致相同,在NUMA架构(非一致性访存体系结构,分多节点,每个节点多个CPU,内部共享一个内存控制器)下提高访存速度。 从内存角度分析:要尽量减少Cache miss,如果每个用户占用2k空间,10M的用户将使用20g内存,这么多并发连接一定会...
DPDK使用HugePage的思想就是让程序尽量独占内存防止内存换出,扩大页表提高Hash命中率;此外,DPDK在内存分配上还可通过proc提供的内存信息,使CPU尽量使用靠近其所在NUMA节点的内存,避免访问远程内存影响效率。 内核管理模块 Affinity是进程的一个属性,这个属性指明了进程调度器能够把这个进程调度到哪些CPU上。在Linux中,可利...
软件架构去中心化,尽量避免全局共享,带来全局竞争,失去横向扩展的能力。NUMA体系下不跨Node远程使用内存。 3.SIMD(Single Instruction Multiple Data) 从最早的mmx/sse到最新的avx2,SIMD的能力一直在增强。DPDK采用批量同时处理多个包,再用向量编程,一个周期内对所有包进行处理。比如,memcpy就使用SIMD来提高速度。
DPDK就是采用的这种方式,不过因为DPDK工作在应用层中,即使设置了CPU亲和性,操作系统还是会对这些核进行调度。因此,DPDK推荐通过设置孤立核的方式来进一步减少竞争。同时还需要考虑CPU特性和系统是否支持NUMA架构,如果支持的话,不同插槽上CPU的进程要避免访问远端内存,尽量访问本端内存。这里不做过多描述...
所以下一步的优化的方向只能从链路着手,在网卡层面利用RDMA技术,在CPU层面采用多核+线程亲和性+NUMA等特性,在TCP/IP层面采用DPDK+用户态协议栈技术,在工作线程层面采用shared nothing的无锁架构,在文件系统层面采用一些比较新的文件系统如XFS,有的NoSQL产品甚至bypass了文件系统,直接操作设备,存储方面采用NVME或者SSD。