Messages in this thread | | | Date | Wed, 25 Jul 2012 12:28:50 -0700 | From | Andi Kleen <> | Subject | Re: [PATCH, RFC 0/6] Avoid cache trashing on clearing huge/gigantic page |
| |
On Wed, Jul 25, 2012 at 01:51:01PM -0500, Christoph Lameter wrote: > On Fri, 20 Jul 2012, Kirill A. Shutemov wrote: > > > From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> > > > > Clearing a 2MB huge page will typically blow away several levels of CPU > > caches. To avoid this only cache clear the 4K area around the fault > > address and use a cache avoiding clears for the rest of the 2MB area. > > why exempt the 4K around the fault address? Is there a regression if that > is not exempted?
You would get an immediate cache miss when the faulting instruction is reexecuted.
> > I guess for anonymous huge pages one may assume that there will be at > least one write to one cache line in the 4k page. Is it useful to get all > the cachelines in the page in the cache.
We did some measurements -- comparing 4K and 2MB with some tracing of fault patterns -- and a lot of apps don't use the full 2MB area. The apps with THP regressions usually used less than others. The patchkit significantly reduced some of the regressions.
> > Also note that if we get later into hugepage use for the page cache we > would want the cache to be cold because the contents have to come in from > a storage medium.
Page cache is not cleared, so never runs this code.
-Andi
-- ak@linux.intel.com -- Speaking for myself only
| |