release2 03‐Using SeQaM - Smart-Edge-Lab/SeQaM GitHub Wiki
SeQaM offers multiple methods for users to interact with its functionalities. These methods enable the execution of commands and the management of experiments.
The primary method of interacting with SeQaM is through the web console, accessible via the web interface. Users can connect to SeQaM by accessing the console on port :8000
where the central components are deployed.
An experiment is a set of commands triggered at a certain point in time. Experiments are defined within the ExperimentConfig.json
file, which describes a series of commands as part of the experiment. Once configured, the experiment can be executed through the experiment dispatcher as a console command.
start_module module:experiment_dispatcher
For more detailed information on configuring experiments, please read more on Configuration files here.
Additionally, users can utilize the on-demand events feature for interacting with SeQaM. If you need to create SeQaM events based on some custom events your algorithm generates (e.g., triggering a CPU load when an application has just migrated to a new server), you will need to send an on-demand POST request to the command translator module with the command you would like to execute.
curl -X POST http://Central_IP_Address:8001/translate \
-H "Content-Type: text/plain" \
--data "cpu_load src_device_type:ue src_device_name:ue003 cores:0 load:90 time:60s"
In this way, you can implement your logic to determine what command to execute in SeQaM and when.
A command represents an action to perform in any of the SeQaM components (central, distributed, network). The commands can be triggered from the console or automatically invoked by the experiment dispatcher module.
The general syntax of a command is
action arg1-name:arg1-value arg2-name:arg2-value ... argN-name:argN-value
where any or all argN-value can be optionally quoted with single or double quotes; these optional quotes become mandatory if a value contains a whitespace.
Generates CPU load in a desired device like user equipment or server.
Action: cpu_load
cpu_load time:duration load:load-value src_device_type:src_device_type src_device_name:src_device_name
cores:number-of-cores comment:"any optional human-readable comment" mode:stress-mode random_seed:random-seed
load_min:load-min load_max:load-max load_step:load-step time_step:time-step
Argument | Description |
---|---|
time: |
Duration of the stress test. Must be suffixed with a time unit (s for seconds, m for minutes, h for hours). |
load: |
Stress level percentage as integer. Range [0-100] |
src_device_type: |
Type of the device to be stressed. Options include: ue , server
|
src_device_name: |
Name of the device to be stressed. Defined in ScenarioConfig.json
|
cores: |
Number of CPU cores to be used in the stress test. If the value is 0 , all cores will be utilized. |
Optional Arguments
Argument | Description |
---|---|
comment: |
A description or comment about the experiment action. |
mode: |
Stress mode type. Options include: stat (static, default), rand (random), inc (increasing), or dec (decreasing). |
random_seed: |
Integer used in rand mode to reproduce the same random load in subsequent experiments. |
load_min: |
Integer representing the minimum load value (defaults to 0). Used in inc and rand modes. dec mode will reduce load until this value is reached. |
load_max: |
Integer representing the maximum load value (defaults to 100). Used in dec and rand modes. inc mode will increase load until this value is reached. |
load_step: |
Integer (defaults to 1) representing the step value added in inc mode or subtracted in dec mode per iteration. |
time_step: |
Integer (defaults to 1) representing the duration of each iteration. Uses the same time unit as the time argument |
📝 Note:
- The
comment
argument can help attach descriptive text to the experiment action.- Ensure that the
duration
argument is suffixed with the appropriate time unit (s
,m
,h
).- Make sure the total time of the command matches the time-step x amount of steps when using
dec
orinc
modes
Example
cpu_load src_device_type:ue src_device_name:ue001 cores:5 load:20 time:60s
Generates a defined amount of traffic in a specific link in your network scenario. This method uses a client and a server that must be attached to both sides of the link you want to stress with network traffic.
network_load time:duration load:load-value src_device_type:src_device_type src_device_name:src_device_name
dst_device_type:dst_device_type dst_device_name:dst_device_name comment:"any optional human-readable comment"
mode:stress-mode random_seed:random-seed load_min:load-min load_max:load-max load_step:load-step time_step:time-step
Action: network_load
Argument | Description |
---|---|
time: |
Duration of the network load test. Must be suffixed with a time unit (s for seconds, m for minutes, h for hours). |
load: |
Stress level as integer. Range [0-100] |
src_device_type: |
Type of the sender source device. Options include: router
|
src_device_name: |
Name of the sender source device. Defined in ScenarioConfig.json
|
dst_device_type: |
Type of the receiver (destination) device. Options include: ue , server
|
dst_device_name: |
Name of the receiver (destination) device. Defined in ScenarioConfig.json
|
Optional Arguments
Argument | Description |
---|---|
comment: |
A description or comment about the action. |
mode: |
String to specify the stress mode. Options include: stat (static, default), rand (random), inc (increasing), or dec (decreasing). |
random_seed: |
Integer used in rand mode to reproduce the same random load in subsequent experiments. |
load_min: |
Integer representing the minimum load value (defaults to 0). Used in inc and rand modes. dec mode will reduce load until this value is reached. |
load_max: |
Integer representing the maximum load value (defaults to 100). Used in dec and rand modes. inc mode will increase load until this value is reached. |
load_step: |
Integer (defaults to 1) representing the step value added in inc mode or subtracted in dec mode per iteration. |
time_step: |
Integer (defaults to 1) representing the duration of each iteration. Uses the same time unit as the time argument |
interface: |
Name of the interface in the source device. |
Example
This syntax generates traffic from a source to a destination. Both devices should have implemented the network component.
network_load src_device_type:ue002 src_device_name:ue dst_device_type:server dst_device_name:srv102 load:50 time:5s
Action: memory_load
memory_load time:duration load:load-value src_device_type:src_device_type src_device_name:src_device_name
workers:number-of-workers comment:"any optional human-readable comment" mode:stress-mode random_seed:random-seed
load_min:load-min load_max:load-max load_step:load-step time_step:time-step
Argument | Description |
---|---|
time: |
Duration of the stress test. Must be suffixed with a time unit (s for seconds, m for minutes, h for hours). |
load: |
Memory load to apply in MegaBytes. |
src_device_type: |
Type of the device to be stressed. Options include: ue , server
|
src_device_name: |
Name of the device to be stressed. Defined in ScenarioConfig.json
|
workers: |
Number of worker porcess to be used in the stress test. |
Optional Arguments
Argument | Description |
---|---|
comment: |
A description or comment about the experiment action. |
mode: |
Stress mode type. Options include: stat (static, default), rand (random), inc (increasing), or dec (decreasing). |
random_seed: |
Integer used in rand mode to reproduce the same random load in subsequent experiments. |
load_min: |
Integer representing the minimum load value. Used in inc and rand modes. dec mode will reduce load until this value is reached. |
load_max: |
Integer representing the maximum load value. Used in dec and rand modes. inc mode will increase load until this value is reached. |
load_step: |
Integer (defaults to 1) representing the step value added in inc mode or subtracted in dec mode per iteration. |
time_step: |
Integer (defaults to 1) representing the duration of each iteration. Uses the same time unit as the time argument |
⚠️ Warning:
- Memory load, also will generate CPU load, due to the manner computers work.
- load argument in Memory load is in MB and not percentage
Example
memory_load src_device_type:ue src_device_name:ue001 workers:5 load:800 time:10s
This command launches the modules defined in the ModuleConfig.json
file, initiating their respective operations.
start_module module:module_name
Action: start_module
Argument | Description |
---|---|
module: |
provide a module name from the ModuleConfig.json file. |
Example
start_module module:experiment_dispatcher
⚠️ Warning: Only theexperiment_dispatcher
module is supported for now. Theexperiment_dispatcher
module triggers the execution of experiments defined in theExperimentConfig.json
file.*
This command exits the modules defined in the ModuleConfig.json
file, terminating their respective operations.
stop_module module:module_name
Action: stop_module
Argument | Description |
---|---|
module: |
provide a module name from the ModuleConfig.json file. |
Example
stop_module module:experiment_dispatcher