Lesson 1Asynchronous and batched I/O: using io_uring, liburing, AIO, and batching writes to reduce blockingCut blocking with async, batched I/O. Cover io_uring, liburing, POSIX AIO, batch writes, rework calls to keep threads busy while I/O finishes behind.
Designing non-blocking I/O call patternsUsing io_uring and liburing submission queuesBatching small writes into larger segmentsHandling completion events and error pathsComparing io_uring with legacy AIO APIsLesson 2Queue depth and client-side throttling: limiting outstanding requests, token buckets, and backpressure mechanismsSee how queue depth, client throttling shape latency, throughput. Cover safe limits, token buckets, backpressure, avoid overload crash in shared storage.
Choosing safe queue_depth for each device typeImplementing token bucket rate limitersDesigning backpressure signals to callersCoordinating limits across many clientsMonitoring tail latency under throttlingLesson 3I/O scheduler and block layer tuning: switching schedulers, elevator tuning, setting appropriate queue_depth, blk-mq and multiqueue settingsTune block layer, I/O scheduler for your workload. Pick schedulers, tweak queue_depth, set blk-mq multiqueue, check gains with real benchmarks.
Comparing mq-deadline, none, and BFQ schedulersSetting queue_depth for SSDs and HDDsConfiguring blk-mq multiqueue parametersIsolating noisy neighbors at the block layerBenchmarking scheduler changes safelyLesson 4Use of dedicated SSDs vs HDDs and understanding alignment, overprovisioning, and TRIM/reclaim behaviourKnow when SSDs beat HDDs and deploy right. Cover alignment, overprovisioning, TRIM reclaim, mixed tiers for cheap performance.
Choosing SSD or HDD for each workload typeEnsuring partition and filesystem alignmentPlanning SSD overprovisioning capacityConfiguring TRIM, discard, and reclaim safelyDesigning hybrid SSD–HDD storage tiersLesson 5Caching and buffering strategies: application-level caches (LRU), Linux page cache tuning, use of tmpfs, and write-back vs write-through considerationsGet caching, buffering from app to kernel. Explain LRU caches, page cache tweaks, tmpfs, trade-offs write-back vs write-through for durability, latency.
Designing effective application LRU cachesTuning Linux page cache and dirty ratiosWhen to use tmpfs for transient hot dataWrite-back vs write-through trade-offsAvoiding double caching across layersLesson 6Storage layout changes: separate hot data, cold data, and logs onto different devices or partitionsSplit hot, cold, log data over devices/partitions. Cover workload checks, layouts, moves, measure latency, throughput, contention gains post-change.
Identifying hot vs cold data from workload tracesPlacing logs on low-latency dedicated devicesSeparating random and sequential I/O workloadsPartitioning schemes for mixed media arraysMeasuring gains from layout reorganizationLesson 7Concurrency control and I/O patterns: batching small writes, coalescing fsyncs, group commit, and non-blocking design patternsSee concurrency patterns with storage. Cover batch small writes, merge fsyncs, group commit, non-blocking to cut contention, boost throughput.
Batching tiny writes into aligned blocksCoalescing fsync calls across sessionsImplementing group commit in log systemsEvent-driven non-blocking server designsAvoiding thundering herd on shared filesLesson 8Reliability trade-offs: data loss risks with async/disabled barriers, cache consistency with NAS, and testing durability guaranteesWeigh reliability costs of bold I/O tuning. Learn async barrier risks, NAS cache mismatches, test durability, note failure modes.
Risks of disabling barriers and write cachesNAS cache consistency and stale readsDesigning durability and crash testsDocumenting supported data loss scenariosBalancing SLAs between latency and safetyLesson 9Network storage optimisations: mount options for NFS (async/sync, rsize/wsize, noac, actimeo), TCP tuning and jumbo frames, and multipathingOptimise NFS, iSCSI stacks. Cover NFS mounts, TCP tweaks, jumbo frames, multipath for better throughput, latency, link failure toughness.
Choosing NFS async, sync, and commit modesTuning rsize, wsize, and attribute cachingConfiguring TCP buffers and congestion controlUsing jumbo frames safely in storage networksDesigning multipath and failover policiesLesson 10Tuning filesystem and mount options: noatime, nodiratime, barrier/discard, inode allocation and journaling settingsKey fs, mount options for I/O latency. Use noatime, barrier, discard, journaling, inode alloc, dir options cut metadata load.
Impact of atime, noatime, and relatime modesJournaling modes and barrier configurationSafe use of discard and background TRIMInode density and directory layout choicesPer-mount options for latency-sensitive paths