public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Venki Pallipadi <venkatesh.pallipadi@intel.com>
To: Ingo Molnar <mingo@elte.hu>
Cc: Rene Herman <rene.herman@keyaccess.nl>,
	"Pallipadi, Venkatesh" <venkatesh.pallipadi@intel.com>,
	Dave Airlie <airlied@gmail.com>,
	"Li, Shaohua" <shaohua.li@intel.com>,
	Yinghai Lu <yhlu.kernel@gmail.com>,
	Andreas Herrmann <andreas.herrmann3@amd.com>,
	Arjan van de Ven <arjan@infradead.org>,
	Linux Kernel <linux-kernel@vger.kernel.org>,
	"Siddha, Suresh B" <suresh.b.siddha@intel.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Dave Jones <davej@codemonkey.org.uk>
Subject: Re: [PATCH] x86: have set_memory_array_{uc,wb} coalesce memtypes.
Date: Fri, 22 Aug 2008 12:08:17 -0700	[thread overview]
Message-ID: <20080822190817.GA17381@linux-os.sc.intel.com> (raw)
In-Reply-To: <20080822041544.GF30284@elte.hu>

On Thu, Aug 21, 2008 at 09:15:44PM -0700, Ingo Molnar wrote:
> 
> * Rene Herman <rene.herman@keyaccess.nl> wrote:
> 
> > Actually, might as well simply reconstruct the memtype list at free
> > time I guess. How is this for a coalescing version of the array
> > functions?
> 
> impressive! Rarely do we get this much bang for such a low linecount :-)
> 
> > NOTE: I am posting this because I'm going to bed but haven't stared
> > comfortably long at this and might be buggy. Compiles, boots and
> > provides me with:
> >
> > root@7ixe4:~# wc -l /debug/x86/pat_memtype_list
> > 53 /debug/x86/pat_memtype_list
> >
> > otherwise (down from 16384+).
> >
> > <snore>
> 
> cool!
> 
> I'd do this in v2.6.27 but i forced myself to be reasonable and applied
> your patches to tip/x86/pat instead, for tentative v2.6.28 merging
> (assuming it all passes testing, etc.):
> 
>  # 9a79f4f: x86: {reverve,free}_memtype() take a physical address
>  # c5e147c: x86: have set_memory_array_{uc,wb} coalesce memtypes.
>  # 5f310b6: agp: enable optimized agp_alloc_pages methods
> 
> ( note that i flipped them around a bit and have put your
>   enable-agp_alloc_pages()-widely patch last, so that we get better
>   bisection behavior. )
> 
> The frontside cache itself is in x86/urgent:
> 
>  # 80c5e73: x86: fix Xorg startup/shutdown slowdown with PAT
> 
> ... and should at least solve the symptom that you've hit in practice
> (the slowdown), without changing the underlying PAT machinery. (which
> would be way too dangerous for v2.6.27)
> 
> And it's all merged up in tip/master, you might want to test that too to
> check whether all the pieces fit together nicely.
> 
> Tens of thousands of page granular memtypes was Not Nice.
> 
> Venki, Suresh, Shaohua, Dave, Arjan - any observations about this line
> of action?

The concern I have here is that the coalescing is not guaranteed to work.
We may still end up having horrible worst case latency, even though this
improves the normal case (boot the system, start X, exit X, reboot the system).
It depends on how pages are allocated and how much memory is there in the
system and what else is running etc.

Here on my test system, without this coalescing change I see

[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
19528

With the coalescing change I see
[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
135

quit and restart X
[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
985
quit and restart X
[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
1468
quit and restart X
[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
1749
quit and restart X
[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
1916
quit and restart X
[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
2085

untar a kernel tar.bz2 and restart X
[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
2737

compile the kernel and restart X
[root@localhost ~]# cat /proc/sys/debug/x86/pat_memtype_list | wc -l
3089


I think this as a good workaround for now. But, for long run we still need to
look at other ways of eliminating this overhead (like using page struct
that Suresh mentioned in the other thread).


Also, there seems to be a bug in the error path of the patch. Below should
fix it.

Thanks,
Venki

Fix the start addr for free_memtype calls in the error path.

Signed-off-by: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>

---
 arch/x86/mm/pageattr.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: t/arch/x86/mm/pageattr.c
===================================================================
--- t.orig/arch/x86/mm/pageattr.c	2008-08-22 10:38:35.000000000 -0700
+++ t/arch/x86/mm/pageattr.c	2008-08-22 11:27:27.000000000 -0700
@@ -967,7 +967,7 @@ out:
 
 		if (tmp == start)
 			break;
-		for (end = start + PAGE_SIZE; i < addrinarray - 1; end += PAGE_SIZE) {
+		for (end = tmp + PAGE_SIZE; i < addrinarray - 1; end += PAGE_SIZE) {
 			if (end != __pa(addr[i + 1]))
 				break;
 			i++;

  reply	other threads:[~2008-08-22 19:08 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-04 16:30 AGP and PAT (induced?) problem (on AMD family 6) Rene Herman
2008-08-06 13:51 ` Andreas Herrmann
2008-08-06 20:57   ` Rene Herman
2008-08-11  9:46     ` Rene Herman
2008-08-15 14:22 ` Ingo Molnar
2008-08-15 15:24   ` Rene Herman
2008-08-19 10:11     ` Rene Herman
2008-08-19 10:26       ` Ingo Molnar
2008-08-19 14:19         ` Rene Herman
2008-08-19 19:07           ` Venki Pallipadi
2008-08-19 19:22             ` Rene Herman
2008-08-19 23:28               ` Venki Pallipadi
2008-08-20 10:09                 ` Ingo Molnar
2008-08-20 10:04             ` Ingo Molnar
2008-08-20 10:50               ` Rene Herman
2008-08-20 14:27                 ` Rene Herman
2008-08-20 19:41                   ` Venki Pallipadi
2008-08-20 21:40                     ` Rene Herman
2008-08-20 21:46                       ` Dave Airlie
2008-08-20 22:16                         ` Venki Pallipadi
2008-08-21  3:42                           ` Andi Kleen
2008-08-21 21:13                             ` Suresh Siddha
2008-08-22  2:12                               ` Andi Kleen
2008-08-21 12:06                           ` Ingo Molnar
2008-08-21 17:15                             ` Rene Herman
2008-08-21 22:10                               ` [PATCH] x86: {reverve,free}_memtype() take a physical address Rene Herman
2008-08-21 22:16                                 ` Pallipadi, Venkatesh
2008-08-21 22:26                                   ` Rene Herman
2008-08-21 22:57                                     ` Pallipadi, Venkatesh
2008-08-21 23:06                                       ` Rene Herman
2008-08-21 23:02                               ` [PATCH] x86: have set_memory_array_{uc,wb} coalesce memtypes Rene Herman
2008-08-22  4:15                                 ` Ingo Molnar
2008-08-22 19:08                                   ` Venki Pallipadi [this message]
2008-08-22 20:15                                     ` Rene Herman
2008-08-23 15:33                                       ` Ingo Molnar
2008-08-22 20:02                                   ` Rene Herman
2008-09-10 19:52                                     ` AGP PAT issue Rene Herman
2008-09-11  8:17                                       ` Ingo Molnar
2008-09-11  8:30                                         ` Rene Herman
2008-09-13  0:26                                           ` Pallipadi, Venkatesh
2008-09-13  0:44                                             ` Rene Herman
2008-10-09 15:53                                               ` Thomas Hellstrom
2008-10-13 17:10                                                 ` Pallipadi, Venkatesh
2008-10-13 19:26                                                   ` Thomas Hellström
2008-08-20 21:02                 ` AGP and PAT (induced?) problem (on AMD family 6) Dave Airlie
2008-08-20 21:16                   ` Rene Herman

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=20080822190817.GA17381@linux-os.sc.intel.com \
    --to=venkatesh.pallipadi@intel.com \
    --cc=airlied@gmail.com \
    --cc=andreas.herrmann3@amd.com \
    --cc=arjan@infradead.org \
    --cc=davej@codemonkey.org.uk \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=rene.herman@keyaccess.nl \
    --cc=shaohua.li@intel.com \
    --cc=suresh.b.siddha@intel.com \
    --cc=tglx@linutronix.de \
    --cc=yhlu.kernel@gmail.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