mm, show_mem: suppress page counts in non-blockable contexts
On large systems with a lot of memory, walking all RAM to determine page types may take a half second or even more. In non-blockable contexts, the page allocator will emit a page allocation failure warning unless __GFP_NOWARN is specified. In such contexts, irqs are typically disabled and such a lengthy delay may even result in NMI watchdog timeouts. To fix this, suppress the page walk in such contexts when printing the page allocation failure warning. Signed-off-by: David Rientjes <rientjes@google.com> Cc: Mel Gorman <mgorman@suse.de> Acked-by: Michal Hocko <mhocko@suse.cz> Cc: Dave Hansen <dave@linux.vnet.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:

committed by
Linus Torvalds

parent
fe0bfaaff8
commit
4b59e6c473
@@ -899,7 +899,8 @@ extern void pagefault_out_of_memory(void);
|
||||
* Flags passed to show_mem() and show_free_areas() to suppress output in
|
||||
* various contexts.
|
||||
*/
|
||||
#define SHOW_MEM_FILTER_NODES (0x0001u) /* filter disallowed nodes */
|
||||
#define SHOW_MEM_FILTER_NODES (0x0001u) /* disallowed nodes */
|
||||
#define SHOW_MEM_FILTER_PAGE_COUNT (0x0002u) /* page type count */
|
||||
|
||||
extern void show_free_areas(unsigned int flags);
|
||||
extern bool skip_free_areas_node(unsigned int flags, int nid);
|
||||
|
Reference in New Issue
Block a user