- Restore dropping the priority of syncer down to PPAUSE when it is idle.
This was lost when it was converted to using a condition variable instead of lbolt. - Drop the priority of flowtable down to PPAUSE when it is idle as well since it is a similar background task. MFC after: 2 weeks
This commit is contained in:
parent
6226ec3ef8
commit
a8f4344f08
@ -65,6 +65,7 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/namei.h>
|
||||
#include <sys/priv.h>
|
||||
#include <sys/reboot.h>
|
||||
#include <sys/sched.h>
|
||||
#include <sys/sleepqueue.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/sysctl.h>
|
||||
@ -1880,6 +1881,12 @@ sched_sync(void)
|
||||
* matter as we are just trying to generally pace the
|
||||
* filesystem activity.
|
||||
*/
|
||||
if (syncer_state != SYNCER_RUNNING ||
|
||||
time_uptime == starttime) {
|
||||
thread_lock(td);
|
||||
sched_prio(td, PPAUSE);
|
||||
thread_unlock(td);
|
||||
}
|
||||
if (syncer_state != SYNCER_RUNNING)
|
||||
cv_timedwait(&sync_wakeup, &sync_mtx,
|
||||
hz / SYNCER_SHUTDOWN_SPEEDUP);
|
||||
|
@ -1549,9 +1549,11 @@ static void
|
||||
flowtable_cleaner(void)
|
||||
{
|
||||
VNET_ITERATOR_DECL(vnet_iter);
|
||||
struct thread *td;
|
||||
|
||||
if (bootverbose)
|
||||
log(LOG_INFO, "flowtable cleaner started\n");
|
||||
td = curthread;
|
||||
while (1) {
|
||||
VNET_LIST_RLOCK();
|
||||
VNET_FOREACH(vnet_iter) {
|
||||
@ -1566,6 +1568,9 @@ flowtable_cleaner(void)
|
||||
* is arbitrary
|
||||
*/
|
||||
mtx_lock(&flowclean_lock);
|
||||
thread_lock(td);
|
||||
sched_prio(td, PPAUSE);
|
||||
thread_unlock(td);
|
||||
flowclean_cycles++;
|
||||
cv_broadcast(&flowclean_f_cv);
|
||||
cv_timedwait(&flowclean_c_cv, &flowclean_lock, flowclean_freq);
|
||||
|
Loading…
x
Reference in New Issue
Block a user