Course Outline
- Sockets
- Creating datagram sockets
- Receiving and sending data
- Creating and accepting TCP connections
- Closing sockets
- Handling errors
- Handling more than one client in a simple way
- Prefork model, as found in Apache
- Forking a new process per client
- Cleaning up after finished processes
- Threads
- Inetd, systemd units
- Waiting for data
- Blocking sockets
- Non-blocking sockets and select
- Select as a way to wait for "any of these sockets"
- Organizing reads and writes
- Dealing with short reads and writes
- Reading up to a delimiter
- Pipelined requests
- Application-level buffers
- Event-driven architecture
- Using select for multiplexing all client connections in one thread
- State machines
- Callback hell
- Event libraries
- "Green" threads
- Problem of 10000 connections
- Problems with prefork model and select-based loop
- poll as an alternative to select
- Realtime signals and why you shouldn't use them
- Epoll (linux) and kqueue (BSD)
- Why and when epoll and kqueue are faster than poll/select
- Timeouts and timers
- SIGALARM
- Timeout as a select argument
- A simple case of all-equal timeouts
- Priority queue as an abstract data stracture
- Binary heap as a priority queue implementation
- Timer wheel
- timerfd
- Integration with the operating system
- Traditional daemons
- Systemd socket activation
- Logging
- Handling signals
- Performance and scalability optimizations
- Choosing the right architecture
- Setting socket options
Requirements
- C language
- Linux user skills
Testimonials
The subject matter was very interesting, and Reda is truly an expert. Going through the labs was fun, and really did help connect the dots from the lectures.
Broadcom
Virtualization with QEMU, KVM and Libvirt Course
I really enjoyed the background on the technologies and how different virtualization entities played together and intermixed. I also really appreciated the DevOps discussion, though it went very fast compared with the rest of the material. That said, not many attendees were interested in the DevOps portion.
Broadcom, Inc
Virtualization with QEMU, KVM and Libvirt Course
Wojciech and NobleProg focused the itinerary to feet my needs.
christopher Connelly - NEETRAC / GA TECH
UNIX/Linux Shell Scripting Course
The personal approach and the practical way of going trough the seen theory afterwards.
Jelle Vandekerckhove - Roularta Media Group
Linux Administration Fundamentals Course
Engaging exercises, perfect pace
Hannah Clough - Egress Software Technologies
Linux System Administration Course
Executing commands myself and learning what some of the Linux 'code' actually means.
Paul Tosseano - Egress Software Technologies
Linux System Administration Course
Covered Linux basics which was very helpful to understand the rest of the course Good pace and good communication
Richard Copley - Egress Software Technologies
Linux System Administration Course
Go tooling
- SCALITY SA
Go for Systems Programming Course
The extra informations not in the official docs