From: Hugh Dickins <hugh@veritas.com>
To: Lee Revell <rlrevell@joe-job.com>
Cc: Ingo Molnar <mingo@elte.hu>, Andrew Morton <akpm@osdl.org>,
linux-kernel <linux-kernel@vger.kernel.org>
Subject: Re: More latency regressions with 2.6.11-rc4-RT-V0.7.39-02
Date: Wed, 23 Feb 2005 20:06:39 +0000 (GMT) [thread overview]
Message-ID: <Pine.LNX.4.61.0502231952250.14603@goblin.wat.veritas.com> (raw)
In-Reply-To: <1109187381.3174.5.camel@krustophenia.net>
On Wed, 23 Feb 2005, Lee Revell wrote:
> On Wed, 2005-02-23 at 19:16 +0000, Hugh Dickins wrote:
> >
> > I'm just about to test this patch below: please give it a try: thanks...
I'm very sorry, there's two things wrong with that version: _must_
increment addr before breaking out, and better to check after pte_none
too (we can question whether it might be checking too often, but this
replicates what Ingo was doing). Please replace by new patch below,
which I'm now running through lmbench.
> Aha, that explains why all the latency regressions involve the VM
> subsystem.
>
> Thanks, your patch fixes the copy_pte_range latency.
Great, if the previous patch fixed that latency then this new one
will too, no need to report on that; but please get rid of the old
patch before it leaks too many of your pages.
> Now zap_pte_range,
> which Ingo also fixed a few months ago, is the worst offender. Can this
> fix be easily ported too?
That surprises me: all the zap_pte_range latency fixes I know of
are in 2.6.11-rc, perhaps Ingo knows of something missing there?
Hugh
Ingo's patch to reduce scheduling latencies, by checking for lockbreak
in copy_page_range, was in the -VP and -mm patchsets some months ago;
but got preempted by the 4level rework, and not reinstated since.
Restore it now in copy_pte_range - which mercifully makes it easier.
Signed-off-by: Hugh Dickins <hugh@veritas.com>
--- 2.6.11-rc4-bk/mm/memory.c 2005-02-21 11:32:19.000000000 +0000
+++ linux/mm/memory.c 2005-02-23 19:46:40.000000000 +0000
@@ -328,21 +328,33 @@ static int copy_pte_range(struct mm_stru
pte_t *s, *d;
unsigned long vm_flags = vma->vm_flags;
+again:
d = dst_pte = pte_alloc_map(dst_mm, dst_pmd, addr);
if (!dst_pte)
return -ENOMEM;
spin_lock(&src_mm->page_table_lock);
s = src_pte = pte_offset_map_nested(src_pmd, addr);
- for (; addr < end; addr += PAGE_SIZE, s++, d++) {
- if (pte_none(*s))
- continue;
- copy_one_pte(dst_mm, src_mm, d, s, vm_flags, addr);
+ for (; addr < end; s++, d++) {
+ if (!pte_none(*s))
+ copy_one_pte(dst_mm, src_mm, d, s, vm_flags, addr);
+ addr += PAGE_SIZE;
+ /*
+ * We are holding two locks at this point - either of them
+ * could generate latencies in another task on another CPU.
+ */
+ if (need_resched() ||
+ need_lockbreak(&src_mm->page_table_lock) ||
+ need_lockbreak(&dst_mm->page_table_lock))
+ break;
}
pte_unmap_nested(src_pte);
pte_unmap(dst_pte);
spin_unlock(&src_mm->page_table_lock);
+
cond_resched_lock(&dst_mm->page_table_lock);
+ if (addr < end)
+ goto again;
return 0;
}
next prev parent reply other threads:[~2005-02-23 20:08 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-23 18:07 Lee Revell
2005-02-23 19:16 ` Hugh Dickins
2005-02-23 19:36 ` Lee Revell
2005-02-23 20:06 ` Hugh Dickins [this message]
2005-02-23 20:10 ` Lee Revell
2005-02-23 20:30 ` Lee Revell
2005-02-23 21:03 ` Hugh Dickins
2005-02-23 22:14 ` Lee Revell
2005-02-23 23:52 ` PPC RT Patch john cooper
2005-02-24 4:20 ` Frank Rowand
2005-02-24 13:56 ` john cooper
2005-02-23 23:27 ` More latency regressions with 2.6.11-rc4-RT-V0.7.39-02 Nick Piggin
2005-02-24 1:03 ` Lee Revell
2005-02-24 1:29 ` Nick Piggin
2005-02-24 2:24 ` Lee Revell
2005-02-24 2:41 ` Nick Piggin
2005-02-24 3:03 ` Lee Revell
2005-02-23 20:53 ` Hugh Dickins
2005-02-23 22:13 ` Lee Revell
2005-02-24 4:56 ` Hugh Dickins
2005-02-24 6:32 ` Lee Revell
2005-02-24 8:26 ` Hugh Dickins
2005-02-25 3:30 ` Lee Revell
2005-02-25 5:58 ` Hugh Dickins
2005-02-25 15:02 ` Lee Revell
2005-02-23 19:52 ` Lee Revell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Pine.LNX.4.61.0502231952250.14603@goblin.wat.veritas.com \
--to=hugh@veritas.com \
--cc=akpm@osdl.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rlrevell@joe-job.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®