.\" Copyright (c) 2009-2010 Fabio Checconi .\" Copyright (c) 2009-2010 Luigi Rizzo, Universita` di Pisa .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" $FreeBSD$ .\" .Dd July 26, 2012 .Dt GSCHED 8 .Os .Sh NAME .Nm gsched .Nd "control utility for disk scheduler GEOM class" .Sh SYNOPSIS .Nm .Cm create .Op Fl v .Op Fl a Ar algorithm .Ar provider ... .Nm .Cm insert .Op Fl v .Op Fl a Ar algorithm .Ar provider ... .Nm .Cm configure .Op Fl v .Op Fl a Ar algorithm .Ar node ... .Nm .Cm destroy .Op Fl fv .Ar node ... .Nm .Cm reset .Op Fl v .Ar node ... .Nm .Cm { list | status | load | unload } .Sh DESCRIPTION The .Nm utility (also callable as .Nm geom sched ... ) changes the scheduling policy of the requests going to a provider. .Pp The first argument to .Nm indicates an action to be performed: .Bl -tag -width ".Cm configure" .It Cm create Create a new provider and geom node using the specified scheduling algorithm. .Ar algorithm is the name of the scheduling algorithm used for the provider. Available algorithms include: .Ar rr , which implements anticipatory scheduling with round robin service among clients; .Ar as , which implements a simple form of anticipatory scheduling with no per-client queue. .Pp If the operation succeeds, the new provider should appear with name .Pa /dev/ Ns Ao Ar dev Ac Ns Pa .sched. . The kernel module .Pa geom_sched.ko will be loaded if it is not loaded already. .It Cm insert Operates as "create", but the insertion is "transparent", i.e. the existing provider is rerouted to the newly created geom, which in turn forwards requests to the existing geom. This operation allows one to start/stop a scheduling service on an already existing provider. .Pp A subsequent "destroy" will remove the newly created geom and hook the provider back to the original geom. .It Cm configure Configure existing scheduling provider. It supports the same options as the .Nm create command. .It Cm destroy Destroy the geom specified in the parameter. .It Cm reset Do nothing. .It Cm list | status | load | unload See .Xr geom 8 . .El .Pp Additional options: .Bl -tag -width ".Fl f" .It Fl f Force the removal of the specified provider. .It Fl v Be more verbose. .El .Sh SYSCTL VARIABLES The following .Xr sysctl 8 variables can be used to control the behavior of the .Nm SCHED GEOM class. The default value is shown next to each variable. .Bl -tag -width indent .It Va kern.geom.sched.debug : No 0 Debug level of the .Nm SCHED GEOM class. This can be set to a number between 0 and 2 inclusive. If set to 0 minimal debug information is printed, and if set to 2 the maximum amount of debug information is printed. .El .Sh EXIT STATUS Exit status is 0 on success, and 1 if the command fails. .Sh EXAMPLES The following example shows how to create a scheduling provider for disk .Pa /dev/ada0 , and how to destroy it. .Bd -literal -offset indent # Load the geom_sched module: kldload geom_sched # Load some scheduler classes used by geom_sched: kldload gsched_rr # Configure device ada0 to use scheduler "rr": geom sched insert -a rr ada0 # Now provider ada0 uses the "rr" algorithm; # the new geom is ada0.sched. # Remove the scheduler on the device: geom sched destroy -v ada0.sched. .Ed .Sh SEE ALSO .Xr geom 4 , .Xr geom 8 .Sh HISTORY The .Nm utility first appeared in .Fx 8.1 . .Sh AUTHORS .An Fabio Checconi Aq fabio@FreeBSD.org .An Luigi Rizzo Aq luigi@FreeBSD.org