A multi-tier benchmark that allows fine-grained personalization of resource utilization. It is based on the Stress-ng benchmark.
Features:
- Several resource intensive tiers implemented, each with different characteristics.
- Network utilization in the communication with each tier is personalizable.
- Application can be execute with any tier configuration (1 to N-tiers).
- Addition of new resource intensive tiers is quite simple.
- It was built with the most recent technologies for development of multi-tier applications, including:
Current tiers implemented:
Application/Method | Class File | Parameters | Resource Intensive |
---|---|---|---|
Ackerman | ackerman.ts | m and n |
CPU |
Binary Search | binarySearch.ts | goal and Util.arraysLength |
Memory (random) and Cache |
Linear Search | linearSearch.ts | goal and Util.arraysLength |
Memory (sequential) and Cache |
Malloc | malloc.ts and malloc.c | bytes |
Memory |
Matrix | matrix.ts | matrixSize |
CPU, Memory and Cache |
Memory | memory.ts and memory.c | length |
Memory |
Pi | pi.ts | precision |
CPU |
Write Database | writeDatabase.ts | dbElementSize |
Disk Write |
ZLib | zlib.ts | textLength |
CPU, Memory and Cache |
Instalation:
Install the necessary dependencies:
Install all other project dependencies by running:
npm install
The server must be compiled:
npm run build
Then, it can be started:
npm run start [-- --DBdisabled]
It may also build and start in one command:
npm run buildAndStart [-- --DBdisabled]
The optional parameter -- --DBdisabled
may be used to disable the database. The server running this command does not need to have MongoDB installed.
Running tests:
Each route expects a POST request, where it accepts an optional parameter nextTiers
, which will make the connections between tiers.
This parameter must be in the body of the HTTP request, and should follow the example:
{ "nextTiers":
[
{ "url": "http://localhost:3000/TIER_ID2", "requestSize": 1000},
{ "url": "http://localhost:3000/TIER_ID3", "requestSize": 16000},
...,
{ "url": "http://localhost:3000/TIER_IDN", "requestSize": 128000}
]
}
nextTiers
is an array which contains the information about each tier that will be executed.- In this example, the TIER1 will make a request to TIER2 with 1000 bytes of request size. Then, TIER2 will make a request to TIER3 with 16KB of request size. This process ends whenever all tiers are called.
- Currently, it is not possible to a tier call more then one tier.