WRENCH
1.11
Cyberinfrastructure Simulation Workbench
|
Overview | Installation | Getting Started | WRENCH 101 | WRENCH 102 |
A class that contains post-mortem simulation-generated data. More...
#include <SimulationOutput.h>
Public Member Functions | |
template<class T > | |
void | addTimestamp (T *timestamp) |
Append a simulation timestamp to a simulation output trace. More... | |
void | addTimestampDiskReadCompletion (double date, std::string hostname, std::string mount, double bytes, int unique_sequence_number) |
Add a file read completion timestamp. More... | |
void | addTimestampDiskReadFailure (double date, std::string hostname, std::string mount, double bytes, int unique_sequence_number) |
Add a file read failure timestamp. More... | |
void | addTimestampDiskReadStart (double date, std::string hostname, std::string mount, double bytes, int unique_sequence_number) |
Add a file read start timestamp. More... | |
void | addTimestampDiskWriteCompletion (double date, std::string hostname, std::string mount, double bytes, int unique_sequence_number) |
Add a file write completion timestamp. More... | |
void | addTimestampDiskWriteFailure (double date, std::string hostname, std::string mount, double bytes, int unique_sequence_number) |
Add a file write failure timestamp. More... | |
void | addTimestampDiskWriteStart (double date, std::string hostname, std::string mount, double bytes, int unique_sequence_number) |
Add a file write start timestamp. More... | |
void | addTimestampEnergyConsumption (double date, std::string hostname, double joules) |
Add an energy consumption timestamp. More... | |
void | addTimestampFileCopyCompletion (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< FileLocation > dst) |
Add a file copy completion timestamp. More... | |
void | addTimestampFileCopyFailure (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< FileLocation > dst) |
Add a file copy failure timestamp. More... | |
void | addTimestampFileCopyStart (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< FileLocation > dst) |
Add a file copy start timestamp. More... | |
void | addTimestampFileReadCompletion (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< StorageService > service, std::shared_ptr< WorkflowTask >task=nullptr) |
Add a file read completion timestamp. More... | |
void | addTimestampFileReadFailure (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< StorageService > service, std::shared_ptr< WorkflowTask >task=nullptr) |
Add a file read failure timestamp. More... | |
void | addTimestampFileReadStart (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< StorageService > service, std::shared_ptr< WorkflowTask >task=nullptr) |
Add a file read start timestamp. More... | |
void | addTimestampFileWriteCompletion (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< StorageService > service, std::shared_ptr< WorkflowTask >task=nullptr) |
Add a file write completion timestamp. More... | |
void | addTimestampFileWriteFailure (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< StorageService > service, std::shared_ptr< WorkflowTask >task=nullptr) |
Add a file write failure timestamp. More... | |
void | addTimestampFileWriteStart (double date, std::shared_ptr< DataFile >file, std::shared_ptr< FileLocation > src, std::shared_ptr< StorageService > service, std::shared_ptr< WorkflowTask >task=nullptr) |
Add a file write start timestamp. More... | |
void | addTimestampLinkUsage (double date, std::string linkname, double bytes_per_second) |
Add a link usage timestamp. More... | |
void | addTimestampPstateSet (double date, std::string hostname, int pstate) |
Add a pstate change/set timestamp. More... | |
void | addTimestampTaskCompletion (double date, std::shared_ptr< WorkflowTask >task) |
Add a task start completion. More... | |
void | addTimestampTaskFailure (double date, std::shared_ptr< WorkflowTask >task) |
Add a task start failure. More... | |
void | addTimestampTaskStart (double date, std::shared_ptr< WorkflowTask >task) |
Add a task start timestamp. More... | |
void | addTimestampTaskTermination (double date, std::shared_ptr< WorkflowTask >task) |
Add a task start termination. More... | |
void | dumpDiskOperationsJSON (std::string file_path, bool writing_file=true) |
Writes a JSON file containing disk operation information as a JSON array. More... | |
void | dumpHostEnergyConsumptionJSON (std::string file_path, bool writing_file=true) |
Writes a JSON file containing host energy consumption information as a JSON array. More... | |
void | dumpLinkUsageJSON (std::string file_path, bool writing_file=true) |
void | dumpPlatformGraphJSON (std::string file_path, bool writing_file=true) |
Writes a JSON file containing all hosts, network links, and the routes between each host. More... | |
void | dumpUnifiedJSON (std::shared_ptr< Workflow > workflow, std::string file_path, bool include_platform=false, bool include_workflow_exec=true, bool include_workflow_graph=false, bool include_energy=false, bool generate_host_utilization_layout=false, bool include_disk=false, bool include_bandwidth=false) |
Function that generates a unified JSON file containing the information specified by boolean arguments. More... | |
void | dumpWorkflowExecutionJSON (std::shared_ptr< Workflow > workflow, std::string file_path, bool generate_host_utilization_layout=false, bool writing_file=true) |
Writes WorkflowTask execution history for each task to a file, formatted as a JSON array. More... | |
void | dumpWorkflowGraphJSON (std::shared_ptr< Workflow > workflow, std::string file_path, bool writing_file=true) |
Writes a JSON graph representation of the Workflow to a file. More... | |
void | enableBandwidthTimestamps (bool enabled) |
Enable or Disable the insertion of link-usage-related timestamps in the simulation output (enabled by default) More... | |
void | enableDiskTimestamps (bool enabled) |
Enable or Disable the insertion of disk-related timestamps in the simulation output (enabled by default) More... | |
void | enableEnergyTimestamps (bool enabled) |
Enable or Disable the insertion of energy-related timestamps in the simulation output (enabled by default) More... | |
void | enableFileReadWriteCopyTimestamps (bool enabled) |
Enable or Disable the insertion of file-related timestamps in the simulation output (enabled by default) More... | |
void | enableWorkflowTaskTimestamps (bool enabled) |
Enable or Disable the insertion of task-related timestamps in the simulation output (enabled by default) More... | |
template<class T > | |
std::vector< SimulationTimestamp< T > * > | getTrace () |
Retrieve a copy of a simulation output trace once the simulation has completed. More... | |
A class that contains post-mortem simulation-generated data.
|
inline |
Append a simulation timestamp to a simulation output trace.
a | particular SimulationTimestampXXXX class (defined in SimulationTimestampTypes.h) |
timestamp | a pointer to a SimulationTimestampXXXX object |
void wrench::SimulationOutput::addTimestampDiskReadCompletion | ( | double | date, |
std::string | hostname, | ||
std::string | mount, | ||
double | bytes, | ||
int | unique_sequence_number | ||
) |
Add a file read completion timestamp.
date | the date |
hostname | hostname being read from |
mount | mountpoint of disk |
bytes | number of bytes read |
unique_sequence_number | an integer id |
void wrench::SimulationOutput::addTimestampDiskReadFailure | ( | double | date, |
std::string | hostname, | ||
std::string | mount, | ||
double | bytes, | ||
int | unique_sequence_number | ||
) |
Add a file read failure timestamp.
date | the date |
hostname | hostname being read from |
mount | mountpoint of disk |
bytes | number of bytes read |
unique_sequence_number | an integer id |
void wrench::SimulationOutput::addTimestampDiskReadStart | ( | double | date, |
std::string | hostname, | ||
std::string | mount, | ||
double | bytes, | ||
int | unique_sequence_number | ||
) |
Add a file read start timestamp.
date | the date |
hostname | hostname being read from |
mount | mountpoint of disk |
bytes | number of bytes read |
unique_sequence_number | an integer id |
void wrench::SimulationOutput::addTimestampDiskWriteCompletion | ( | double | date, |
std::string | hostname, | ||
std::string | mount, | ||
double | bytes, | ||
int | unique_sequence_number | ||
) |
Add a file write completion timestamp.
date | the date |
hostname | hostname being read from |
mount | mountpoint of disk |
bytes | number of bytes read |
unique_sequence_number | an integer id |
void wrench::SimulationOutput::addTimestampDiskWriteFailure | ( | double | date, |
std::string | hostname, | ||
std::string | mount, | ||
double | bytes, | ||
int | unique_sequence_number | ||
) |
Add a file write failure timestamp.
date | the date |
hostname | hostname being read from |
mount | mountpoint of disk |
bytes | number of bytes read |
unique_sequence_number | an integer id |
void wrench::SimulationOutput::addTimestampDiskWriteStart | ( | double | date, |
std::string | hostname, | ||
std::string | mount, | ||
double | bytes, | ||
int | unique_sequence_number | ||
) |
Add a file write start timestamp.
date | the date |
hostname | hostname being read from |
mount | mountpoint of disk |
bytes | number of bytes read |
unique_sequence_number | an integer id |
void wrench::SimulationOutput::addTimestampEnergyConsumption | ( | double | date, |
std::string | hostname, | ||
double | joules | ||
) |
Add an energy consumption timestamp.
date | the date |
hostname | a hostname |
joules | consumption in joules |
void wrench::SimulationOutput::addTimestampFileCopyCompletion | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< FileLocation > | dst | ||
) |
Add a file copy completion timestamp.
date | the date |
file | a workflow file |
src | the source location |
dst | the target location |
void wrench::SimulationOutput::addTimestampFileCopyFailure | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< FileLocation > | dst | ||
) |
Add a file copy failure timestamp.
date | the date |
file | a workflow file |
src | the source location |
dst | the target location |
void wrench::SimulationOutput::addTimestampFileCopyStart | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< FileLocation > | dst | ||
) |
Add a file copy start timestamp.
date | the date |
file | a workflow file |
src | the source location |
dst | the target location |
void wrench::SimulationOutput::addTimestampFileReadCompletion | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< StorageService > | service, | ||
std::shared_ptr< WorkflowTask > | task = nullptr |
||
) |
Add a file read completion timestamp.
date | the date |
file | a workflow file |
src | the source location |
service | the source storage service |
task | the workflow task for which this read is done (or nullptr); |
void wrench::SimulationOutput::addTimestampFileReadFailure | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< StorageService > | service, | ||
std::shared_ptr< WorkflowTask > | task = nullptr |
||
) |
Add a file read failure timestamp.
date | the date |
file | a workflow file |
src | the source location |
service | the source storage service |
task | the workflow task for which this read is done (or nullptr); |
void wrench::SimulationOutput::addTimestampFileReadStart | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< StorageService > | service, | ||
std::shared_ptr< WorkflowTask > | task = nullptr |
||
) |
Add a file read start timestamp.
date | the date |
file | a workflow file |
src | the source location |
service | the source storage service |
task | the workflow task for which this read is done (or nullptr); |
void wrench::SimulationOutput::addTimestampFileWriteCompletion | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< StorageService > | service, | ||
std::shared_ptr< WorkflowTask > | task = nullptr |
||
) |
Add a file write completion timestamp.
date | the date |
file | a workflow file |
src | the target location |
service | the target storage service |
task | the workflow task for which this write is done (or nullptr); |
void wrench::SimulationOutput::addTimestampFileWriteFailure | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< StorageService > | service, | ||
std::shared_ptr< WorkflowTask > | task = nullptr |
||
) |
Add a file write failure timestamp.
date | the date |
file | a workflow file |
src | the target location |
service | the target storage service |
task | the workflow task for which this write is done (or nullptr); |
void wrench::SimulationOutput::addTimestampFileWriteStart | ( | double | date, |
std::shared_ptr< DataFile > | file, | ||
std::shared_ptr< FileLocation > | src, | ||
std::shared_ptr< StorageService > | service, | ||
std::shared_ptr< WorkflowTask > | task = nullptr |
||
) |
Add a file write start timestamp.
date | the date |
file | a workflow file |
src | the target location |
service | the target storage service |
task | the workflow task for which this write is done (or nullptr); |
void wrench::SimulationOutput::addTimestampLinkUsage | ( | double | date, |
std::string | linkname, | ||
double | bytes_per_second | ||
) |
Add a link usage timestamp.
date | the date |
linkname | a linkname |
bytes_per_second | link usage in bytes_per_second |
void wrench::SimulationOutput::addTimestampPstateSet | ( | double | date, |
std::string | hostname, | ||
int | pstate | ||
) |
Add a pstate change/set timestamp.
date | the date |
hostname | a hostname |
pstate | a pstate index |
void wrench::SimulationOutput::addTimestampTaskCompletion | ( | double | date, |
std::shared_ptr< WorkflowTask > | task | ||
) |
Add a task start completion.
date | the date |
task | a workflow task |
void wrench::SimulationOutput::addTimestampTaskFailure | ( | double | date, |
std::shared_ptr< WorkflowTask > | task | ||
) |
Add a task start failure.
date | the date |
task | a workflow task |
void wrench::SimulationOutput::addTimestampTaskStart | ( | double | date, |
std::shared_ptr< WorkflowTask > | task | ||
) |
Add a task start timestamp.
date | the date |
task | a workflow task |
void wrench::SimulationOutput::addTimestampTaskTermination | ( | double | date, |
std::shared_ptr< WorkflowTask > | task | ||
) |
Add a task start termination.
date | the date |
task | a workflow task |
void wrench::SimulationOutput::dumpDiskOperationsJSON | ( | std::string | file_path, |
bool | writing_file = true |
||
) |
Writes a JSON file containing disk operation information as a JSON array.
>>>>>NOTE<<<<< The timestamps the JSON is generated from are disabled by default. Enable them with SimulationOutput::enableDiskTimestamps() to use.
The JSON array has the following format:
{ "disk_operations": { "io_host": { <--- Hostname "/": { <--- Mount "reads": [ { "bytes": <double>, "end": <double>, "failed": <double>, "start": <double> }, { ... } ], "writes": [ { "bytes": <double>, "end": <double>, "failed": <double>, "start": <double> }, { ... } ] } } } }
file_path | - path to save JSON at |
writing_file | - boolean, default true, to write the JSON to the specified file path. Used for unified output. |
invalid_argument |
void wrench::SimulationOutput::dumpHostEnergyConsumptionJSON | ( | std::string | file_path, |
bool | writing_file = true |
||
) |
Writes a JSON file containing host energy consumption information as a JSON array.
The JSON array has the following format:
{ "energy_consumption": { { hostname: <string>, pstates: [ { pstate: <int>, idle: <double>, epsilon: <double>, all_cores: <double>, speed: <double> }, { pstate: <int>, idle: <double>, epsilon: <double>, all_cores: <double>, speed: <double> } ... ], watts_off: <double>, pstate_trace: [ { time: <double>, pstate: <int> }, ... ], consumed_energy_trace: [ { time: <double>, joules: <double> }, ... ] }, ... }
file_path | the path to write the file |
writing_file | whether or not the file is written, true by default but will be false when utilized as part of dumpUnifiedJSON |
std::invalid_argument | |
std::runtime_error |
void wrench::SimulationOutput::dumpLinkUsageJSON | ( | std::string | file_path, |
bool | writing_file = true |
||
) |
Writes a JSON file containing link usage information as a JSON array.
This information will not be generated without using the bandwidth meter service and providing it with linknames to monitor.
{ "link_usage": { "links": [ { "link_usage_trace": [ { "bytes per second": <double>, "time": <double> }, { ... }, ], "linkname": <string> }, { ... } ] } }
file_path | path where json file is written |
writing_file | whether to write file to disk. Enabled by default. |
std::invalid_argument | |
std::runtime_error |
void wrench::SimulationOutput::dumpPlatformGraphJSON | ( | std::string | file_path, |
bool | writing_file = true |
||
) |
Writes a JSON file containing all hosts, network links, and the routes between each host.
The JSON array has the following format:
{ "platform":{ vertices: [ { type: <"host">, id: <string>, flop_rate: <double (flops per second)>, memory_manager_service: <double (bytes)>, cores: <unsigned_long> }, { type: <"link">, id: <string>, bandwidth: <double (bytes per second)>, latency: <double (in seconds)> }, . . . ], edges: [ { source: { type: <string>, id: <string> } target: { type: <string>, id: <string> } }, . . . ], routes: [ { source: <string>, target: <string>, latency: <double (in seconds)> route: [ link_id, ... ] } ], } }
file_path | the path to write the file |
writing_file | whether or not the file is written, true by default but will be false when utilized as part of dumpUnifiedJSON |
std::invalid_argument |
void wrench::SimulationOutput::dumpUnifiedJSON | ( | std::shared_ptr< Workflow > | workflow, |
std::string | file_path, | ||
bool | include_platform = false , |
||
bool | include_workflow_exec = true , |
||
bool | include_workflow_graph = false , |
||
bool | include_energy = false , |
||
bool | generate_host_utilization_layout = false , |
||
bool | include_disk = false , |
||
bool | include_bandwidth = false |
||
) |
Function that generates a unified JSON file containing the information specified by boolean arguments.
JSON Structure: { "disk_operations": { ... }, "energy_consumption": { ... }, "link_usage": { ... }, "platform": { ... }, "workflow_execution": { ... }, "workflow_graph": { ... } } *
Any pieces not specified in the arguments are left out. For full structure see documentation of specific sections.
workflow | a pointer to the Workflow |
file_path | path for generated JSON |
include_platform | boolean whether to include platform in JSON |
include_workflow_exec | boolean whether to include workflow execution in JSON |
include_workflow_graph | boolean whether to include workflow graph in JSON |
include_energy | boolean whether to include energy consumption in JSON |
generate_host_utilization_layout | boolean specifying whether or not you would like a possible host utilization layout to be generated |
include_disk | boolean specifying whether to include disk operation in JSON (disk timestamps must be enabled) |
include_bandwidth | boolean specifying whether to include link bandwidth measurements in JSON |
void wrench::SimulationOutput::dumpWorkflowExecutionJSON | ( | std::shared_ptr< Workflow > | workflow, |
std::string | file_path, | ||
bool | generate_host_utilization_layout = false , |
||
bool | writing_file = true |
||
) |
Writes WorkflowTask execution history for each task to a file, formatted as a JSON array.
The JSON array has the following format:
{ "workflow_execution": { "tasks": [ { "compute": { "end": <double>, "start": <double> }, "execution_host": { "cores": <unsigned_long>, "flop_rate": <double>, "hostname": <string>, "memory_manager_service": <double> }, "failed": <double>, "num_cores_allocated": <unsigned_long>, "read": [ { "end": <double>, "start": <double> }, { ... } ], "task_id": <string>, "color": <string>, "terminated": <double>, "whole_task": { "end": <double>, "start": <double> }, "write": [ { "end": <double>, "start": <double> }, { ... } ], }, { ... } ] } }
If generate_host_utilization_layout is set to true, a recursive function searches for a possible host utilization layout where tasks are assumed to use contiguous numbers of cores on their execution hosts. Note that each ComputeService does not enforce this, and such a layout may not exist for some workflow executions. In this situation, the function will go through the entire search space until all possible layouts are evaluated. For a large Workflow, this may take a very long time.
If a host utilization layout is able to be generated, the 'vertical_position' values will be set for each task run, and the task can be plotted as a rectangle on a graph where the y-axis denotes the number of cores - 1, and the x-axis denotes the workflow execution timeline. The vertical_position specifies the bottom of the rectangle. num_cores_allocated specifies the height of the rectangle.
workflow | a pointer to the Workflow |
file_path | the path to write the file |
generate_host_utilization_layout | boolean specifying whether or not you would like a possible host utilization layout to be generated |
writing_file | whether or not the file is written, true by default but will be false when utilized as part of dumpUnifiedJSON |
std::invalid_argument |
void wrench::SimulationOutput::dumpWorkflowGraphJSON | ( | std::shared_ptr< Workflow > | workflow, |
std::string | file_path, | ||
bool | writing_file = true |
||
) |
Writes a JSON graph representation of the Workflow to a file.
A node is added for each WorkflowTask and DataFile. A WorkflowTask will have the type "task" and a DataFile will have the type "file". A directed link is added for each dependency in the Workflow.
{ "workflow_graph": { vertices: [ { type: <"task">, id: <string>, flops: <double>, min_cores: <unsigned_long>, max_cores: <unsigned_long>, memory_manager_service: <double>, }, { type: <"file">, id: <string>, size: <double> }, . . . ], edges: [ { source: <string>, target: <string> }, . . . ] } }
workflow | a pointer to the workflow |
file_path | the path to write the file |
writing_file | whether or not the file is written, true by default but will be false when utilized as part of dumpUnifiedJSON |
std::invalid_argument |
void wrench::SimulationOutput::enableBandwidthTimestamps | ( | bool | enabled | ) |
Enable or Disable the insertion of link-usage-related timestamps in the simulation output (enabled by default)
enabled | true to enable, false to disable |
void wrench::SimulationOutput::enableDiskTimestamps | ( | bool | enabled | ) |
Enable or Disable the insertion of disk-related timestamps in the simulation output (enabled by default)
enabled | true to enable, false to disable |
void wrench::SimulationOutput::enableEnergyTimestamps | ( | bool | enabled | ) |
Enable or Disable the insertion of energy-related timestamps in the simulation output (enabled by default)
enabled | true to enable, false to disable |
void wrench::SimulationOutput::enableFileReadWriteCopyTimestamps | ( | bool | enabled | ) |
Enable or Disable the insertion of file-related timestamps in the simulation output (enabled by default)
enabled | true to enable, false to disable |
void wrench::SimulationOutput::enableWorkflowTaskTimestamps | ( | bool | enabled | ) |
Enable or Disable the insertion of task-related timestamps in the simulation output (enabled by default)
enabled | true to enable, false to disable |
|
inline |
Retrieve a copy of a simulation output trace once the simulation has completed.
a | particular SimulationTimestampXXXX class (defined in SimulationTimestampTypes.h) |