Load Test Output
In this tutorial, we will show you how to use Neocortix Cloud Services Scalable Compute to run a distributed LoadTest batch job, using a k6 client, in a framework where you can easily substitute your own LoadTest client.
First, please follow the steps in the tutorial Setting Up For Batch Jobs. After completion of the initial setup, you will have a directory with examples,
~/ncsexamples
.

Building the K6 Binary Executable for Arm (aarch64)

To build the aarch64 Binary Executable
k6
, please follow these steps. First, please install the Go compiler tools for your machine, from https://golang.org/doc/install. Then please execute these commands:
cd ~/ncsexamples/batchMode GOARCH=arm64 GOOS=linux GOPATH=$PWD/go go get go.k6.io/k6 cp -p go/bin/linux_arm64/k6 k6Worker tar -czf k6Worker/k6.tar.gz k6Worker/k6 rm k6Worker/k6
Now you will have the compressed binary executable file
~/ncsexamples/batchMode/k6Worker/k6.tar.gz
, ready to send to the workers.
In the subdirectory
~/ncsexamples/batchMode
you will find the runBatchK6.py command. This script will create a set of instances running on mobile devices, one instance for each load generator. In the default example provided, we ask for 6 successful instances:
startFrame = 1, endFrame = 6, nWorkers = 10,
By setting
nWorkers = 10
, we slightly over-allocate instances to allow for some fraction to fail.
It will command the instances to install k6, and then run k6 with a short (90 seconds) and simple test script
./k6Worker/script.js
to send http requests to the target URL (currently
https://loadtest-target.neocortix.com
).
def frameCmd( self, frameNum ): cmd = 'cd k6Worker && ./k6 run -q script.js --out csv=~/worker_%03d.csv' % ( frameNum ) return cmd
The output of each instance will be a .csv file
worker_<n>.csv
containing request response timing information for each worker. The master will create several image files
worldMap.png
,
deliveredLoad.png
,
responseTimesByRegion.png
, and then terminate the instances.

Example Command

Simply run
python3 ./runBatchK6.py
When the program is done, the output files
worker_<n>.csv
,
worldMap.png
,
deliveredLoad.png
,
responseTimesByRegion.png
, will be put in a directory
./data/k6_<datestamp>

Running a Longer Ramped Load Test

To run a longer ramped k6 load test, for 500 seconds with 30 devices, please edit
runBatchK6.py
and set
timeLimit = 80*60, instTimeLimit = 14*60, frameTimeLimit = 14*60, endFrame = 30, nWorkers = 54
, and then in the
FrameCmd
please replace
script.js
with
script_ramp.js
, and re-run
python3 ./runBatchK6.py
Here are example outputs:
Load Test Output
Load Test Output
Load Test Output