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.

Preferred Qualifications:
  • 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

Card Image Capstone