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, redesign call paths to keep threads busy as I/O finishes back.
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 throttle shape waits, flow. Cover safe caps, token bucket build, backpressure signs, dodge overload drop 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 to fit workload. Pick schedulers, set queue_depth, set blk-mq multiqueue, check gains with real tests.
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 behaviorKnow when SSDs beat HDDs, deploy right. Cover align, overprovision, TRIM reclaim acts, mixed tiers for cost-good 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 considerationsGrasp cache buffer plans from app to kernel. Explain LRU caches, Linux page cache tune, tmpfs use, trade-offs write-back vs through for lasting, waits.
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 load check, layout styles, move plans, measure waits, flow, clash gains post shift.
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 acts. Cover batch small writes, join fsyncs, group commit, non-block designs cut clash, boost flow.
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 guaranteesCheck steady trade-offs from bold IO tune. Learn async barrier risks, NAS cache mismatch, test lasting rules, note backed fail 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 optimizations: mount options for NFS (async/sync, rsize/wsize, noac, actimeo), TCP tuning and jumbo frames, and multipathingBoost net storage like NFS, iSCSI. Cover NFS mount choices, TCP tune, jumbo frames, multipath for better flow, waits, link fail bounce.
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 filesystem mount choices sway IO waits. Learn noatime, barrier, discard, journal modes, inode alloc, dir choices 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