Performance & Advanced
Kernel tuning, cgroups, profiling, virtualization, RAID and filesystems.
Set Up an Encrypted ZFS Pool
Configure native ZFS encryption with aes-256-gcm, manage keys and boot unlock, rotate keys safely, and replicate datasets encrypted with zfs send -w.
Write Your First Kernel Module
Build, load, and debug a Linux kernel module from scratch: hello-world source, kbuild Makefile, insmod/modprobe workflow, and dmesg debugging on modern distros.
Use GPIO Pins on a Raspberry Pi
Control Raspberry Pi GPIO pins using libgpiod — the modern replacement for deprecated sysfs. Covers CLI tools, Python, and C with real working examples.
The Linux Page Cache Explained
Deep dive into Linux page cache mechanics: how reads and writes flow through cache, dirty page writeback, fsync durability guarantees, and vm.dirty_* sysctl tuning.
PostgreSQL Performance Tuning
Tune PostgreSQL 15/16 with pg_stat_statements for query visibility, smarter autovacuum thresholds, targeted indexing, and parallel query execution.
Linux Memory: Anonymous, File-backed, zswap
Deep dive into Linux anonymous vs file-backed pages, reclaim mechanics, vm.swappiness, zswap compression tuning, and zram setup for maximum memory efficiency.
Linux Virtual Memory Tuning
Tune Linux virtual memory for production: control overcommit_memory, swappiness, min_free_kbytes, and use drop_caches safely to reduce OOM kills and swap pressure.
Linux Namespaces Deep Dive
A hands-on guide to all seven Linux namespace types — mnt, pid, net, user, uts, ipc, cgroup — plus unshare and nsenter with concrete shell examples.
The Linux CPU Scheduler Explained
Deep dive into the Linux CPU scheduler: how CFS, nice values, real-time policies, multi-queue SMP, and the new sched_ext BPF framework work and how to tune them.
Install PyTorch with GPU Support
Install PyTorch with NVIDIA CUDA or AMD ROCm GPU support inside a Python venv, then verify torch.cuda.is_available() returns True on Linux.
Install and Use llama.cpp
Build llama.cpp from source on Linux, enable CUDA/ROCm GPU offloading, load GGUF models, and serve an OpenAI-compatible local inference API.
Build a .rpm Package
Learn to build .rpm packages step by step: set up the rpmbuild tree, write a spec file with BuildRequires, and produce clean builds with mock.
Build an Arch AUR Package (PKGBUILD)
Learn to write an Arch Linux PKGBUILD from scratch, build it with makepkg, lint it with namcap, and publish it to the AUR step by step.
Build a .deb Package
Step-by-step guide to building a .deb package using dh_make, debian/control, debian/rules, lintian quality checks, and clean chroot builds with sbuild.
Build a Custom Kernel the Debian Way
Build a custom Linux kernel on Debian or Ubuntu using make deb-pkg, producing clean .deb packages for easy install, update, and rollback.
ZFS vs Btrfs on Linux
ZFS vs Btrfs on Linux: a direct comparison of maturity, licensing, RAID safety, snapshots, performance, and which filesystem to pick for your use case.
ZFS Snapshots and Send/Receive
Create atomic ZFS snapshots, replicate datasets incrementally over SSH with zfs send/receive, and automate retention policies using zfs-auto-snapshot.
Virtualisation with QEMU/KVM (deep dive)
Full guide to QEMU/KVM with libvirt: storage pools, virtual networks, virsh management, CPU pinning, and VFIO GPU passthrough on Linux.
Use cgroup v2 for Resource Limits
Learn to use cgroup v2 with systemd slices, scopes, MemoryMax, CPUWeight, and IOWeight to enforce precise resource limits on Linux services and processes.
Use bpftrace for Live Kernel Tracing
Learn to use bpftrace for live Linux kernel tracing: one-liners, tracepoints, kprobes, and syscall latency histograms with real eBPF scripts.
NUMA and CPU Pinning on Linux
Pin processes to specific CPUs and NUMA nodes using taskset, numactl, and systemd cgroup cpusets to cut memory latency and boost throughput on multi-socket Linux servers.
Linux Power Management for Laptops
Extend Linux laptop battery life using TLP, auto-cpufreq, PowerTOP, and kernel boot parameters. Practical configuration for all major distros.
An Introduction to io_uring
Learn how io_uring's shared ring buffers work, benchmark it against libaio with fio, and harden multi-tenant Linux servers against its known attack surface.
Hugepages and Transparent Huge Pages
Learn when Transparent Huge Pages hurt database performance, how to disable THP persistently with systemd, and how to configure static hugepages for PostgreSQL and other databases.
GPU Passthrough for a Gaming VM
Pass a GPU directly to a KVM/QEMU Windows VM using IOMMU, vfio-pci, and Looking Glass — with honest notes on anti-cheat compatibility.
The Linux Boot Process Explained
Trace the full Linux boot sequence from UEFI firmware through GRUB2, the kernel, initramfs, and systemd to your login prompt — with diagnostics at each stage.
How to Tune PostgreSQL for Performance
Tune PostgreSQL for production by configuring shared_buffers, work_mem, autovacuum, index hygiene, and pg_stat_statements query profiling — with per-distro commands.
How to Observe a Linux System with eBPF
Use bpftrace one-liners and BCC tools to trace syscalls, I/O latency, CPU flame graphs, and TCP sessions on a live Linux system with minimal overhead.
How to Benchmark Disk Performance with fio
Learn to benchmark Linux disk performance with fio: writing job files, testing latency and throughput, and interpreting IOPS and percentile output correctly.
ZFS on Linux: The Basics
Set up OpenZFS on Linux: create pools with mirroring or RAID-Z, manage datasets with compression and quotas, and use snapshots for instant backups.
Understanding Linux Load Average
Load average measures scheduler demand—not CPU usage. Learn what the three numbers really mean, how to interpret them per CPU count, and how to separate CPU from I/O load.
How to Tune Kernel Parameters with sysctl
Learn how to tune Linux kernel parameters at runtime and permanently using sysctl and /etc/sysctl.d, with practical network and VM tunables explained.
The Linux Framebuffer Console
Understand Linux framebuffer internals, the fbdev-to-DRM/KMS evolution, and how to set a crisp high-resolution console with the right kernel parameters.
Software RAID on Linux with mdadm
Build and manage Linux software RAID arrays with mdadm: choose the right RAID level, create and persist the array, monitor health, replace a failed disk, and handle boot safely.
How to Set Up KVM Virtualization
Set up KVM/QEMU virtualization on Linux with libvirt and virt-manager. Covers hardware checks, installation on Ubuntu, Fedora, and Arch, networking, and creating VMs.
How to Profile Linux Performance
Learn to profile Linux performance using the USE method, perf stat, perf record, flame graphs, and scheduler tracing to systematically find CPU, memory, and I/O bottlenecks.
LVM: The Logical Volume Manager Explained
Learn how LVM works — Physical Volumes, Volume Groups, Logical Volumes — then create, resize, and snapshot volumes with real commands on any major Linux distro.
An Introduction to eBPF
Learn what eBPF is, how the kernel verifier keeps it safe, and how to use bpftrace to trace syscalls, disk I/O, and CPU scheduling with working examples.
An Introduction to cgroups
Learn how cgroups v2 work, how systemd maps services onto the cgroup tree, and how to set CPU, memory, and I/O limits for processes and services.
How to Compile the Linux Kernel
Step-by-step guide to downloading, configuring, compiling, and booting a custom Linux kernel from kernel.org on Debian, Fedora, and Arch Linux.
How to Build Software from Source on Linux
Build Linux software from source using configure, make, and make install — with dependency tips, CMake and Meson coverage, and clean-install strategies.
Btrfs Basics and Snapshots
Learn Btrfs subvolumes, instant copy-on-write snapshots, and safe system rollback — with both manual btrfs commands and Snapper automation.
Assembly Language on Linux: A Starter Guide
Write x86-64 assembly on Linux from scratch: install NASM and GAS, learn syscalls, assemble and link a working program, then inspect and debug it.
AI and Artificial-Life Tools on Linux
Set up open-source AI/ML and artificial-life toolkits on Linux: PyTorch, JAX, DEAP, Avida, NetLogo, and RL environments with GPU driver guidance.