Skip to content
Augusto Amarilla edited this page Jan 30, 2018 · 3 revisions

Welcome to the workload-trace-generator wiki!

JSON Configuration Input:

The Trace Workload generator uses a JSON configuration file as input passed as an argument to the JAR when it is executed.

The following shows the root fields of the configuration JSON structure and the simple object types that applies. The details of each field is explained in the next block.

{
    "scenarioStartTime": [integer],
    "scenarioEndTime": [integer],
    "numberOfServices": [integer],
    "maxNumberOfVMPerService": [integer],
    "revenueCPU": [float],
    "revenueRAM": [float],
    "revenueNET": [float],
    "instanceTypesFileLocation": [fileLocation],
    "outputFileLocation": [fileLocation],
    "staticServiceGeneration": [boolean],
    "horizontalElasticityConfiguration": [distributionFunction],
    "verticalElasticityConfiguration": [distributionFunction],
    "serverOverbookingConfiguration": [distributionFunction],
    "networkOverbookingConfiguration": [distributionFunction]
}

Field Details

Workload Simulation Time configuration

The workload uses two parameters to establish the starting time unit and ending time unit.

scenarioStartTime: positive integer.

scenarioEndTime: positive integer. Must be bigger than the scenarioStartTime.

Services and VM configuration

The number of VMs that will be simulated can be divided into Cloud Service groups. That means, a Service has a maximum number of VMs associated to it at any time of the simulation.

numberOfServices: positive integer

maxNumberOfVMPerService: positive integer

Obs: If a fixed number of VMs is required, then it is recommended to configure the simulator with only one service, the fixed amount of VMs as the maximum number of VMs per Service and the Horizontal Elasticity Configuration to be a Uniform distribution with a floor and ceiling equal to the fixed amount of VMs per Service.

Revenue configuration

In order to simulate dynamic revenue the simulator uses three parameters, one for each resource that can be simulated. The revenue a VM can create in a specific time t for the datacenter administrators is the multiplication between the revenue value and the resource unit associated to the VM at time t.

revenueCPU: a positive float that represents the revenue value of a single CPU unit.

revenueRAM: a positive float that represents the revenue value of a single RAM unit.

revenueNET: a positive float that represents the revenue value of a single NET unit.

VM Type configuration

The generator takes as input a file that determines VM types. A VM type defines the tuple of resource values associated to each resource type CPU, RAM and NET. The VM types can change in time according to the Vertical Elasticity configuration.

instanceTypesFileLocation: an existing file location

Workload output file

Defines the output file in which the generated workload trace will be written in. It is required that the file exists or the generator will fail.

outputFileLocation: an existing file location

Services' Lifespan configuration

The Services have a starting and ending time that can be generated statically or dynamically. If the Service lifespan is generated statically then the starting time and ending time of all of the Services in the simulation will be the scenarioStartTime and scenarioEndTime respectively. If the Service lifespan is generated dynamically then a Uniform Distribution Function with scenarioStartTime and scenarioEndTime as floor and ceiling respectively.

staticServiceGeneration: true if the service's lifespan must be statically generated, false if it must be dynamically generated.

Horizontal Elasticity Configuration

Is a Distribution Function that determines the amount of VMs associated to a specific Service at a specific time t of the simulation.

horizontalElasticityConfiguration: a distribution function definition.

If a Uniform distribution is used the values floor must be a positive number and the ceiling must be a number smaller than the maxNumberOfVMPerService. If a Poisson distribution is used the lambda value must be smaller than the maxNumberOfVMPerService.

Obs.: At the moment, two distribution functions are supported, Uniform and Poisson. The details of each are explained in the next section.

Vertical Elasticity Configuration

Is a Distribution Function that determines the VM type associated to a specific VM at a specific time t of the simulation. It is used to simulate the increase or decrease of VM requested resources.

verticalElasticityConfiguration: a distribution function definition.

The number of the ceiling or lambda values defined in the Uniform and Poisson distribution functions respectively must be smaller than the amount of VM types defined in the VM Type configuration file instanceTypesFileLocation.

Resources Utilization Configuration

The generator uses this two Distribution Functions to simulate the utilization of VM requested resources. The Server configuration rules over the CPU and RAM resources, and the Network configuration rules over the NET resource.

serverOverbookingConfiguration: a distribution function definition.

networkOverbookingConfiguration: a distribution function definition.

In both cases, if a Uniform distribution is used the values floor must be a positive number and the ceiling a number must be smaller than a 100. If a Poisson distribution is used the lambda value must be smaller than a 100F.


Distribution Function Definitions:

Uniform:

{
    "distributionType": "UNIFORM",
    "floor": 100,
    "ceiling": 100
}

Poisson:

{
    "distributionType": "POISSON",
    "lambda": "70F"
}

Example:

{
    "scenarioStartTime": 1,
    "scenarioEndTime": 100,
    "numberOfServices": 1,
    "maxNumberOfVMPerService": 100,
    "revenueCPU": "0.01F",
    "revenueRAM": "0.002F",
    "revenueNET": "0.0004F",
    "instanceTypesFileLocation": "input/instanceTypesDahmani.csv",
    "outputFileLocation": "output/outputDahmani.csv",
    "staticServiceGeneration": true,
    "horizontalElasticityConfiguration": {
        "distributionType": "UNIFORM",
        "floor": 100,
        "ceiling": 100
    },
    "verticalElasticityConfiguration": {
        "distributionType": "POISSON",
        "lambda": "70F"
    },
    "serverOverbookingConfiguration": {
        "distributionType": "POISSON",
        "lambda": "70F"
    },
    "networkOverbookingConfiguration": {
        "distributionType": "POISSON",
        "lambda": "70F"
    }
}