On Tue, Aug 15, 2017 at 02:41:19PM +0200, Michal Hocko wrote: > On Tue 15-08-17 01:19:16, Chen Yu wrote: > [...] > > @@ -2561,8 +2562,10 @@ void mark_free_pages(struct zone *zone) > > unsigned long i; > > > > pfn = page_to_pfn(page); > > - for (i = 0; i < (1UL << order); i++) > > + for (i = 0; i < (1UL << order); i++) { > > swsusp_set_page_free(pfn_to_page(pfn + i)); > > + touch_nmi_watchdog(); > > + } > > this is rather excessive. Why don't you simply call touch_nmi_watchdog > once per every 1000 pages? Or once per free_list entry? > > Moreover why don't you need to touch_nmi_watchdog in the loop over all > pfns in the zone (right above this loop)? > -- After re-checking the code, I think we can simply disable the watchdog temporarily, thus to avoid feeding the watchdog in the loop. I'm sending another version based on this. Thanks, Yu > Michal Hocko > SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>