Reduce CTL threads priority to about PUSER.

Since in most configurations CTL serves as network service, we found
that this change improves local system interactivity under heavy load.
Priority of main threads is set slightly higher then worker taskqueues
to make them quickly sort incoming requests not creating bottlenecks,
while plenty of worker taskqueues should be less sensitive to latency.

MFC after:	1 week
Sponsored by:	iXsystems, Inc.
This commit is contained in:
mav 2019-03-04 00:49:07 +00:00
parent a301c92873
commit 339ccac400
3 changed files with 16 additions and 5 deletions

View File

@ -66,6 +66,8 @@ __FBSDID("$FreeBSD$");
#include <sys/sbuf.h>
#include <sys/smp.h>
#include <sys/endian.h>
#include <sys/proc.h>
#include <sys/sched.h>
#include <sys/sysctl.h>
#include <sys/nv.h>
#include <sys/dnv.h>
@ -13191,6 +13193,9 @@ ctl_work_thread(void *arg)
int retval;
CTL_DEBUG_PRINT(("ctl_work_thread starting\n"));
thread_lock(curthread);
sched_prio(curthread, PUSER - 1);
thread_unlock(curthread);
while (!softc->shutdown) {
/*
@ -13240,7 +13245,7 @@ ctl_work_thread(void *arg)
}
/* Sleep until we have something to do. */
mtx_sleep(thr, &thr->queue_lock, PDROP | PRIBIO, "-", 0);
mtx_sleep(thr, &thr->queue_lock, PDROP, "-", 0);
}
thr->thread = NULL;
kthread_exit();
@ -13253,6 +13258,9 @@ ctl_lun_thread(void *arg)
struct ctl_be_lun *be_lun;
CTL_DEBUG_PRINT(("ctl_lun_thread starting\n"));
thread_lock(curthread);
sched_prio(curthread, PUSER - 1);
thread_unlock(curthread);
while (!softc->shutdown) {
mtx_lock(&softc->ctl_lock);
@ -13266,7 +13274,7 @@ ctl_lun_thread(void *arg)
/* Sleep until we have something to do. */
mtx_sleep(&softc->pending_lun_queue, &softc->ctl_lock,
PDROP | PRIBIO, "-", 0);
PDROP, "-", 0);
}
softc->lun_thread = NULL;
kthread_exit();
@ -13284,6 +13292,9 @@ ctl_thresh_thread(void *arg)
int i, e, set;
CTL_DEBUG_PRINT(("ctl_thresh_thread starting\n"));
thread_lock(curthread);
sched_prio(curthread, PUSER - 1);
thread_unlock(curthread);
while (!softc->shutdown) {
mtx_lock(&softc->ctl_lock);
@ -13371,7 +13382,7 @@ ctl_thresh_thread(void *arg)
}
}
mtx_sleep(&softc->thresh_thread, &softc->ctl_lock,
PDROP | PRIBIO, "-", CTL_LBP_PERIOD * hz);
PDROP, "-", CTL_LBP_PERIOD * hz);
}
softc->thresh_thread = NULL;
kthread_exit();

View File

@ -2381,7 +2381,7 @@ ctl_be_block_create(struct ctl_be_block_softc *softc, struct ctl_lun_req *req)
*/
retval = taskqueue_start_threads(&be_lun->io_taskqueue,
/*num threads*/num_threads,
/*priority*/PWAIT,
/*priority*/PUSER,
/*thread name*/
"%s taskq", be_lun->lunname);

View File

@ -1149,7 +1149,7 @@ ctl_backend_ramdisk_create(struct ctl_be_ramdisk_softc *softc,
retval = taskqueue_start_threads(&be_lun->io_taskqueue,
/*num threads*/1,
/*priority*/PWAIT,
/*priority*/PUSER,
/*thread name*/
"%s taskq", be_lun->lunname);
if (retval != 0)