Re: VM idle page zeroing
--00163642759d427ab10486be0496
Content-Type: text/plain; charset=UTF-8
On Sun, May 16, 2010 at 2:02 PM, Matthew Dillon <dillon@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?
Thanks,
-- vs
--00163642759d427ab10486be0496
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
On Sun, May 16, 2010 at 2:02 PM, Matthew Dillon <span dir=3D"ltr"><<a hr=
ef=3D"mailto:dillon@apollo.backplane.com">dillon@apollo.backplane.com</a>&g=
t;</span> wrote:<br><div class=3D"gmail_quote"><blockquote class=3D"gmail_q=
uote" style=3D"margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 2=
04, 204); padding-left: 1ex;">
=C2=A0 =C2=A0Venkatesh's VM idle page zeroing code has been committed.=
=C2=A0I used a<br>
=C2=A0 =C2=A0squashed merge and rolled in some additional fixes for proble=
ms that<br>
=C2=A0 =C2=A0came up during testing, so our main repo probably won't s=
ync with<br>
=C2=A0 =C2=A0Venkatesh's repo now.<br>
<br>
=C2=A0 =C2=A0It currently defaults to disabled. =C2=A0We will change the d=
efault to<br>
=C2=A0 =C2=A0enabled once we do a little more testing. =C2=A0'sysctl v=
m | fgrep zero'<br>
=C2=A0 =C2=A0gets you all the sysctls.<br>
<br>
=C2=A0 =C2=A0It doesn't make a huge difference when testing a parallel=
buildworld,<br>
=C2=A0 =C2=A0*maybe* saving 20 seconds on a 1200 second build. =C2=A0I exp=
ect that it<br>
=C2=A0 =C2=A0will make more of a difference for burst or serialized operat=
ions such<br>
=C2=A0 =C2=A0as shell script execution where cpus have enough idle time to=
<br>
=C2=A0 =C2=A0pre-zero more pages.<br>
<br>
=C2=A0 =C2=A0The page zeroing rate has been bumped up to levels more condu=
sive to<br>
=C2=A0 =C2=A0expected workloads, around 20,000 pages per second max.<br>
</blockquote><div><br>Cool; I'll try here to see if makes a difference =
on older h/w.<br><br>Any particular reason for moving the thread to the las=
t cpu?<br><br>Something that occured to me - right now, we have a thread th=
at 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 lo=
t. 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 wh=
en we hit ZIDLE_LOW?<br>
<br>Thanks,<br></div></div>-- vs<br>
--00163642759d427ab10486be0496--
討論串 (同標題文章)
完整討論串 (本文為第 10 之 19 篇):