Re: [QUESTION] “place pages to tail” regress memory read bandwidth about 10% under our test cases

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 30.11.21 12:51, liupeng (DM) wrote:
> Hi David,
> 
>  

Hi!

> 
> We met a performance regression(lmbench bw_mmap_rd/bw_mem) on our server
> with
> 
> patch 7fef431be9c9(mm/page_alloc: place pages to tail in
> __free_pages_core()),
> 
>  
> 
> Case A.  ./bw_mmap_rd -P 1 512m mmap_only out.file
> 
> Case B.  ./bw_mem -P 1 512m frd
> 
>  
> 
> mode0: IMC Interleave = auto, Channel Interleave = auto, Rank Interleave
> = auto
> 
>                      without                        with        regression
> 
> case A           10535.14                       9645.02      8.4%
> 
> case B           10526.88                       9797.63      6.9%
> 
> also we found different memory interleaving have different results
> 
>  
> 
> mode1: IMC Interleave = 1-way, Channel Interleave = 2-way, Rank
> Interleave =2-way
> 
>                       without                        with         
> regression
> 
> case A           10543.01                       10643.12       -0.9%
> 
> case B           10971.33                       10853.99       1%
> 
>  
> 
> The 7fef431be9c9 changes the different memory layout,  it seems that the
> issue

It doesn't change the physical memory layout. It changes the order in
which physical memory will get allocated.

> 
> is related with memory interleave. But the patch does lead to
> performance regression.
> 
>  
> 
> Any suggestion about this regression?

Does it happen only on specific HW?

Commit 7fef431be9c9 discovered a bunch of BUGs already, including
physical memory that has different performance characteristics due to
firmware bugs, which indicated some physical memory e.g., as uncached to
the OS.

That commit triggers allocation of physical memory in a different order,
which sometimes makes "bad physical memory" getting allocated earlier
than later in some benchmarks. Such effects are usually only visible on
a freshly started system; once the system was busy for some time and the
free page lists are nondeterministic, you might observe similar results.

I wrote a kernel module that was able to identify bad physical memory
regions in some affected setups:
	https://github.com/davidhildenbrand/kstream/blob/main/README.md

You can try running it after a freshly booted system to eventually
identify some "bad" physical memory areas. But it might not be the root
cause. Maybe it's just some caching effects?

-- 
Thanks,

David / dhildenb






[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux