Skip to main content
Version: 2.0.7

Simulate Stress Scenarios

This document describes how to use Chaosd to simulate stress scenarios. This feature generates CPU or memory stress on the host using stress-ng. You can create stress experiments either in command-line or service mode.

Create stress experiments in command-line mode​

This section describes how to create stress experiments in command-line mode.

Before creating stress experiments, you can run the following command to view the stress experiment types supported by Chaosd:

chaosd attack stress --help

The result is as follows:

Stress attack related commands

Usage:
chaosd attack stress [command]

Available Commands:
cpu continuously stress CPU out
mem continuously stress virtual memory out

Flags:
-h, --help help for stress

Global Flags:
--log-level string the log level of chaosd, the value can be 'debug', 'info', 'warn' and 'error'

Use "chaosd attack stress [command] --help" for more information about a command.

Currently, Chaosd supports creating CPU stress experiments and memory stress experiments.

Simulating CPU stress​

Command of simulating CPU stress​

To view the configuration items supported by the CPU stress simulation, run the following command:

chaosd attack stress cpu --help

The result is as follows:

continuously stress CPU out

Usage:
chaosd attack stress cpu [options] [flags]

Flags:
-h, --help help for cpu
-l, --load int Load specifies P percent loading per CPU worker. 0 is effectively a sleep (no load) and 100 is full loading. (default 10)
-o, --options strings extend stress-ng options.
-w, --workers int Workers specifies N workers to apply the stressor. (default 1)

Global Flags:
--log-level string the log level of chaosd, the value can be 'debug', 'info', 'warn' and 'error'

Configuration description of simulating CPU stress​

Configuration itemAbbreviationDescriptionValue
loadlSpecifies the percentage of CPU load per CPU worker. 0 means no CPU load, and 100 means full CPU load.int; range: 0 to 100; default value: 10.
workerswSpecifies the number of workers used to create CPU stress.int; default value: 1.
optionsoThe extended parameter of stress-ng, usually not configured.string; default value: "".

Example of simulating CPU stress​

chaosd attack stress cpu --workers 2 --load 10

The result is as follows:

[2021/05/12 03:38:33.698 +00:00] [INFO] [stress.go:66] ["stressors normalize"] [arguments=" --cpu 2 --cpu-load 10"]
[2021/05/12 03:38:33.702 +00:00] [INFO] [stress.go:82] ["Start stress-ng process successfully"] [command="/usr/bin/stress-ng --cpu 2 --cpu-load 10"] [Pid=27483]
Attack stress cpu successfully, uid: 4f33b2d4-aee6-43ca-9c43-0f12867e5c9c

Simulating memory stress​

Command of simulating memory stress​

To view the configuration items supported by the memory stress simulation, run the following command:

chaosd attack stress mem --help

The result is as follows:

continuously stress virtual memory out

Usage:
chaosd attack stress mem [options] [flags]

Flags:
-h, --help help for mem
-o, --options strings extend stress-ng options.
-s, --size string Size specifies N bytes consumed per vm worker, default is the total available memory. One can specify the size as % of total available memory or in units of B, KB/KiB, MB/MiB, GB/GiB, TB/TiB..
-w, --workers int Workers specifies N workers to apply the stressor. (default 1)

Global Flags:
--log-level string the log level of chaosd, the value can be 'debug', 'info', 'warn' and 'error'

Configuration description of simulating memory stress​

Configuration itemAbbreviationDescriptionValue
sizesSpecifies the size of memory per VM worker.the memory size in B, KB/KiB, MB/MiB, GB/GiB, TB/TiB. If the size is not set, all available memory is used by default.
workerswSpecify the number of workers used to create memory stress.int; default value: 1
optionsoThe extended parameter of stress-ng, usually not configured.string; default value: "".

Example of simulating memory stress​

chaosd attack stress mem --workers 2 --size 100M

The result is as follows:

[2021/05/12 03:37:19.643 +00:00] [INFO] [stress.go:66] ["stressors normalize"] [arguments=" --vm 2 --vm-keep --vm-bytes 100000000"]
[2021/05/12 03:37:19.654 +00:00] [INFO] [stress.go:82] ["Start stress-ng process successfully"] [command="/usr/bin/stress-ng --vm 2 --vm-keep --vm-bytes 100000000"] [Pid=26799]
Attack stress mem successfully, uid: c2bff2f5-3aac-4ace-b7a6-322946ae6f13

When running the experiment, you need to save the uid information of the experiment. When a stress simulation is not needed, you can use recover to terminate the uid-related experiment::

chaosd recover c2bff2f5-3aac-4ace-b7a6-322946ae6f13

The result is as follows:

Recover c2bff2f5-3aac-4ace-b7a6-322946ae6f13 successfully

Create stress experiments in service mode​

(To be added)