wrench Namespace Reference

Classes

class  AmdahlParallelModel
 A class that defines an Amdahl's Law-based parallel task performance model. More...
 
class  BandwidthMeterService
 A service that measures and records bandwidth usage on a set of links at regular time intervals. More...
 
class  BareMetalComputeService
 A compute service that manages a set of multi-core compute hosts and provides access to their resources. More...
 
class  BareMetalComputeServiceMessagePayload
 Configurable message payloads for a MultiHostMulticoreComputeService. More...
 
class  BareMetalComputeServiceProperty
 Configurable properties for a bare_metal. More...
 
class  BatchComputeService
 A batch-scheduled compute service that manages a set of compute hosts and controls access to their resource via a batch queue. More...
 
class  BatchComputeServiceMessagePayload
 Configurable message payloads for a batch. More...
 
class  BatchComputeServiceProperty
 Configurable properties for a BatchComputeService. More...
 
class  CloudComputeService
 A cloud-based compute service that manages a set of physical hosts and controls access to their resources by (transparently) executing jobs in VM instances. More...
 
class  CloudComputeServiceMessagePayload
 Configurable message payloads for a CloudService. More...
 
class  CloudComputeServiceProperty
 Configurable properties for a CloudComputeService. More...
 
class  ComputeService
 The compute service base class. More...
 
class  ComputeServiceMessagePayload
 Configurable message payloads for a ComputeService. More...
 
class  ComputeServiceProperty
 Configurable properties for a ComputeService. More...
 
class  ConstantEfficiencyParallelModel
 A class the implemens a constant-efficiency parallel task performance model. More...
 
class  CustomParallelModel
 A class that defines a custom parallel task performance model. More...
 
class  EnergyMeterService
 A service that measures and records energy consumption on a set of hosts at regular time intervals. More...
 
class  FileRegistryService
 A file registry service (a.k.a. replica catalog) that holds a database of which files are available at which storage services. Specifically, the database holds a set of <file, storage service> entries. A WMS can add, lookup, and remove entries at will from this database. More...
 
class  FileRegistryServiceMessagePayload
 Configurable message payload for a FileRegistryService. More...
 
class  FileRegistryServiceProperty
 Configurable properties for a FileRegistryService. More...
 
class  HTCondorCentralManagerService
 A HTCondor central manager service implementation. More...
 
class  HTCondorCentralManagerServiceMessagePayload
 Configurable message payloads for an HTCondor Central Manager service. More...
 
class  HTCondorComputeService
 A workload management framework compute service. More...
 
class  HTCondorComputeServiceMessagePayload
 Configurable message payloads for an htcondor. More...
 
class  HTCondorComputeServiceProperty
 Properties for an HTCondor service. More...
 
class  NetworkProximityService
 A network proximity service that continuously estimates inter-host latencies and can be queried for such estimates. More...
 
class  NetworkProximityServiceMessagePayload
 Configurable message payloads for a NetworkProximityService. More...
 
class  NetworkProximityServiceProperty
 Configurable properties for a NetworkProximityService. More...
 
class  ParallelModel
 A virtual class (with convenient static methods) to define parallel task performance models. More...
 
class  PegasusWorkflowParser
 A class that implement methods to read workflow files provided by the Pegasus project. More...
 
class  PilotJobScheduler
 A (mostly virtual) base class for implementing PilotJob scheduling algorithms to be used by a WMS. More...
 
class  Service
 A service that can be added to the simulation and that can be used by a WMS when executing a workflow. More...
 
class  ServiceMessagePayload
 Configurable message payloads for a Service. More...
 
class  ServiceProperty
 Configurable properties for a Service. More...
 
class  SimpleStorageService
 A storage service that provides direct access to some storage resources (e.g., one or more disks). An important (configurable) property of the storage service is SimpleStorageServiceProperty::BUFFER_SIZE (see documentation thereof), which defines the buffer size that the storage service uses. Specifically, when the storage service receives/sends data from/to the network, it does so in a loop over data "chunks", with pipelined network and disk I/O operations. The smaller the buffer size the more "fluid" the model, but the more time-consuming the simulation. A large buffer size, however, may lead to less realistic simulations. At the extreme, an infinite buffer size would correspond to fully sequential executions (first a network receive/send, and then a disk write/read). Setting the buffer size to "0" corresponds to a fully fluid model in which individual data chunk operations are not simulated, thus achieving both accuracy (unless one specifically wishes to study the effects of buffering) and quick simulation times. For now, setting the buffer size to "0" is not implemented. The default buffer size is 10 MiB (note that the user can always declare a disk with arbitrary bandwidth in the platform description XML). More...
 
class  SimpleStorageServiceMessagePayload
 Configurable message payloads for a SimpleStorageService. More...
 
class  SimpleStorageServiceProperty
 Configurable properties for a SimpleStorageService. More...
 
class  Simulation
 A class that provides basic simulation methods. Once the simulation object has been explicitly or implicitly destroyed, then any call to the WRENCH APIs has undefied behavior (due to memory_manager_service being de-allocated). More...
 
class  SimulationOutput
 A class that contains post-mortem simulation-generated data. More...
 
class  SimulationTimestamp
 A time-stamped simulation event stored in SimulationOutput. More...
 
class  SimulationTimestampDiskRead
 A base class for simulation timestamps regarding disk reads. More...
 
class  SimulationTimestampDiskReadCompletion
 A simulation timestamp class for disk read completions. More...
 
class  SimulationTimestampDiskReadFailure
 A simulation timestamp class for disk read failure times. More...
 
class  SimulationTimestampDiskReadStart
 A simulation timestamp class for disk read start times. More...
 
class  SimulationTimestampDiskWrite
 A base class for simulation timestamps regarding disk writes. More...
 
class  SimulationTimestampDiskWriteCompletion
 A simulation timestamp class for disk write completions. More...
 
class  SimulationTimestampDiskWriteFailure
 A simulation timestamp class for disk write failure times. More...
 
class  SimulationTimestampDiskWriteStart
 A simulation timestamp class for disk write start times. More...
 
class  SimulationTimestampEnergyConsumption
 A simulation timestamp class for energy consumption. More...
 
class  SimulationTimestampFileCopy
 A base class for simulation timestamps regarding file copies. More...
 
class  SimulationTimestampFileCopyCompletion
 A simulation timestamp class for file copy completions. More...
 
class  SimulationTimestampFileCopyFailure
 A simulation timestamp class for file copy failure times. More...
 
class  SimulationTimestampFileCopyStart
 A simulation timestamp class for file copy start times. More...
 
class  SimulationTimestampFileRead
 A base class for simulation timestamps regarding file reads. More...
 
class  SimulationTimestampFileReadCompletion
 A simulation timestamp class for file read completions. More...
 
class  SimulationTimestampFileReadFailure
 A simulation timestamp class for file read failure times. More...
 
class  SimulationTimestampFileReadStart
 A simulation timestamp class for file read start times. More...
 
class  SimulationTimestampFileWrite
 A base class for simulation timestamps regarding file writes. More...
 
class  SimulationTimestampFileWriteCompletion
 A simulation timestamp class for file write completions. More...
 
class  SimulationTimestampFileWriteFailure
 A simulation timestamp class for file write failure times. More...
 
class  SimulationTimestampFileWriteStart
 A simulation timestamp class for file write start times. More...
 
class  SimulationTimestampLinkUsage
 A simulation timestamp class for link usage. More...
 
class  SimulationTimestampPair
 A base class for simulation timestamps. More...
 
class  SimulationTimestampPstateSet
 A simulation timestamp class for changes in a host's pstate. More...
 
class  SimulationTimestampTask
 A base class for simulation timestamps regarding workflow tasks. More...
 
class  SimulationTimestampTaskCompletion
 A simulation timestamp class for WorkflowTask completion times. More...
 
class  SimulationTimestampTaskFailure
 A simulation timestamp class for WorkflowTask failure times. More...
 
class  SimulationTimestampTaskStart
 A simulation timestamp class for WorkflowTask start times. More...
 
class  SimulationTimestampTaskTermination
 A simulation timestamp class for WorkflowTask termination times. More...
 
class  SimulationTimestampType
 File, Source, Whoami used to be hashed as key for unordered multimap for ongoing file operations. More...
 
class  StandardJobScheduler
 A (mostly virtual) base class for implementing StandardJob scheduling algorithms to be used by a WMS. More...
 
class  StorageService
 The storage service base class. More...
 
class  StorageServiceMessagePayload
 Configurable message payloads for a StorageService. More...
 
class  StorageServiceProperty
 Configurable properties for a StorageService. More...
 
class  VirtualizedClusterComputeService
 A virtualized cluster-based compute service. More...
 
class  VirtualizedClusterComputeServiceMessagePayload
 Configurable message payloads for a VirtualizedClusterComputeService. More...
 
class  VirtualizedClusterComputeServiceProperty
 Configurable properties for a VirtualizedClusterComputeService. More...
 
class  WMS
 A workflow management system (WMS) More...
 
class  Workflow
 A workflow (to be executed by a WMS) More...
 
class  WorkflowFile
 A data file used/produced by a WorkflowTask in a Workflow. More...
 
class  WorkflowTask
 A computational task in a Workflow. More...
 

Functions

bool compare_last_access (Block *blk1, Block *blk2)
 Helper function to compare block by last access. More...
 
void generateHostUtilizationGraphLayout (std::vector< WorkflowTaskExecutionInstance > &data)
 Generates graph layout for host utilization and adds that information to the JSON object. More...
 
std::string generateRandomUsername (unsigned long userid)
 A method to generate a random username, so that generated workload traces look more realistic. More...
 
std::shared_ptr< ComputeServicegetComputeService ()
 Getter. More...
 
std::shared_ptr< FileLocation > getDestinationLocation ()
 Getter. More...
 
WorkflowFilegetFile ()
 
std::string getFunctionalityName ()
 Getter. More...
 
std::string getInvalidPath ()
 Get the invalid path. More...
 
std::shared_ptr< WorkflowJob > getJob ()
 Get the executor's job. More...
 
std::shared_ptr< FileLocation > getLocation ()
 Get the block's location. More...
 
std::string getMailbox ()
 Returns the mailbox name on which the error occurred. More...
 
std::shared_ptr< ServicegetService ()
 
std::shared_ptr< FileLocation > getSourceLocation ()
 Getter. More...
 
std::shared_ptr< StorageServicegetStorageService ()
 Get the location's storage service. More...
 
bool isPointOnSegment (std::pair< unsigned long long, unsigned long long > segment, unsigned long long point)
 Determines if a point lies on a line segment. More...
 
bool isSegmentOverlappingXAxis (std::pair< unsigned long long, unsigned long long > segment1, std::pair< unsigned long long, unsigned long long > segment2)
 Determines if two line segments overlap along the x-axis and allows for a slight overlap. More...
 
bool isSegmentOverlappingYAxis (std::pair< unsigned long long, unsigned long long > segment1, std::pair< unsigned long long, unsigned long long > segment2)
 Determines if two line segments overlap along the y-axis using exact values. More...
 
bool isTimeout ()
 Returns whether the network error was a timeout. More...
 
bool operator== (const BatchJobSet &left, const BatchJobSet &right)
 Overloaded operator. More...
 
bool operator== (const BatchJobSetCoreLevel &left, const BatchJobSetCoreLevel &right)
 Overloaded operator. More...
 
static std::tuple< std::string, unsigned long > parseResourceSpec (const std::string &spec)
 Helper static method to parse resource specifications to the <cores,ram> format. More...
 
bool searchForLayout (std::vector< WorkflowTaskExecutionInstance > &data, std::size_t index)
 Searches for a possible host utilization gantt chart layout and updates the data to include what vertical position to plot each rectangle. More...
 
void to_json (nlohmann::json &j, const WorkflowTaskExecutionInstance &w)
 Function called by the nlohmann::json constructor when a WorkflowTaskExecutionInstance is passed in as a parameter. This returns the JSON representation of a WorkflowTaskExecutionInstance. The name of this function is important and should not be changed as it is what nlohmann expects (hardcoded in there). More...
 
std::string toString ()=0
 Return an error message that describes the failure cause (to be overridden) More...
 
bool whileReceiving ()
 Returns whether the network error occurred while receiving. More...
 
bool whileSending ()
 Returns whether the network error occurred while sending. More...
 

Detailed Description

Copyright (c) 2017-2018. The WRENCH Team.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Copyright (c) 2017. The WRENCH Team.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Copyright (c) 2017-2019. The WRENCH Team.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Copyright (c) 2020. The WRENCH Team.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Copyright (c) 2017-2021. The WRENCH Team.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Copyright (c) 2017-2020. The WRENCH Team.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

Function Documentation

◆ compare_last_access()

bool wrench::compare_last_access ( Block *  blk1,
Block *  blk2 
)

Helper function to compare block by last access.

Parameters
blk1: a block
blk2: another block
Returns
true if blk1 was accessed before blk2, false otherwise

◆ generateHostUtilizationGraphLayout()

void wrench::generateHostUtilizationGraphLayout ( std::vector< WorkflowTaskExecutionInstance > &  data)

Generates graph layout for host utilization and adds that information to the JSON object.

Searches for a possible gantt chart layout to represent host utilization. If a layout is found (no tasks overlap), then information about where to plot what is added to the JSON object. Note that this is a possible layout and does not reflect what task ran on what core specifically. For example, we may hav a task that was allocated 2-cores on a idle 4-core host. The task, when plotted on the gantt chart may end up in 1 of 3 positions (using cores 0 and 1, 1 and 2, or 2 and 3).

Parameters
dataJSON workflow execution data
Exceptions
std::runtime_error

◆ generateRandomUsername()

std::string wrench::generateRandomUsername ( unsigned long  userid)

A method to generate a random username, so that generated workload traces look more realistic.

Parameters
useridnumerical userid
Returns
a generated alpha userid

◆ getComputeService()

std::shared_ptr< ComputeService > wrench::getComputeService ( )

Getter.

Get the compute service provided by the (running) pilot job.

Returns
the compute service
a compute service

◆ getDestinationLocation()

std::shared_ptr< FileLocation > wrench::FileAlreadyBeingCopied::getDestinationLocation ( )

Getter.

Returns
the source location

◆ getFunctionalityName()

std::string wrench::FunctionalityNotAvailable::getFunctionalityName ( )

Getter.

Returns
the functionality name

◆ getInvalidPath()

std::string wrench::InvalidDirectoryPath::getInvalidPath ( )

Get the invalid path.

Returns
a path

◆ getJob()

std::shared_ptr< WorkflowJob > wrench::getJob ( )

Get the executor's job.

Get the task's containing job.

Getter.

Retrieve the job the WorkunitExecutor is working for.

Retrieve the standard job this workunit belongs to.

Returns
a standard job
a job
the job
job: the job

◆ getLocation()

std::shared_ptr< FileLocation > wrench::FileNotFound::getLocation ( )

Get the block's location.

Getter.

Returns
the block's location
the storage service

◆ getMailbox()

std::string wrench::NetworkError::getMailbox ( )

Returns the mailbox name on which the error occurred.

Returns
the mailbox name

◆ getSourceLocation()

std::shared_ptr< FileLocation > wrench::FileAlreadyBeingCopied::getSourceLocation ( )

Getter.

Returns
the source location

◆ getStorageService()

std::shared_ptr< StorageService > wrench::getStorageService ( )

Get the location's storage service.

Getter.

Get the storage service at which the path was invalid.

Returns
a storage service
the storage service

◆ isPointOnSegment()

bool wrench::isPointOnSegment ( std::pair< unsigned long long, unsigned long long >  segment,
unsigned long long  point 
)

Determines if a point lies on a line segment.

Parameters
segmentpair of start and end points that make up the line segment
pointpoint on a 1D plane
Returns
bool

◆ isSegmentOverlappingXAxis()

bool wrench::isSegmentOverlappingXAxis ( std::pair< unsigned long long, unsigned long long >  segment1,
std::pair< unsigned long long, unsigned long long >  segment2 
)

Determines if two line segments overlap along the x-axis and allows for a slight overlap.

Parameters
segment1first segment
segment2second segment
Returns
bool

◆ isSegmentOverlappingYAxis()

bool wrench::isSegmentOverlappingYAxis ( std::pair< unsigned long long, unsigned long long >  segment1,
std::pair< unsigned long long, unsigned long long >  segment2 
)

Determines if two line segments overlap along the y-axis using exact values.

Parameters
segment1first segment
segment2second segment
Returns
bool

◆ isTimeout()

bool wrench::NetworkError::isTimeout ( )

Returns whether the network error was a timeout.

Returns
true or false

◆ operator==() [1/2]

bool wrench::operator== ( const BatchJobSet &  left,
const BatchJobSet &  right 
)

Overloaded operator.

Parameters
leftleft-hand side
rightright-hand side
Returns

◆ operator==() [2/2]

bool wrench::operator== ( const BatchJobSetCoreLevel &  left,
const BatchJobSetCoreLevel &  right 
)

Overloaded operator.

Parameters
leftleft-hand side
rightright-hand side
Returns

◆ parseResourceSpec()

static std::tuple<std::string, unsigned long> wrench::parseResourceSpec ( const std::string &  spec)
static

Helper static method to parse resource specifications to the <cores,ram> format.

Parameters
specspecification string
Returns
a <cores, ram> tuple
Exceptions
std::invalid_argument

◆ searchForLayout()

bool wrench::searchForLayout ( std::vector< WorkflowTaskExecutionInstance > &  data,
std::size_t  index 
)

Searches for a possible host utilization gantt chart layout and updates the data to include what vertical position to plot each rectangle.

Recursive backtracking search for a valid gantt chart layout. This algorithm looks for a vertical position to place each task execution event such that it doesn't overlap with any other task.

Parameters
dataJSON workflow execution data
indexthe index of the workflow execution data up to where we would like to check for a valid layout
Returns
bool

◆ to_json()

void wrench::to_json ( nlohmann::json &  j,
const WorkflowTaskExecutionInstance &  w 
)

Function called by the nlohmann::json constructor when a WorkflowTaskExecutionInstance is passed in as a parameter. This returns the JSON representation of a WorkflowTaskExecutionInstance. The name of this function is important and should not be changed as it is what nlohmann expects (hardcoded in there).

Parameters
jreference to a JSON object
wreference to a WorkflowTaskExecutionInstance

◆ toString()

std::string wrench::toString ( )
override

Return an error message that describes the failure cause (to be overridden)

Get the human-readable failure message.

Give a <ss name>:<mount point>:<dir>" string for the location.

Returns
an error message
A string
the message

◆ whileReceiving()

bool wrench::NetworkError::whileReceiving ( )

Returns whether the network error occurred while receiving.

Returns
true or false

◆ whileSending()

bool wrench::NetworkError::whileSending ( )

Returns whether the network error occurred while sending.

Returns
true or false