With helper page daemon threads, we divide the inactive target by the
number of threads, rounding down, and sum the total number of pages
freed by the threads. This sum is compared with the original target,
but by rounding down we might lose pages, causing the page daemon
control loop to conclude that inactive queue scanning isn't keeping up
with demand for free pages. Typically this results in excessive
swapping.
Fix the problem by accounting for the error in the main pagedaemon
thread's target. Initially I wanted to just set the per-thread target
to howmany(shortage, threads), but I think the code is easier to reason
about if we aim to meet the global target precisely.