Ginpex/Metamodel

Aus SDQ-Wiki
Ginpex

Control Flow Tasks

Name Symbol Activity Diagram Syntax Description Attributes
SequenceTask SequenceTaskSymbol.gif SequenceTaskActivityDiagram.png Executes multiple nested task in a sequence. Nested tasks are ordered; a nested task is being executed once its predecessor task has been completed. nestedTasks: An ordered list of nested tasks.
ParallelTask ParallelTaskSymbol.gif / ParallelTaskProcessSymbol.gif ParallelTaskActivityDiagram.png Executes multiple nested task in parallel. nestedTasks: A list of nested tasks.

boolean stopAfterFirstTaskCompleted: Indicates whether the ParallelTask should stop once the first nested task has completed. Otherwise, the ParallelTask waits until all nested tasks have completed.
boolean useProcessInsteadOfThread: Indicates whether the task should execute the nested tasks in different OS processes. If set to false (default), threads are used.

LoopTask LoopTaskSymbol.gif LoopTaskActivityDiagram.png Executes a nested task multiple times. nestedTask: The nested task which has to be executed in a loop.

stopCondition: The stop condition is specified by one of the following model elements:

Name Symbol Description Attributes
FixedNumberOfIterationsReached FixedNumberOfIterationsReachedSymbol.gif Executes the loop for a specified number of iterations numberOfIterations: the number of iterations

randomized: An optional distribution that specifies a randomization of the number of iterations; see below (Distributions).

InternalTimesStable InternalTimesStableSymbol.gif Executes the loop until the response times of a nested task are stable, i.e. if the average response time lies in a specified confidence interval. taskForInternalTimes: The nested task whose response times are used for determining the stop condition.

confidence: The statistical confidence.

halfWidth: The half width of the confidence interval.

minimumNumberOfIterations: A minimum number of loop iterations that is to be executed independent from the stop criteria.

maximumNumberOfIterations: A maximum number of loop iterations that is to be executed, even if the stop criteria is not met.

InternalTimesChanged InternalTimesChangedSymbol.gif Executes the loop until there is a significant change in the measured response times of the nested task. numberOfLastTimesRegarded: a number indicating the number of previous iterations that should be taken into account when determining a difference in response times. A higher number means that the condition is more robust to outliers.

finalNumberOfIterationsToDo: Number of loop iterations to perform after detecting an internal times change before completing the loop.

boolean finalNumberOfIterationsToDoRandomized: Indicates whether the actual number of loop iterations to perform after detecting an internal times change before completing the loop is random. If set, this number is greater than 0 and lower than finalNumberOfIterationsToDo.

boolean resetFinalNumberOfIterationsIfInternalTimesChangedAgain: Indicates whether the final number of iterations to be executed is to be reset if the internal times change again a second time during the final number of iterations are executed.

maximumNumberOfIterations: A maximum number of loop iterations that is to be executed, even if the stop criteria is not met.

UserAbort UserAbortSymbol.gif Executes the loop until the user manually aborts execution.
EndlessLoop EndlessLoopSymbol.gif Executes the loop without a specific stop condition. Instead, the loop has to be aborted from outside. Endless loops can for example be used in a ParallelTask that aborts the loop after another nested task has been completed.
MachineTaskSet MachineTaskSetSymbol.gif MachineTaskSetActivityDiagram.png Executes a set of tasks on a specified machine. nestedTask: The root task to be executed on the machine.

MachineReference targetMachine: The machine on which the nested task is to be executed. MachineReference calibrationFilesFromDifferentMachine: If specified, nested task uses calibration files from this machine, instead of the calibration files from the target machine.

ForkTask ForkTaskSymbol.gif / ForkTaskProcessSymbol.gif ForkTaskActivityDiagram.png Executes a nested task in a newly forked thread or process. task: The nested task which has to be executed in a new process.

boolean waitForTheTaskToFinish: Indicates whether the ForkTask waits for the nested task to complete before completing himself. boolean useProcessInsteadOfThread: Indicates whether the task should execute the nested task in a child OS processes. If set to false (default), a thread is used.

DynamicMachineTaskSet DynamicMachineTaskSetSymbol.gif Datei:DynamicMachineTaskSetActivityDiagram.png Allows for Load Driver to dynamically register with the controller machine to receive tasks for execution. nestedTask: The root task to be executed on a load driver once he registers.

MachineReference calibrationFilesFromDifferentMachine: If specified, nested task uses calibration files from this machine, instead of the calibration files from the target machine. Not supported yet.

Resource Demand Tasks

Name Symbol Description Attributes
CpuLoadTask CpuLoadTaskSymbol.gif Executes CPU-bound load on the machine. duration: The amount of load that is to be executed is specified in duration in milliseconds. This attribute corresponds to the duration the load execution would take if executed without contention on the platform.

demand: the type of CPU load to be executed. The user can choose between FibonacciDemand, MandelbrotDemand, CalculatePrimesDemand (all CPU-related), SortArrayDemand (CPU/RAM-related), and WaitDemand (sleep)
randomized: An optional distribution that specifies a randomization of the amount of load; see below (Distributions).

DiskReadTask DiskReadTaskSymbol.gif Issues disk read load. Data is read from a large number of 10 MB large disk files, all containing random data. amount The amount of bytes to read.
DiskWriteTask DiskWriteTaskSymbol.gif Issues disk write load. Random data is written to a large number of 10 MB large disk files. amount The amount of bytes to write.
NetworkLoadTask NetworkLoadTaskSymbol.gif Issues network load by sending raw data to another machine. MachineReference targetMachine: The target machine to which load is to be sent to.

load: The amount of load to be sent in bytes.

IoTask IoTaskTaskSymbol.gif Performs a certain type of I/O on the machine. ioType: The type of I/O that should occur, e.g. HDD access, network resource access, semaphore access.

Additional Tasks

Name Symbol Description Attributes
StatusTask StatusTaskSymbol.gif Report the experiment status to the controller. This task can for example be used to report on the progress during long-running experiments.
ExecuteLibraryTask ExecuteLibraryTaskSymbol.gif Execute task logic that is provided by a jar library. This allows for executing task logic without extending the metamodel or code-generation templates. For more details, see Using external libraries for generating load libraryPath: Absolute path to the jar file on the controller machine. The jar file will be transferred to the Load Driver for execution.

className: The fully qualified class name which provides the task logic implementation.

WaitTask WaitTaskSymbol.gif Do nothing for the specified duration. duration: The wait duration in milliseconds.

Distributions

Name Symbol Description Attributes
UniformDistribution UniformDistributionSymbol.gif Use randomized values based on a uniform distribution. Currently none. Minimum value = 0; Maximum value = ValueToBeRandomized
NormalDistribution NormalDistributionSymbol.gif Use randomized values based on a normal distribution (Gaussian distribution). Currently none. Mu = ValueToBeRandomized; Sigma = ValueToBeRandomized
ExponentialDistribution ExponentialDistributionSymbol.gif Use randomized values based on an exponential distribution. Currently none. Lambda = ValueToBeRandomized

Sensors

Sensors are specified by means of the ProbeSpec metamodel. Editor shortcuts exist for convenient sensor creation and deletion.

Name Symbol Description
ResponseTimeSensor ResponseTimeSensorSymbol.gif / NestedResponseTimeSensorSymbol.gif (in a nested task) Measures the response time of a task execution by taking system time stamps before and after the task.
DemandedTimeSensor DemandedTimeSensorSymbol.gif / NestedDemandedTimeSensorSymbol.gif (in a nested task) For a task using random times, for example a random duration of a ResourceMeasurementTask, this sensor monitors the demanded (random) times.
CpuUtilizationSensor CpuUtilizationSensorSymbol.gif / NestedCpuUtilizationSensorSymbol.gif (in a nested task) Measures CPU utilization during a task in a parallel thread. 100% means all cores have been utilized. On a quad-core machine, 25% means that only one core has been fully utilized during the last measurement period, or multiple cores have been partly utilized, yielding an overall 25% utilization.

attribute waitTimeBetweenMeasurements (for ParallelRunningExternalLibrarySensor): indicates the wait time between taking sensor measurements.

UsedMemorySensor UsedMemorySensorSymbol.gif / NestedUsedMemorySensorSymbol.gif (in a nested task) Measures the used physical memory in percent during a task in a parallel thread. 100% means no free memory is available at the time of the measurement.

attribute waitTimeBetweenMeasurements (for ParallelRunningExternalLibrarySensor): indicates the wait time between taking sensor measurements.

ExternalLibrarySensor / ParallelRunningExternalLibrarySensor HddFreeSpaceDeltaSensorSymbol.gif / NestedHddFreeSpaceDeltaSensorSymbol.gif (in a nested task) Executes sensor logic that is provided by a jar library. This allows to execute sensor logic without extending the metamodel or code-generation templates.

attribute waitTimeBetweenMeasurements (for ParallelRunningExternalLibrarySensor): indicates the wait time between taking sensor measurements.