65 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| Tool Name
 | |
| ===========================================================
 | |
| page-nom
 | |
| 
 | |
| 
 | |
| Description
 | |
| ===========================================================
 | |
| page-nom is a memory eater. It can be used to finely allocate large amounts of
 | |
| system or vmalloc memory in order to better test applications in low memory
 | |
| situations. Memory is allocated in individual blocks of a given size which can
 | |
| be tuned. By allocating in chunks it makes it more likely that we can allocate
 | |
| as close to the full request as possible and also makes it easy to dynamically
 | |
| add and remove blocks without having to free and re-initalize (with all the
 | |
| panic that might entail on a system wide basis). New memory is allocated by
 | |
| specifying how many chunks one wants allocated. This all happens via debugfs.
 | |
| 
 | |
| Input
 | |
| ===========================================================
 | |
| - /sys/kernel/debug/page-nom/vmalloc_block_size
 | |
| size in bytes of the individual blocks of memory allocated from vmalloc. The
 | |
| input size is page aligned. The block size can only be changed when page-nom
 | |
| hasn't eaten any vmalloc pages yet.
 | |
| 
 | |
| - /sys/kernel/debug/page-nom/vmalloc_blocks
 | |
| number of 'vmalloc_block_size' blocks to eat from vmalloc. Inputing a number
 | |
| higher than the current value will allocate new memory and inputing a number
 | |
| lower than the current value will free memory. 0 will free all eaten vmalloc
 | |
| memory. The returned value will be the number of allocated blocks regardless
 | |
| if this method or the following method was used to allocate the blocks.
 | |
| 
 | |
| - /sys/kernel/debug/page-nom/vmalloc_percent
 | |
| percentage of the vmalloc memory to eat. This is an alternate method to
 | |
| 'vmalloc_blocks'. Where vmalloc_blocks is more precise, this is easier for
 | |
| automation. Just echo a number between 0 and 100 for page-nom to try to consume
 | |
| that percentage of total vmalloc memory. The returned value from this file
 | |
| is the current percentage of allocated vmalloc memory from either method. This
 | |
| number will be appropriately massaged so it ends up being a multiple of
 | |
| vmalloc_block_size, so the number written won't always be the precise
 | |
| percentage eaten.
 | |
| 
 | |
| - /sys/kernel/debug/page-nom/mem_block_size
 | |
| size in bytes of the individual blocks of memory allocated from memory.
 | |
| The input size is order aligned. The block size can only be changed when
 | |
| page-nom hasn't eaten any pages yet.
 | |
| 
 | |
| - /sys/kernel/debug/page-nom/mem_blocks
 | |
| number of 'mem_block_size' blocks to eat from memory. Inputing a number higher
 | |
| than the current value will allocate new memory and inputing a number lower than
 | |
| the current value will free memory. 0 will free all eaten vmalloc memory. The
 | |
| returned value will be the number of allocated blocks regardless if this method
 | |
| or the following method was used to allocate the blocks.
 | |
| 
 | |
| - /sys/kernel/debug/page-nom/mem_percent - percentage of the system memory to
 | |
|  eat. This is an alternate method to 'mem_blocks'. Where mem_blocks is more
 | |
| precise, this is easier for automation. Just echo a number between 0 and 100
 | |
| for page-nom to try to consume that percentage of system memory. The returned
 | |
| value from this file is the current percentage of allocated system memory from
 | |
| either method. This number will be appropriately massaged so it ends up being
 | |
| a multiple of mem_block_size, so the number written won't always be the precise
 | |
| percentage eaten.
 | |
| 
 | |
| Targets
 | |
| ===========================================================
 | |
| General
 | 
