Tidy up loose ends from Netflix I/O sched rename to dynamic I/O sched.

Rename kern.cam.do_netflix_iosched sysctl to
kern.cam.do_dynamic_iosched.

Approved by: re (kib@)
This commit is contained in:
Warner Losh 2016-07-07 20:31:35 +00:00
parent cde7231a7f
commit 035ec48e55
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=302396

View File

@ -59,15 +59,19 @@ static MALLOC_DEFINE(M_CAMSCHED, "CAM I/O Scheduler",
* Default I/O scheduler for FreeBSD. This implementation is just a thin-vineer
* over the bioq_* interface, with notions of separate calls for normal I/O and
* for trims.
*
* When CAM_IOSCHED_DYNAMIC is defined, the scheduler is enhanced to dynamically
* steer the rate of one type of traffic to help other types of traffic (eg
* limit writes when read latency deteriorates on SSDs).
*/
#ifdef CAM_IOSCHED_DYNAMIC
static int do_netflix_iosched = 1;
TUNABLE_INT("kern.cam.do_netflix_iosched", &do_netflix_iosched);
SYSCTL_INT(_kern_cam, OID_AUTO, do_netflix_iosched, CTLFLAG_RD,
&do_netflix_iosched, 1,
"Enable Netflix I/O scheduler optimizations.");
static int do_dynamic_iosched = 1;
TUNABLE_INT("kern.cam.do_dynamic_iosched", &do_dynamic_iosched);
SYSCTL_INT(_kern_cam, OID_AUTO, do_dynamic_iosched, CTLFLAG_RD,
&do_dynamic_iosched, 1,
"Enable Dynamic I/O scheduler optimizations.");
static int alpha_bits = 9;
TUNABLE_INT("kern.cam.iosched_alpha_bits", &alpha_bits);
@ -640,7 +644,7 @@ static inline int
cam_iosched_has_io(struct cam_iosched_softc *isc)
{
#ifdef CAM_IOSCHED_DYNAMIC
if (do_netflix_iosched) {
if (do_dynamic_iosched) {
struct bio *rbp = bioq_first(&isc->bio_queue);
struct bio *wbp = bioq_first(&isc->write_queue);
int can_write = wbp != NULL &&
@ -954,7 +958,7 @@ cam_iosched_init(struct cam_iosched_softc **iscp, struct cam_periph *periph)
bioq_init(&(*iscp)->bio_queue);
bioq_init(&(*iscp)->trim_queue);
#ifdef CAM_IOSCHED_DYNAMIC
if (do_netflix_iosched) {
if (do_dynamic_iosched) {
bioq_init(&(*iscp)->write_queue);
(*iscp)->read_bias = 100;
(*iscp)->current_read_bias = 100;
@ -1019,7 +1023,7 @@ void cam_iosched_sysctl_init(struct cam_iosched_softc *isc,
"Sort IO queue to try and optimise disk access patterns");
#ifdef CAM_IOSCHED_DYNAMIC
if (!do_netflix_iosched)
if (!do_dynamic_iosched)
return;
isc->sysctl_tree = SYSCTL_ADD_NODE(&isc->sysctl_ctx,
@ -1061,7 +1065,7 @@ cam_iosched_flush(struct cam_iosched_softc *isc, struct devstat *stp, int err)
bioq_flush(&isc->bio_queue, stp, err);
bioq_flush(&isc->trim_queue, stp, err);
#ifdef CAM_IOSCHED_DYNAMIC
if (do_netflix_iosched)
if (do_dynamic_iosched)
bioq_flush(&isc->write_queue, stp, err);
#endif
}
@ -1206,7 +1210,7 @@ cam_iosched_next_bio(struct cam_iosched_softc *isc)
* See if we have any pending writes, and room in the queue for them,
* and if so, those are next.
*/
if (do_netflix_iosched) {
if (do_dynamic_iosched) {
if ((bp = cam_iosched_get_write(isc)) != NULL)
return bp;
}
@ -1223,7 +1227,7 @@ cam_iosched_next_bio(struct cam_iosched_softc *isc)
* For the netflix scheduler, bio_queue is only for reads, so enforce
* the limits here. Enforce only for reads.
*/
if (do_netflix_iosched) {
if (do_dynamic_iosched) {
if (bp->bio_cmd == BIO_READ &&
cam_iosched_limiter_iop(&isc->read_stats, bp) != 0)
return NULL;
@ -1231,7 +1235,7 @@ cam_iosched_next_bio(struct cam_iosched_softc *isc)
#endif
bioq_remove(&isc->bio_queue, bp);
#ifdef CAM_IOSCHED_DYNAMIC
if (do_netflix_iosched) {
if (do_dynamic_iosched) {
if (bp->bio_cmd == BIO_READ) {
isc->read_stats.queued--;
isc->read_stats.total++;
@ -1268,7 +1272,7 @@ cam_iosched_queue_work(struct cam_iosched_softc *isc, struct bio *bp)
#endif
}
#ifdef CAM_IOSCHED_DYNAMIC
else if (do_netflix_iosched &&
else if (do_dynamic_iosched &&
(bp->bio_cmd == BIO_WRITE || bp->bio_cmd == BIO_FLUSH)) {
if (cam_iosched_sort_queue(isc))
bioq_disksort(&isc->write_queue, bp);
@ -1332,7 +1336,7 @@ cam_iosched_bio_complete(struct cam_iosched_softc *isc, struct bio *bp,
{
int retval = 0;
#ifdef CAM_IOSCHED_DYNAMIC
if (!do_netflix_iosched)
if (!do_dynamic_iosched)
return retval;
if (iosched_debug > 10)