mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Introduce a Boolean variable wakeup_needed to avoid repeated, unnecessary
calls to wakeup() by vm_page_zero_idle_wakeup().
This commit is contained in:
parent
411f23b06e
commit
f790de29b9
1 changed files with 9 additions and 2 deletions
|
|
@ -76,6 +76,7 @@ TUNABLE_INT("vm.idlezero_maxrun", &idlezero_maxrun);
|
|||
#define ZIDLE_LO(v) ((v) * 2 / 3)
|
||||
#define ZIDLE_HI(v) ((v) * 4 / 5)
|
||||
|
||||
static boolean_t wakeup_needed = FALSE;
|
||||
static int zero_state;
|
||||
|
||||
static int
|
||||
|
|
@ -130,8 +131,11 @@ void
|
|||
vm_page_zero_idle_wakeup(void)
|
||||
{
|
||||
|
||||
if (idlezero_enable && vm_page_zero_check())
|
||||
mtx_assert(&vm_page_queue_mtx, MA_OWNED);
|
||||
if (wakeup_needed && vm_page_zero_check()) {
|
||||
wakeup_needed = FALSE;
|
||||
wakeup(&zero_state);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -163,7 +167,10 @@ vm_pagezero(void __unused *arg)
|
|||
}
|
||||
#endif
|
||||
} else {
|
||||
tsleep(&zero_state, pri, "pgzero", hz * 300);
|
||||
vm_page_lock_queues();
|
||||
wakeup_needed = TRUE;
|
||||
msleep(&zero_state, &vm_page_queue_mtx, PDROP | pri,
|
||||
"pgzero", hz * 300);
|
||||
pages = 0;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue