Beamchmark (Beamchmark v0.1.1) View Source
Top level module providing Beamchmark.run
API.
Beamchmark
measures EVM performance while it is running user Beamchmark.Scenario
.
Metrics being measured
Scheduler Utilization
At the moment, the main interest of Beamchmark
is scheduler utilization which tells
how much given scheduler was busy.
Scheduler is busy when:
- Executing process code
- Executing linked-in driver or NIF code
- Executing BIFs, or any other runtime handling
- Garbage collecting
- Handling any other memory management
Scheduler utilization is measured using Erlang's :scheduler
module which uses :erlang.statistics/1
under the hood and it is represented as a floating point value between 0.0 and 1.0 and percent.
Beamchmark
measures following types of scheduler utilization:
- normal/cpu/io - average utilization of single scheduler of given type
- total normal/cpu/io - average utilization of all schedulers of given type. E.g total normal equals 1.0 when each of normal schedulers have been acive all the time
- total - average utilization of all schedulers
- weighted - average utilization of all schedulers weighted against maximum amount of available CPU time
For more information please refer to :erlang.statistics/1
(under :scheduler_wall_time
) or :scheduler.utilization/1
.
Other
Other metrics being measured:
- reductions - total reductions number
- context switches - total context switches number
Link to this section Summary
Types
Configuration for Beamchmark
.
Functions
Runs scenario and benchmarks EVM performance.
Link to this section Types
Specs
options_t() :: [ duration: pos_integer(), delay: non_neg_integer(), output_dir: Path.t() ]
Configuration for Beamchmark
.
- duration - time in seconds
Beamchmark
will be benchmarking EVM. Defaults to 60 seconds. - delay - time in seconds
Beamchmark
will wait after running scenario and before starting benchmarking. - output_dir - directory where results of benchmarking will be saved.
Link to this section Functions
Specs
run(Beamchmark.Scenario, options_t()) :: :ok
Runs scenario and benchmarks EVM performance.
Subsequent invocation of this function will also compare results with the previous ones.