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}
]
}nextTiersis 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.