CASACURSOSESTUDANTESDOAÇÕESVÍDEOSEVENTOSTUTORIAISLINKSNOTÍCIACONTATO


TUTORIALS 》 Research Socket overhead in Linux vs Message Queues and benchmarking

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 kernel module sample code, make file, clean script HERE.

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/ServerBandwidth
Intel Core i7-5820K desktop32 Gbps
Intel Core i7-4700MQ - HP Envy 15-J111TX Laptop30 Gbps - 20 Gbps (fluctuating)
Intel Core i7-4500U - Dell 15R 5537 Laptop28 Gbps

Download this episode my entire kernel module sample code, make file, clean script HERE.

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 kernel module sample code, make file, clean script HERE.


Featured Video:



Suggested Topics:


☆ Tutorials :: Arduino UNO Projects ↗


☆ Tutorials :: Network Software Development ↗


☆ Tutorials :: Research and Projects ↗


☆ Tutorials :: Linux (user-space), Systems Architecture ↗


☆ Tutorials :: Linux Kernel Software Development ↗


☆ Tutorials :: Linux Kernel Internals (PDFs) - by Ramin Farajpour ↗


☆ Tutorials :: Software Development (Programming) Tools ↗


☆ Tutorials :: Embedded Projects ↗

Join The Linux Channel :: Facebook Group ↗

Visit The Linux Channel :: on Youtube ↗


Join a course:

💎 Linux, Kernel, Networking and Device Drivers: PDF Brochure
💎 PhD or equivalent (or Post Doctoral) looking for assistance: Details
💎 ... or unlimited life-time mentorship: Details


💗 Help shape the future: Sponsor/Donate


Tópicos recomendados:
Featured Video:
Assista no Youtube - [860//0] 0x18a Network MTU and Path MTU Discovery PMTUD | WAN and Internet Performance Optimization - Part1 ↗

Roadmap - How to become Linux Kernel Developer - Device Drivers Programmer and a Systems Software Expert ↗
Friday' 10-Jul-2020
Many viewers and even sometimes my students ask me how I can become a kernel programmer or just device driver developer and so on. So I shot this video (and an add-on video) where I summarized steps and a roadmap to become a full-fledged Linux Kernel Developer.

Compiling a C Compiler with a C Compilter | Compile gcc with gcc ↗
Friday' 10-Jul-2020
The fundamental aspect of a programming language compiler is to translate code written from language to other. But most commonly compilers will compile code written in high-level human friendly language such as C, C++, Java, etc. to native CPU architecture specific (machine understandable) binary code which is nothing but sequence of CPU instructions. Hence if we see that way we should able to compile gcc Compiler source code with a gcc Compiler binary.

AT&T Archives: The UNIX Operating System ↗
Friday' 10-Jul-2020

CEO, CTO Talk ↗
Friday' 10-Jul-2020

Arduino UNO - RO Water Purifier Controller ↗
Friday' 10-Jul-2020
Here is a Youtube VLOG of my DIY RO Water Purifier Controller done via Arduino UNO. I want the Arduino UNO to control the RO pump, so that it pumps for a specific duration and stops automatically. This is done via Opto-isolated 4 Channel 5V 10A Relay Board meant for Arduino UNO, Raspberry Pi or similar SoC boards which offers GPIO pins. To this relay I have connected the RO water purifier booster pump which works at 24V DC connected via 220V AC to 24V DC power supply adaptar. I have also connected a small active 5V buzzer to notify the progress and completion as it fills the tank/canister.

CYRIL INGÉNIERIE - CoreFreq Linux CPU monitoring software ↗
Friday' 10-Jul-2020

Nmap Network Scanning ↗
Friday' 10-Jul-2020

Linux Kernel Network Programming - Transport Layer L4 TCP/UDP Registration - Protocol APIs ↗
Friday' 10-Jul-2020

mmap() munmap() - map or unmap files or devices into memory ↗
Friday' 10-Jul-2020

SNMP and MIB Browsers ↗
Friday' 10-Jul-2020


Trending Video:
Assista no Youtube - [408//0] 0x188 are you a techie 35+ or older ? | Midlife Crisis | Men in Tech | The Linux Channel ↗

Quagga Routing Suite - OSPF, RIP, RIPng BGP4 | GNU Zebra fork | ZebOS ↗
Friday' 10-Jul-2020
GNU Zebra is one of the oldest open-source Dynamic Routing Protocol suite stack developed by Kunihiro Ishiguro. Zebra supports features such as RIPv1/RIPv2 for IPv4 and RIPng for IPv6, OSPFv2 and OSPFv3, BGPv4+ and so on. Zebra is an active project for many years. After many years of active support Zebra is discontinued, and sometime down the lane a new fork is created from Zebra called Quagga which is now maintained by a separate independent open-source community. Quagga is a routing software suite, providing implementations of OSPFv2, OSPFv3, RIP v1 and v2, RIPng and BGP-4 for Unix platforms, particularly FreeBSD, Linux, Solaris and NetBSD. Quagga is a fork of GNU Zebra which was developed by Kunihiro Ishiguro. The Quagga architecture consists of a core daemon, zebra, which acts as an abstraction layer to the underlying Unix kernel and presents the Zserv API over a Unix or TCP stream to Quagga clients.



Recommended Video:
Assista no Youtube - [9990//0] Linux Kernel Networking Sub-system - episode3 net/core, net/sched, net/socket.c APIs ↗