wrench::SimulationOutput
-
class SimulationOutput
A class that contains post-mortem simulation-generated data.
Public Functions
-
template<class T>
inline void addTimestamp(T *timestamp) Append a simulation timestamp to a simulation output trace.
- Template Parameters:
a – particular SimulationTimestampXXXX class (defined in SimulationTimestampTypes.h)
- Parameters:
timestamp – a pointer to a SimulationTimestampXXXX object
-
void addTimestampDiskReadCompletion(double date, const std::string &hostname, const std::string &mount, double bytes, int unique_sequence_number)
Add a file read completion timestamp.
- Parameters:
date – the date
hostname – hostname being read from
path – the path
bytes – number of bytes read
unique_sequence_number – an integer id
-
void addTimestampDiskReadFailure(double date, const std::string &hostname, const std::string &mount, double bytes, int unique_sequence_number)
Add a file read failure timestamp.
- Parameters:
date – the date
hostname – hostname being read from
path – the path
bytes – number of bytes read
unique_sequence_number – an integer id
-
void addTimestampDiskReadStart(double date, std::string hostname, std::string mount, double bytes, int unique_sequence_number)
Add a file read start timestamp.
- Parameters:
date – the date
hostname – hostname being read from
path – the path
bytes – number of bytes read
unique_sequence_number – an integer id
-
void addTimestampDiskWriteCompletion(double date, const std::string &hostname, const std::string &mount, double bytes, int unique_sequence_number)
Add a file write completion timestamp.
- Parameters:
date – the date
hostname – hostname being read from
path – the path
bytes – number of bytes read
unique_sequence_number – an integer id
-
void addTimestampDiskWriteFailure(double date, const std::string &hostname, const std::string &mount, double bytes, int unique_sequence_number)
Add a file write failure timestamp.
- Parameters:
date – the date
hostname – hostname being read from
path – the path
bytes – number of bytes read
unique_sequence_number – an integer id
-
void addTimestampDiskWriteStart(double date, std::string hostname, std::string mount, double bytes, int unique_sequence_number)
Add a file write start timestamp.
- Parameters:
date – the date
hostname – hostname being read from
path – the path
bytes – number of bytes read
unique_sequence_number – an integer id
-
void addTimestampEnergyConsumption(double date, const std::string &hostname, double joules)
Add an energy consumption timestamp.
- Parameters:
date – the date
hostname – a hostname
joules – consumption in joules
Add a file copy completion timestamp.
- Parameters:
date – the date
file – a workflow file
src – the source location
dst – the target location
Add a file copy failure timestamp.
- Parameters:
date – the date
file – a workflow file
src – the source location
dst – the target location
Add a file copy start timestamp.
- Parameters:
date – the date
file – a workflow file
src – the source location
dst – the target location
Add a file read completion timestamp.
- Parameters:
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);
Add a file read failure timestamp.
- Parameters:
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);
Add a file read start timestamp.
- Parameters:
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);
Add a file write completion timestamp.
- Parameters:
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);
Add a file write failure timestamp.
- Parameters:
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);
Add a file write start timestamp.
- Parameters:
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 addTimestampLinkUsage(double date, const std::string &linkname, double bytes_per_second)
Add a link usage timestamp.
- Parameters:
date – the date
linkname – a linkname
bytes_per_second – link usage in bytes_per_second
-
void addTimestampPstateSet(double date, const std::string &hostname, int pstate)
Add a pstate change/set timestamp.
- Parameters:
date – the date
hostname – a hostname
pstate – a pstate index
Add a task start completion.
- Parameters:
date – the date
task – a workflow task
Add a task start failure.
- Parameters:
date – the date
task – a workflow task
Add a task start timestamp.
- Parameters:
date – the date
task – a workflow task
Add a task start termination.
- Parameters:
date – the date
task – a workflow task
-
void dumpDiskOperationsJSON(const 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:
- Parameters:
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.
- Throws:
invalid_argument –
-
void dumpHostEnergyConsumptionJSON(const 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:
- Parameters:
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
- Throws:
std::invalid_argument –
std::runtime_error –
-
void dumpLinkUsageJSON(const 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.
- Parameters:
file_path – path where json file is written
writing_file – whether to write file to disk. Enabled by default.
- Throws:
std::invalid_argument –
std::runtime_error –
-
void dumpPlatformGraphJSON(const 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:
- Parameters:
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
- Throws:
std::invalid_argument –
Function that generates a unified JSON file containing the information specified by boolean arguments.
Any pieces not specified in the arguments are left out. For full structure see documentation of specific sections.
- Parameters:
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
Writes WorkflowTask execution history for each task to a file, formatted as a JSON array.
The JSON array has the following format:
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.
- Parameters:
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
- Throws:
std::invalid_argument –
Writes a JSON graph representation of the Workflow to a file, in the WfFormat format which is defined at: https://wfcommons.org/format.
Note that in the output JSON, the machines::cpu::speed is give as a GHz clock rate while in WRENCH core speeds are in Flop/sec. The GHz clock rate is computed by dividing the flop rate by 10^9 (so it’s not really a clock rate).
- Parameters:
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
- Throws:
std::invalid_argument –
-
void enableBandwidthTimestamps(bool enabled)
Enable or Disable the insertion of link-usage-related timestamps in the simulation output (enabled by default)
- Parameters:
enabled – true to enable, false to disable
-
void enableDiskTimestamps(bool enabled)
Enable or Disable the insertion of disk-related timestamps in the simulation output (enabled by default)
- Parameters:
enabled – true to enable, false to disable
-
void enableEnergyTimestamps(bool enabled)
Enable or Disable the insertion of energy-related timestamps in the simulation output (enabled by default)
- Parameters:
enabled – true to enable, false to disable
-
void enableFileReadWriteCopyTimestamps(bool enabled)
Enable or Disable the insertion of file-related timestamps in the simulation output (enabled by default)
- Parameters:
enabled – true to enable, false to disable
-
void enableWorkflowTaskTimestamps(bool enabled)
Enable or Disable the insertion of task-related timestamps in the simulation output (enabled by default)
- Parameters:
enabled – true to enable, false to disable
-
template<class T>
inline std::vector<SimulationTimestamp<T>*> getTrace() Retrieve a copy of a simulation output trace once the simulation has completed.
- Template Parameters:
a – particular SimulationTimestampXXXX class (defined in SimulationTimestampTypes.h)
- Returns:
a vector of pointers to SimulationTimestampXXXX instances
-
template<class T>