Memory Attack
The Memory Gremlin consumes a set amount of memory, or as much as is available (whichever is lower), and holds onto it for the duration of the attack. The Gremlin allocates blocks of memory with malloc until it reaches the desired amount, deallocating the memory with free upon attack completion.
Options
Parameter | Flag | Required | Default | Version | Description |
---|---|---|---|---|---|
MB | -m int | False | 0.0.1 | The number of megabytes to allocate. | |
GB | -g float | False | 0.5 | 0.0.1 | The number of gigabytes to allocate. |
Percentage | -p <0-100> | False | 100 | 2.8.30 | The percentage of total memory to allocate. |
Allocation Strategy | -s absolute | total | False | absolute | 2.24.0 | absolute tells Gremlin to consume the full amount requested, total tells Gremlin to consume only that which brings the system up to the target utilization. |
Length | -l int | False | 60 | 0.0.1 | The length of the attack (seconds). |
When --allocation-strategy=absolute
(the default from the CLI), Memory attacks are additive and are allocated from available memory. For example, if the pre-attack memory utilization is 500 MB and you initiate an Memory Attack of 500 MB (magnitude), Gremlin will attempt to allocate an additional 500 MB of memory bringing the utilization to approximately 1000 MB (1 GB). Use --allocation-strategy=total
to change this behavior. In the prior example, Gremlin will not allocate any memory if the system is already at 500 MB and --allocation-strategy=total
.
Troubleshooting
When running a memory attack on Linux hosts or Kubernetes, the Gremlin process may be terminated by the system's Out of Memory Manager (OOMKiller). Please see this knowledge base article for additional information.