Enhanced Linux NVMe Driver QoS Scheduler
Current Issue: Linux's NVMe driver processes all I/O requests with equal priority, causing performance interference between workloads with different latency requirements. In cloud environments and multi-tenant systems, latency-sensitive applications (databases, real-time services) suffer degraded performance when competing with throughput-intensive workloads (backups, batch processing, log archiving).
Quantified Impact:
- Research shows that mixed workloads can cause 99th percentile latencies to increase by 300-500% without proper I/O scheduling
- CPU overhead increases by up to 63.4% when using suboptimal Linux I/O schedulers on NVMe devices
- Current schedulers (BFQ, Kyber, MQ-Deadline) are designed for traditional storage and introduce unnecessary overhead on low-latency NVMe SSDs
This project's technical lead and project partner is Payal Godhanii –
Objectives
Primary Objective: Develop an NVMe-specific QoS scheduler in the Linux kernel that provides performance isolation between workloads while minimizing CPU overhead, achieving:
- Latency Isolation: Keep 99th percentile latency <1ms for high-priority workloads under background load
- Proportional Throughput: Deliver bandwidth allocation according to configured weights (e.g., 70:30 split)
- Low CPU Overhead: <5% additional CPU usage compared to no scheduler
- Runtime Configuration: Dynamic QoS policy changes without system reboot
Secondary Objective: Demonstrate measurable improvements in real-world database performance under mixed workload scenarios.
Motivations
Develop an NVMe-specific QoS scheduler in the Linux kernel that provides performance isolation between workloads while minimizing CPU overhead, achieving:
- Latency Isolation: Keep 99th percentile latency <1ms for high-priority workloads under background load
- Proportional Throughput: Deliver bandwidth allocation according to configured weights (e.g., 70:30 split)
- Low CPU Overhead: <5% additional CPU usage compared to no scheduler
- Runtime Configuration: Dynamic QoS policy changes without system reboot
Secondary Objective: Demonstrate measurable improvements in real-world database performance under mixed workload scenarios.
Qualifications
Minimum Qualifications:
- Coursework in operating systems (processes, scheduling, kernel vs. user space).
- Proficiency in C and experience with systems-level programming.
- Ability to build, configure, and boot a custom Linux kernel.
- Familiarity with Linux command-line tools and POSIX system calls.
- Basic debugging and profiling skills (gdb, perf, strace, etc.).
- Competence with git and collaborative development workflows.
- Clear technical writing and documentation skills.
- Commitment to sustained teamwork.
- Prior experience modifying Linux kernel code or device drivers.
- Knowledge of storage systems, especially NVMe and SSD internals.
- Familiarity with Linux block layer and I/O schedulers (Kyber, BFQ, MQ-Deadline).
- Hands-on experience with performance testing tools (fio, blktrace, iostat).
- Ability to design and interpret latency/throughput experiments.
- Experience running and benchmarking databases (PostgreSQL, MySQL, RocksDB).
- Background in QoS concepts, scheduling algorithms, or real-time systems.
- Interest in producing publishable research-style evaluations.
Details
Project Partner:
Kirsten Winters
NDA/IPA:No Agreement Required
Number Groups:1
Project Status:Accepting Applicants