On Tue, Oct 22, 2019 at 12:02:13PM +0200, Stefan Priebe - Profihost AG wrote: > > Am 22.10.19 um 09:48 schrieb Vlastimil Babka: > > On 10/22/19 9:41 AM, Stefan Priebe - Profihost AG wrote: > >>> Hi, could you try the patch below? I suspect you're hitting a corner > >>> case where compaction_suitable() returns COMPACT_SKIPPED for the > >>> ZONE_DMA, triggering reclaim even if other zones have plenty of free > >>> memory. And should_continue_reclaim() then returns true until twice the > >>> requested page size is reclaimed (compact_gap()). That means 4MB > >>> reclaimed for each THP allocation attempt, which roughly matches the > >>> trace data you preovided previously. > >>> > >>> The amplification to 4MB should be removed in patches merged for 5.4, so > >>> it would be only 32 pages reclaimed per THP allocation. The patch below > >>> tries to remove this corner case completely, and it should be more > >>> visible on your 5.2.x, so please apply it there. > >>> > >> is there any reason to not apply that one on top of 4.19? > >> > >> Greets, > >> Stefan > >> > > > > It should work, cherrypicks fine without conflict here. > > OK but does not work ;-) > > > mm/compaction.c: In function '__compaction_suitable': > mm/compaction.c:1451:19: error: implicit declaration of function > 'zone_managed_pages'; did you mean 'node_spanned_pages'? > [-Werror=implicit-function-declaration] > alloc_flags, zone_managed_pages(zone))) > ^~~~~~~~~~~~~~~~~~ > node_spanned_pages zone_managed_pages() was introduced later. On 4.19, you need zone->managed_pages. So, changing zone_managed_pages(zone) to zone->managed_pages in that chunk should make the trick. > > Greets, > Stefan > > > -- Oscar Salvador SUSE L3