• Matthew Cassell's avatar
    mm/util.c: add byte count to __vm_enough_memory failure warning · f5eec036
    Matthew Cassell authored
    Commit 44b414c8 ("mm/util.c: add warning if
    __vm_enough_memory fails") adds debug information which gives the process
    id and executable name should __vm_enough_memory() fail.  Adding the
    number of pages to the failure message would benefit application
    developers and system administrators in debugging overambitious memory
    requests by providing a point of reference to the amount of memory causing
    __vm_enough_memory() to fail.
    
    1. Set appropriate kernel tunable to reach code path for failure
       message:
    
    	# echo 2 > /proc/sys/vm/overcommit_memory
    
    2. Test program to generate failure - requests 1 gibibyte per
       iteration:
    
    	#include <stdlib.h>
    	#include <stdio.h>
    
    	int main(int argc, char **argv) {
    		for(;;) {
    			if(malloc(1<<30) == NULL)
    				break;
    
    			printf("allocated 1 GiB\n");
    		}
    
    		return 0;
    	}
    
    3. Output:
    
    	Before:
    
    	__vm_enough_memory: pid: 1218, comm: a.out, not enough memory
    for the allocation
    
    	After:
    
    	__vm_enough_memory: pid: 1137, comm: a.out, bytes: 1073741824,
    not enough memory for the allocation
    
    Link: https://lkml.kernel.org/r/20240222194617.1255-1-mcassell411@gmail.comSigned-off-by: default avatarMatthew Cassell <mcassell411@gmail.com>
    Cc: David Hildenbrand <david@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    f5eec036
util.c 29.1 KB