![]() |
WRENCH
1.10
Cyberinfrastructure Simulation Workbench
|
Overview | Installation | Getting Started | WRENCH 101 | WRENCH 102 |
|
A workflow management system (WMS) More...
#include <WMS.h>
Public Member Functions | |
void | addDynamicOptimization (std::unique_ptr< DynamicOptimization >) |
Add a dynamic optimization to the list of optimizations. Optimizations are executed in order of insertion. More... | |
void | addStaticOptimization (std::unique_ptr< StaticOptimization >) |
Add a static optimization to the list of optimizations. Optimizations are executed in order of insertion. More... | |
void | addWorkflow (Workflow *workflow, double start_time=0) |
Assign a workflow to the WMS. More... | |
PilotJobScheduler * | getPilotJobScheduler () |
Get the WMS's pilot scheduler. More... | |
StandardJobScheduler * | getStandardJobScheduler () |
Get the WMS's pilot scheduler. More... | |
Workflow * | getWorkflow () |
Get the workflow that was assigned to the WMS. More... | |
![]() | |
void | assertServiceIsUp () |
Throws an exception if the service is not up. More... | |
std::string | getHostname () |
Get the name of the host on which the service is / will be running. More... | |
double | getMessagePayloadValue (std::string) |
Get a message payload of the Service as a double. More... | |
double | getNetworkTimeoutValue () |
Returns the service's network timeout value. More... | |
bool | getPropertyValueAsBoolean (std::string) |
Get a property of the Service as a boolean. More... | |
double | getPropertyValueAsDouble (std::string) |
Get a property of the Service as a double. More... | |
std::string | getPropertyValueAsString (std::string) |
Get a property of the Service as a string. More... | |
unsigned long | getPropertyValueAsUnsignedLong (std::string) |
Get a property of the Service as an unsigned long. More... | |
bool | isUp () |
Returns true if the service is UP, false otherwise. More... | |
void | resume () |
Resume the service. More... | |
void | setNetworkTimeoutValue (double value) |
Sets the service's network timeout value. More... | |
void | setStateToDown () |
Set the state of the service to DOWN. | |
void | start (std::shared_ptr< Service > this_service, bool daemonize, bool auto_restart) |
Start the service. More... | |
virtual void | stop () |
Synchronously stop the service (does nothing if the service is already stopped) More... | |
void | suspend () |
Suspend the service. | |
![]() | |
S4U_Daemon (std::string hostname, std::string process_name_prefix, std::string mailbox_prefix) | |
Constructor (daemon with a mailbox) More... | |
virtual | ~S4U_Daemon () |
virtual void | cleanup (bool has_returned_from_main, int return_value) |
Cleanup function called when the daemon terminates (for whatever reason). The default behavior is to throw an exception if the host is off. This method should be overriden in a daemons implements some fault-tolerant behavior, or is naturally tolerant. More... | |
void | createLifeSaver (std::shared_ptr< S4U_Daemon > reference) |
Create a life saver for the daemon. More... | |
std::string | getName () |
Retrieve the process name. More... | |
int | getReturnValue () |
Returns the value returned by main() (if the daemon has returned from main) More... | |
S4U_Daemon::State | getState () |
Get the daemon's state. More... | |
bool | hasReturnedFromMain () |
Returns true if the daemon has returned from main() (i.e., not brutally killed) More... | |
bool | isDaemonized () |
Return the daemonized status of the daemon. More... | |
bool | isSetToAutoRestart () |
Return the auto-restart status of the daemon. More... | |
std::pair< bool, int > | join () |
Join (i.e., wait for) the daemon. More... | |
void | resumeActor () |
Resume the daemon/actor. | |
void | setupOnExitFunction () |
Sets up the on_exit functionf for the actor. | |
void | startDaemon (bool _daemonized, bool _auto_restart) |
Start the daemon. More... | |
void | suspendActor () |
Suspend the daemon/actor. | |
Protected Member Functions | |
WMS (std::unique_ptr< StandardJobScheduler > standard_job_scheduler, std::unique_ptr< PilotJobScheduler > pilot_job_scheduler, const std::set< std::shared_ptr< ComputeService >> &compute_services, const std::set< std::shared_ptr< StorageService >> &storage_services, const std::set< std::shared_ptr< NetworkProximityService >> &network_proximity_services, std::shared_ptr< FileRegistryService > file_registry_service, const std::string &hostname, const std::string suffix) | |
Constructor: a WMS with a workflow instance, a scheduler implementation, and a list of compute services. More... | |
void | checkDeferredStart () |
Check whether the WMS has a deferred start simulation time (likely the first call in the main() routine of any WMS. More... | |
std::shared_ptr< BandwidthMeterService > | createBandwidthMeter (const std::map< std::string, double > &measurement_periods) |
Instantiate and start a bandwidth meter. More... | |
std::shared_ptr< BandwidthMeterService > | createBandwidthMeter (const std::vector< std::string > &linknames, double measurement_period) |
Instantiate and start a bandwidth meter. More... | |
std::shared_ptr< DataMovementManager > | createDataMovementManager () |
Instantiate and start a data movement manager. More... | |
std::shared_ptr< EnergyMeterService > | createEnergyMeter (const std::map< std::string, double > &measurement_periods) |
Instantiate and start an energy meter. More... | |
std::shared_ptr< EnergyMeterService > | createEnergyMeter (const std::vector< std::string > &hostnames, double measurement_period) |
Instantiate and start an energy meter. More... | |
std::shared_ptr< JobManager > | createJobManager () |
Instantiate and start a job manager. More... | |
template<class T > | |
std::set< std::shared_ptr< T > > | getAvailableComputeServices () |
Obtain the list of compute services available to the WMS. More... | |
std::shared_ptr< FileRegistryService > | getAvailableFileRegistryService () |
Obtain the file registry service available to the WMS. More... | |
std::set< std::shared_ptr< NetworkProximityService > > | getAvailableNetworkProximityServices () |
Obtain the list of network proximity services available to the WMS. More... | |
std::set< std::shared_ptr< StorageService > > | getAvailableStorageServices () |
Obtain the list of storage services available to the WMS. More... | |
virtual void | processEventFileCopyCompletion (std::shared_ptr< FileCopyCompletedEvent >) |
Process a file copy completion event. More... | |
virtual void | processEventFileCopyFailure (std::shared_ptr< FileCopyFailedEvent >) |
Process a file copy failure event. More... | |
virtual void | processEventPilotJobExpiration (std::shared_ptr< PilotJobExpiredEvent >) |
Process a pilot job expiration event. More... | |
virtual void | processEventPilotJobStart (std::shared_ptr< PilotJobStartedEvent >) |
Process a pilot job start event. More... | |
virtual void | processEventStandardJobCompletion (std::shared_ptr< StandardJobCompletedEvent >) |
Process a standard job completion event. More... | |
virtual void | processEventStandardJobFailure (std::shared_ptr< StandardJobFailedEvent >) |
Process a standard job failure event. More... | |
virtual void | processEventTimer (std::shared_ptr< TimerEvent >) |
Process a timer event. More... | |
void | runDynamicOptimizations () |
Perform dynamic optimizations. Optimizations are executed in order of insertion. | |
void | runStaticOptimizations () |
Perform static optimizations. Optimizations are executed in order of insertion. | |
void | setTimer (double date, std::string message) |
Sets a timer (which, when it goes off, will generate a TimerEvent) More... | |
void | waitForAndProcessNextEvent () |
Wait for a workflow execution event and then call the associated function to process that event. | |
bool | waitForAndProcessNextEvent (double timeout) |
Wait for a workflow execution event and then call the associated function to process that event. More... | |
std::shared_ptr< WorkflowExecutionEvent > | waitForNextEvent () |
Wait for a workflow execution event. More... | |
std::shared_ptr< WorkflowExecutionEvent > | waitForNextEvent (double timeout) |
Wait for a workflow execution event. More... | |
![]() | |
Service (std::string hostname, std::string process_name_prefix, std::string mailbox_name_prefix) | |
Constructor. More... | |
~Service () | |
Destructor. | |
template<class T > | |
std::shared_ptr< T > | getSharedPtr () |
Method to retrieve the shared_ptr to a service. More... | |
void | serviceSanityCheck () |
Check whether the service is properly configured and running. More... | |
void | setMessagePayload (std::string, double) |
Set a message payload of the Service. More... | |
void | setMessagePayloads (std::map< std::string, double > default_messagepayload_values, std::map< std::string, double > overriden_messagepayload_values) |
Set default and user-defined message payloads. More... | |
void | setProperties (std::map< std::string, std::string > default_property_values, std::map< std::string, std::string > overriden_property_values) |
Set default and user-defined properties. More... | |
void | setProperty (std::string, std::string) |
Set a property of the Service. More... | |
![]() | |
void | acquireDaemonLock () |
Lock the daemon's lock. | |
void | killActor () |
Kill the daemon/actor (does nothing if already dead) More... | |
void | releaseDaemonLock () |
Unlock the daemon's lock. | |
void | runMainMethod () |
Method that run's the user-defined main method (that's called by the S4U actor class) | |
Additional Inherited Members | |
![]() | |
enum | State { UP, DOWN, SUSPENDED } |
Daemon states. More... | |
![]() | |
static void | cleanupTrackedServices () |
Go through the tracked services and remove all entries with a refcount of 1! | |
static void | clearTrackedServices () |
Forget all tracked services. | |
static void | increaseNumCompletedServicesCount () |
Increase the completed service count. | |
![]() | |
std::string | hostname |
The name of the host on which the daemon is running. | |
std::string | initial_mailbox_name |
The initial name of the daemon's mailbox. | |
LifeSaver * | life_saver = nullptr |
The daemon's life saver. | |
std::string | mailbox_name |
The current name of the daemon's mailbox. | |
std::string | process_name |
The name of the daemon. | |
Simulation * | simulation |
a pointer to the simulation object | |
![]() | |
static void | assertServiceIsUp (std::shared_ptr< Service > s) |
Assert for the service being up. More... | |
template<class T > | |
static std::shared_ptr< T > | getServiceByName (std::string name) |
Method to retrieve the shared_ptr to a service based on the service's name (not efficient) More... | |
![]() | |
std::map< std::string, double > | messagepayload_list |
The service's messagepayload list. | |
std::string | name |
The service's name. | |
double | network_timeout = 30.0 |
The time (in seconds) after which a service that doesn't send back a reply (control) message causes a NetworkTimeOut exception. (default: 30 second; if <0 never timeout) | |
std::map< std::string, std::string > | property_list |
The service's property list. | |
![]() | |
unsigned int | num_starts = 0 |
The number of time that this daemon has started (i.e., 1 + number of restarts) | |
State | state |
The service's state. | |
A workflow management system (WMS)
|
protected |
Constructor: a WMS with a workflow instance, a scheduler implementation, and a list of compute services.
standard_job_scheduler | a standard job scheduler implementation (if nullptr then none is used) |
pilot_job_scheduler | a pilot job scheduler implementation (if nullptr then none is used) |
compute_services | a set of compute services available to run jobs (if {} then none is available) |
storage_services | a set of storage services available to the WMS (if {} then none is available) |
network_proximity_services | a set of network proximity services available to the WMS (if {} then none is available) |
file_registry_service | a file registry services available to the WMS (if nullptr then none is available) |
hostname | the name of the host on which to run the WMS |
suffix | a string to append to the WMS process name (useful for debug output) |
std::invalid_argument |
void wrench::WMS::addDynamicOptimization | ( | std::unique_ptr< DynamicOptimization > | optimization | ) |
Add a dynamic optimization to the list of optimizations. Optimizations are executed in order of insertion.
optimization | a dynamic optimization implementation |
void wrench::WMS::addStaticOptimization | ( | std::unique_ptr< StaticOptimization > | optimization | ) |
Add a static optimization to the list of optimizations. Optimizations are executed in order of insertion.
optimization | a static optimization implementation |
void wrench::WMS::addWorkflow | ( | Workflow * | workflow, |
double | start_time = 0 |
||
) |
Assign a workflow to the WMS.
workflow | a workflow to execute |
start_time | the simulated time when the WMS should start executed the workflow (0 if not specified) |
std::invalid_argument |
Set the simulation pointer member variable of the workflow so that the workflow tasks have access to it for creating SimulationTimestamps
|
protected |
|
protected |
Instantiate and start a bandwidth meter.
measurement_periods | the measurement period for each metered link |
|
protected |
Instantiate and start a bandwidth meter.
linknames | the list of metered links, as linknames |
measurement_period | the measurement period |
|
protected |
Instantiate and start a data movement manager.
|
protected |
Instantiate and start an energy meter.
measurement_periods | the measurement period for each metered host |
|
protected |
Instantiate and start an energy meter.
hostnames | the list of metered hosts, as hostnames |
measurement_period | the measurement period |
|
protected |
Instantiate and start a job manager.
|
inlineprotected |
Obtain the list of compute services available to the WMS.
T | ComputeService, or any if derived classes (but for CloudComputeService) |
|
protected |
Obtain the file registry service available to the WMS.
|
protected |
Obtain the list of network proximity services available to the WMS.
|
protected |
Obtain the list of storage services available to the WMS.
PilotJobScheduler * wrench::WMS::getPilotJobScheduler | ( | ) |
Get the WMS's pilot scheduler.
StandardJobScheduler * wrench::WMS::getStandardJobScheduler | ( | ) |
Get the WMS's pilot scheduler.
Workflow * wrench::WMS::getWorkflow | ( | ) |
Get the workflow that was assigned to the WMS.
|
protectedvirtual |
Process a file copy completion event.
event | a FileCopyCompletedEvent |
|
protectedvirtual |
Process a file copy failure event.
event | a FileCopyFailedEvent |
|
protectedvirtual |
Process a pilot job expiration event.
event | a PilotJobExpiredEvent |
|
protectedvirtual |
Process a pilot job start event.
event | a PilotJobStartedEvent |
|
protectedvirtual |
Process a standard job completion event.
event | a StandardJobCompletedEvent |
|
protectedvirtual |
Process a standard job failure event.
event | a StandardJobFailedEvent |
|
protectedvirtual |
Process a timer event.
event | a TimerEvent |
|
protected |
Sets a timer (which, when it goes off, will generate a TimerEvent)
date | the date at which the timer should go off |
message | a string message that will be in the generated TimerEvent |
|
protected |
Wait for a workflow execution event and then call the associated function to process that event.
timeout | a timeout value in seconds |
wrench::WorkflowExecutionException |
|
protected |
Wait for a workflow execution event.
|
protected |
Wait for a workflow execution event.
timeout | a timeout value in seconds |