update the geom_sched entry

This commit is contained in:
Luigi Rizzo 2009-03-15 14:13:43 +00:00
parent 6b92f5efb9
commit 4e23ae9366
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/www/; revision=33945

View file

@ -15,7 +15,7 @@ Ideas//EN"
<ideas>
<cvs:keywords xmlns:cvs="http://www.FreeBSD.org/XML/CVS" version="1.0">
<cvs:keyword name="freebsd">
$FreeBSD: www/en/projects/ideas/ideas.xml,v 1.110 2009/03/13 20:02:23 gabor Exp $
$FreeBSD: www/en/projects/ideas/ideas.xml,v 1.111 2009/03/14 10:18:18 rwatson Exp $
</cvs:keyword>
</cvs:keywords>
@ -723,28 +723,53 @@ href="http://info.iet.unipi.it/~luigi/FreeBSD/linux_bsd_kld.html">here</a>.</p>
</idea>
<idea id="psched">
<title>Pluggable Disk Scheduler</title>
<title>Geom-based Disk Schedulers</title>
<desc>
<p><strong>Technical contact</strong>: <a
href="mailto:s223560@studenti.ing.unipi.it">Emiliano Mennucci</a></p>
href="mailto:luigi@freebsd.org">Luigi Rizzo</a></p>
<p><strong>References</strong>: <a
href="http://wiki.freebsd.org/moin.cgi/Hybrid">The Pluggable Disk
Schedulers SoC project</a>, <a
href="http://www.happyemi.org/hybrid/">Patches</a></p>
<p>Our "Pluggable Disk Schedulers" SoC 2005 project resulted in code which
solved the problem where large sequential I/O requests, or certain
access patterns from one or a few processes, might almost completely
starve other processes. It is available as a patch for RELENG_4 and
RELENG_5. Unfortunately the code in FreeBSD-current (and RELENG_6)
changed too much, so that the patches can not be committed. The goal
of this project is to port the pluggable disk schedulers to the GEOM
framework.</p>
<p>Interested people should also have a look at <a
href="http://lists.freebsd.org/pipermail/freebsd-geom/2007-January/001854.html">
a mail thread about this</a> (Ulf is not working on this) and <a
href="http://www.freebsd.org/cgi/mid.cgi?db=irt&amp;id=20071011022001.GC13480@gandalf.sssup.it">
further discussion</a> of the corresponding GEOM aspects.</p>
<p>In a 2005 GSoC project, "Pluggable Disk Schedulers", Emiliano
Mennucci explored the feasibility of pluggable disk schedulers
for FreeBSD. The project was successful, but we could not explore
certain approaches (e.g. "anticipation", where requests are delayed
hoping that some future ones can served without a seek) due to
architectural limitations the kernel had at the time.
<p>
Since then, the GEOM infrastructure has become available on FreeBSD
for interacting with disk I/O requests. GEOM has enabled us to
work on disk schedulers in a much more flexible way, allowing a
much faster development of disk scheduling algorithms. With
Fabio Checconi, we have developed a prototype
implementation of some anticipatory schedulers, see
<a href="http://info.iet.unipi.it/~luigi/FreeBSD/#geom_sched">GEOM_SCHED</a>.
<p>
GEOM_SCHED works within the geom layer, i.e. above the device driver
where queueing of requests may actually occur. The way GEOM_SCHED
does scheduling is by limiting the number of outstanding requests
to the device, and the performance implications of this approach
need to be measured. An alternative approach is to push the
scheduler (using the same algorithms developed in GEOM_SCHED,
and most likely the same code) within the device drivers. This less general
(as it needs to be replicated in all drivers) but it may be
an interesting thing to do e.g. for some popular device drivers
such as ATA.
<p>
The proposed SoC work can address one or more of the following
aspects:
i) implement suitable classifiers for
disk requests; ii) implement techniques for the auto-tuning of
the scheduler parameters; iii) measure the performance implications
of doing scheduling above the device driver, and possibly design
and implement a suitable mechanism to push the GEOM_SCHED
module within the device driver itself.
<p>
Ultimately, we expect to end up with a production quality subsystem
for use in FreeBSD.
<p><strong>Requirements</strong>:</p>
<ul>
<li>Ability to read and understand foreign C code.</li>