VM idle page zeroing
me at acm.jhu.edu
Sun May 16 16:00:26 PDT 2010
On Sun, May 16, 2010 at 2:02 PM, Matthew Dillon <dillon at apollo.backplane.com> wrote:
Venkatesh's VM idle page zeroing code has been committed. I used a
squashed merge and rolled in some additional fixes for problems that
came up during testing, so our main repo probably won't sync with
Venkatesh's repo now.
It currently defaults to disabled. We will change the default to
enabled once we do a little more testing. 'sysctl vm | fgrep zero'
gets you all the sysctls.
It doesn't make a huge difference when testing a parallel buildworld,
*maybe* saving 20 seconds on a 1200 second build. I expect that it
will make more of a difference for burst or serialized operations such
as shell script execution where cpus have enough idle time to
pre-zero more pages.
The page zeroing rate has been bumped up to levels more condusive to
expected workloads, around 20,000 pages per second max.
Cool; I'll try here to see if makes a difference on older h/w.Any particular reason for moving the thread to the last cpu?Something that occured to me - right now, we have a thread that wakes up every 1/10th of a second, checks if there are pages to zero. At long stretches of idle time, we just end up waking and sleeping a whole lot. Instead, perhaps, when vm_page_zero_check() sees that we hit ZIDLE_HIGH we should perhaps sleep for a lot longer and drop down to the usual rate when we hit ZIDLE_LOW?
More information about the Kernel