Geom-based Disk Schedulers


Disk scheduling is a consolidated topic in computer science. Some of the well-known results reached by the research community have not made it into FreeBSD, for more than a single reason. A previous Summer of Code project, Hybrid introduced a modular framework for pluggable schedulers and a novel fair queueing algorithm; due to architectural limitations anyway it didn't explore the feasibility of anticipatory scheduling, a technique that can increase significantly the throughput of synchronous sequential workloads on rotational media.

With Luigi Rizzo, we have developed a prototype framework to introduce pluggable disk schedulers in the Geom layer. It basically consists in a Geom class that queues up requests going to the provider it is attached to, and releases them according to the algorithm, which is implemented in an external module.

We also implemented a couple of algorithms, gsched_as which is a simple anticipatory scheduler with no per-client info, and gsched_rr which does anticipation and round robin among per-client queues.

Project Goals

This project's goals are, mainly, bringing the prototype developed in so far to a more usable form, and extending the capabilities of the scheduling algorithms shipped with the current code.

The main steps that will be taken to reach these goals are:

Project Status

The project status will be tracked at


SOC2009FabioChecconi (last edited 2020-11-04T23:14:59+0000 by SashaVigole)