本文共 571 字,大约阅读时间需要 1 分钟。
网路的核心是报文的转发过程,linux网路是通过内核协议栈进行转发的,报文控制平面和数据转发平面没有分离,不适合处理大规模网络数据包,因为linux分为内核区和用户区,报文先进入内核区然后拷贝到用户区,供给上层应用程序处理。并且为了全面的支持用户空间的各个功能,协议栈中嵌入了大量用于对接的接口。如果能让应用程序直接接管网络数据包处理、内存管理以及CPU调度,那么性能可以得到一个质的提升。
如今的处理器都是多核,而且内存也越来越大,可以提高多核和大内存的扩展性,减少CPU多核之间任务的切换,内存cache miss,因为内存的访问速度永远也赶不上cache和cpu的频率,为了能让性能平行扩展,最好是少访问。
要提高网路报文转发,从如下几个方面着手:
1.控制层留给Linux做,其它数据层全部由应用程序来处理。
2.减少系统调度、系统调用、系统中断,上下文切换等 3.摒弃Linux内核协议栈,将数据包传输到用户空间定制协议栈 4.使用多核编程技术替代多线程,将OS绑在指定核上运行 5.针对SMP系统,使CPU尽量使用所在NUMA系统节点的内存,减少内存刷写 6.使用大页面,减少访问 7.采用无锁技术解竞争转载于:https://blog.51cto.com/cvgcv6666/2047354