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
|