The objective of this research is to assess the system performance overheads of user-space sockets (in this case UDP sockets) vs Message queues. So that this can be used as a basis to access a server/device potential as a Linux based network appliance (can be a Firewall device, VPN, WAN Optimization, and so on). Kindly watch my video below in order to participate in this research.
Download this episode my entire sample code which I hosted in my GitHub Repo.
Here is my next follow-up video where I did more extensive benchmarks with respect to each specific time interval (in this case every second) in three different devices an Intel 6-core desktop, an Intel dual-core Dell laptop and an Intel quad-core HP laptop. Here are the detailed single instance of UDP socket client-server performance benchmarks:
Device/CPU/Server | Bandwidth |
Intel Core i7-5820K desktop | 32 Gbps |
Intel Core i7-4700MQ – HP Envy 15-J111TX Laptop | 30 Gbps – 20 Gbps (fluctuating) |
Intel Core i7-4500U – Dell 15R 5537 Laptop | 28 Gbps |
Download this episode my entire sample code which I hosted in my GitHub Repo.
Here is my final conclusion/follow-up video where I compared the Episode-2 benchmarking code with new Message Queues benchmarking code. Unlike my other previous episode(s), in this case I tested with single Tx (UDP-Client/ MessageQ-Send) and Rx (UDP-Server/ MessageQ-Receive) and benchmarked my results. Here is the architecture diagram which represents the overall idea/objective of the same.
I tested the same with my Intel Core i7-5820K desktop, and found UDP Socket framework is performing around 32Gbps (with MAXBUF of 10240 per transmit buffer size) while the Message Queue framework is performing around 56Gbps (with MAXBUF of 8024 per transmit buffer size). With this we can visualize live the overall % of socket overhead vs a much simpler IPC like Message Queue in a single host/server/device. Here is my live detailed demo video of the same.
Download this episode my entire sample code which I hosted in my GitHub Repo.
I also conduct sessions/classes on Systems and Network Software Programming, Linux Kernel Programming and Architecture. If you are interested, click HERE for more details.
If you have any queries or anything to discuss further on Linux Kernel Programming and writing Kernel modules kindly feel free to contact me.