DPDK

网路的核心是报文的转发过程,linux网路是经过内核协议栈进行转发的,报文控制平面和数据转发平面没有分离,不适合处理大规模网络数据包,由于linux分为内核区和用户区,报文先进入内核区而后拷贝到用户区,供给上层应用程序处理。而且为了全面的支持用户空间的各个功能,协议栈中嵌入了大量用于对接的接口。若是能让应用程序直接接管网络数据包处理、内存管理以及CPU调度,那么性能能够获得一个质的提高。linux

  现在的处理器都是多核,并且内存也愈来愈大,能够提升多核和大内存的扩展性,减小CPU多核之间任务的切换,内存cache miss,由于内存的访问速度永远也赶不上cache和cpu的频率,为了能让性能平行扩展,最好是少访问。编程

  要提升网路报文转发,从以下几个方面着手:网络

  1.控制层留给Linux作,其它数据层所有由应用程序来处理。
  2.减小系统调度、系统调用、系统中断,上下文切换等
  3.摒弃Linux内核协议栈,将数据包传输到用户空间定制协议栈
  4.使用多核编程技术替代多线程,将OS绑在指定核上运行
  5.针对SMP系统,使CPU尽可能使用所在NUMA系统节点的内存,减小内存刷写
  6.使用大页面,减小访问
  7.采用无锁技术解竞争多线程

相关文章
相关标签/搜索