Performance Analysis of Packet Receiving Process in Linux Kernel
Xiaobo Ji, Zeng Fan, Min Zhang · Journal of Convergence Information Technology · 2012
Because of improved high-bandwidth, contemporary network cards can move a lot of packets to the point that it is hard for a single modern CPU to keep up. Moreover, in recent years, CPU speed almost has stopped improving, but the number of CPU cores is increasing now. In this case, the Linux kernel must be capable of distributing the work across multiple CPUs in order to improve throughput for high-speed network systems. Two new features contributed by Google have been introduced into the Linux kernel 2.6.35 in order to spread the load of network handling across multiple CPUs, which are receive packet steering and receive flow steering, respectively. In this paper, the packet receiving process in Linux kernel is analyzed only including physical layer and data link layer. We also study the receive packet steering and receive flow steering introduced in Linux kernel 2.6.35. Finally, we performed various experiments and proved the superiority of receive packet steering and receive flow steering.