Skip to content

Multi-tier benchmark which supports the execution of different tiers configurations.

Notifications You must be signed in to change notification settings

weimch/node-tiers

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Node-tiers: A multi-tier benchmark

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.

About

Multi-tier benchmark which supports the execution of different tiers configurations.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 86.1%
  • C 11.3%
  • JavaScript 2.6%