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...
#include <CloudComputeService.h>
Public Member Functions | |
CloudComputeService (const std::string &hostname, std::vector< std::string > &execution_hosts, std::string scratch_space_mount_point, std::map< std::string, std::string > property_list={}, std::map< std::string, double > messagepayload_list={}) | |
Constructor. More... | |
~CloudComputeService () | |
Destructor. | |
virtual std::string | createVM (unsigned long num_cores, double ram_memory, std::map< std::string, std::string > property_list={}, std::map< std::string, double > messagepayload_list={}) |
Create a BareMetalComputeService VM (balances load on execution hosts) More... | |
virtual std::string | createVM (unsigned long num_cores, double ram_memory, std::string desired_vm_name, std::map< std::string, std::string > property_list={}, std::map< std::string, double > messagepayload_list={}) |
Create a BareMetalComputeService VM (balances load on execution hosts) More... | |
virtual void | destroyVM (const std::string &vm_name) |
Destroy a VM. More... | |
std::vector< std::string > | getExecutionHosts () |
Get the list of execution hosts available to run VMs. More... | |
virtual std::shared_ptr< BareMetalComputeService > | getVMComputeService (const std::string &vm_name) |
Get the compute service running on a VM, if any. More... | |
virtual bool | isVMDown (const std::string &vm_name) |
Method to check whether a VM is currently down. More... | |
virtual bool | isVMRunning (const std::string &vm_name) |
Method to check whether a VM is currently running. More... | |
virtual bool | isVMSuspended (const std::string &vm_name) |
Method to check whether a VM is currently running. More... | |
virtual void | resumeVM (const std::string &vm_name) |
Resume a suspended VM. More... | |
virtual void | shutdownVM (const std::string &vm_name) |
Shutdown an active VM. More... | |
virtual std::shared_ptr< BareMetalComputeService > | startVM (const std::string &vm_name) |
Start a VM. More... | |
void | submitPilotJob (PilotJob *job, const std::map< std::string, std::string > &service_specific_args) override |
Asynchronously submit a pilot job to the cloud service. More... | |
void | submitStandardJob (StandardJob *job, const std::map< std::string, std::string > &service_specific_args) override |
Submit a standard job to the cloud service. More... | |
virtual void | suspendVM (const std::string &vm_name) |
Suspend a running VM. More... | |
void | terminatePilotJob (PilotJob *job) override |
non-implemented More... | |
void | terminateStandardJob (StandardJob *job) override |
Terminate a standard job to the compute service (virtual) More... | |
void | validateProperties () |
Validate the service's properties. More... | |
Public Member Functions inherited from wrench::ComputeService | |
ComputeService (const std::string &hostname, std::string service_name, std::string mailbox_name_prefix, std::string scratch_space_mount_point) | |
Constructor. More... | |
std::map< std::string, double > | getCoreFlopRate () |
Get the per-core flop rate of the compute service's hosts. More... | |
double | getFreeScratchSpaceSize () |
Get the free space on the compute service's scratch storage space. More... | |
std::map< std::string, double > | getMemoryCapacity () |
Get the RAM capacities for each of the compute service's hosts. More... | |
unsigned long | getNumHosts () |
Get the number of hosts that the compute service manages. More... | |
std::map< std::string, double > | getPerHostAvailableMemoryCapacity () |
Get ram availability for each of the compute service's host. More... | |
std::map< std::string, unsigned long > | getPerHostNumCores () |
Get core counts for each of the compute service's host. More... | |
std::map< std::string, unsigned long > | getPerHostNumIdleCores () |
Get idle core counts for each of the compute service's host. More... | |
std::shared_ptr< StorageService > | getScratch () |
Method that returns the computer service's scratch space's storage service. More... | |
unsigned long | getTotalNumCores () |
Get the total core counts for all hosts of the compute service. More... | |
virtual unsigned long | getTotalNumIdleCores () |
Get the total idle core count for all hosts of the compute service. More... | |
double | getTotalScratchSpaceSize () |
Get the total capacity of the compute service's scratch storage space. More... | |
double | getTTL () |
Get the time-to-live of the compute service. More... | |
bool | hasScratch () |
Checks if the compute service has a scratch space. More... | |
void | stop () override |
Stop the compute service - must be called by the stop() method of derived classes. | |
bool | supportsPilotJobs () |
Get whether the compute service supports pilot jobs or not. More... | |
bool | supportsStandardJobs () |
Get whether the compute service supports standard jobs or not. More... | |
void | terminateJob (WorkflowJob *job) |
Terminate a previously-submitted job (which may or may not be running yet) More... | |
Public Member Functions inherited from wrench::Service | |
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... | |
void | suspend () |
Suspend the service. | |
Public Member Functions inherited from wrench::S4U_Daemon | |
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 | |
int | main () override |
Main method of the daemon. More... | |
virtual void | processBareMetalComputeServiceTermination (std::shared_ptr< BareMetalComputeService > cs, int exit_code) |
Process a termination by a previously started BareMetalComputeService on a VM. More... | |
virtual void | processCreateVM (const std::string &answer_mailbox, unsigned long requested_num_cores, double requested_ram, std::string desired_vm_name, std::map< std::string, std::string > property_list, std::map< std::string, double > messagepayload_list) |
Create a BareMetalComputeService VM on a physical machine. More... | |
virtual void | processDestroyVM (const std::string &answer_mailbox, const std::string &vm_name) |
: Process a VM destruction request More... | |
virtual void | processGetExecutionHosts (const std::string &answer_mailbox) |
Process a execution host list request. More... | |
virtual void | processGetResourceInformation (const std::string &answer_mailbox) |
Process a "get resource information message". More... | |
virtual bool | processNextMessage () |
Wait for and react to any incoming message. More... | |
virtual void | processResumeVM (const std::string &answer_mailbox, const std::string &vm_name) |
: Process a VM resume request More... | |
virtual void | processShutdownVM (const std::string &answer_mailbox, const std::string &vm_name) |
: Process a VM shutdown request More... | |
virtual void | processStartVM (const std::string &answer_mailbox, const std::string &vm_name, const std::string &pm_name) |
: Process a VM start request by startibnng a VM on a host (using best fit for RAM first, and then for cores) More... | |
virtual void | processSubmitPilotJob (const std::string &answer_mailbox, PilotJob *job, std::map< std::string, std::string > &service_specific_args) |
Process a submit pilot job request. More... | |
virtual void | processSubmitStandardJob (const std::string &answer_mailbox, StandardJob *job, std::map< std::string, std::string > &service_specific_args) |
Process a submit standard job request. More... | |
virtual void | processSuspendVM (const std::string &answer_mailbox, const std::string &vm_name) |
: Process a VM suspend request More... | |
std::shared_ptr< SimulationMessage > | sendRequest (std::string &answer_mailbox, ComputeServiceMessage *message) |
Send a message request. More... | |
void | stopAllVMs () |
Terminate all VMs. | |
Protected Member Functions inherited from wrench::ComputeService | |
ComputeService (const std::string &hostname, std::string service_name, std::string mailbox_name_prefix, std::shared_ptr< StorageService > scratch_space) | |
Constructor. More... | |
std::shared_ptr< StorageService > | getScratchSharedPtr () |
Get a shared pointer to the compute service's scratch storage space. More... | |
void | submitJob (WorkflowJob *job, const std::map< std::string, std::string > &={}) |
Submit a job to the compute service. More... | |
Protected Member Functions inherited from wrench::Service | |
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... | |
Protected Member Functions inherited from wrench::S4U_Daemon | |
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) | |
Protected Attributes | |
std::vector< std::string > | execution_hosts |
List of execution host names. | |
std::map< std::string, unsigned long > | used_cores_per_execution_host |
Map of number of used cores at the hosts. | |
std::map< std::string, double > | used_ram_per_execution_host |
Map of used RAM at the hosts. | |
std::map< std::string, std::pair< std::shared_ptr< S4U_VirtualMachine >, std::shared_ptr< BareMetalComputeService > > > | vm_list |
A map of VMs. | |
Protected Attributes inherited from wrench::ComputeService | |
std::shared_ptr< StorageService > | scratch_space_storage_service |
A scratch storage service associated to the compute service. | |
Protected Attributes inherited from wrench::Service | |
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. | |
Protected Attributes inherited from wrench::S4U_Daemon | |
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. | |
Additional Inherited Members | |
Public Types inherited from wrench::S4U_Daemon | |
enum | State { UP, DOWN, SUSPENDED } |
Daemon states. More... | |
Static Public Member Functions inherited from wrench::Service | |
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. | |
Public Attributes inherited from wrench::S4U_Daemon | |
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 Public Attributes inherited from wrench::ComputeService | |
static constexpr unsigned long | ALL_CORES = ULONG_MAX |
A convenient constant to mean "use all cores of a physical host" whenever a number of cores is needed when instantiating compute services. | |
static constexpr double | ALL_RAM = DBL_MAX |
A convenient constant to mean "use all ram of a physical host" whenever a ram capacity is needed when instantiating compute services. | |
Static Protected Member Functions inherited from wrench::Service | |
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... | |
Detailed Description
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.
Constructor & Destructor Documentation
◆ CloudComputeService()
wrench::CloudComputeService::CloudComputeService | ( | const std::string & | hostname, |
std::vector< std::string > & | execution_hosts, | ||
std::string | scratch_space_mount_point, | ||
std::map< std::string, std::string > | property_list = {} , |
||
std::map< std::string, double > | messagepayload_list = {} |
||
) |
Constructor.
- Parameters
-
hostname the hostname on which to start the service execution_hosts the list of the names of the hosts available for running virtual machines scratch_space_mount_point the mount point for the cloud sercvice's strach space ("" means none) property_list a property list ({} means "use all defaults") messagepayload_list a message payload list ({} means "use all defaults")
- Exceptions
-
std::runtime_error
Member Function Documentation
◆ createVM() [1/2]
|
virtual |
Create a BareMetalComputeService VM (balances load on execution hosts)
- Parameters
-
num_cores the number of cores for the VM ram_memory the VM's RAM memory capacity property_list a property list for the BareMetalComputeService that will run on the VM ({} means "use all defaults") messagepayload_list a message payload list for the BareMetalComputeService that will run on the VM ({} means "use all defaults")
- Returns
- A VM name
- Exceptions
-
WorkflowExecutionException std::runtime_error
◆ createVM() [2/2]
|
virtual |
Create a BareMetalComputeService VM (balances load on execution hosts)
- Parameters
-
num_cores the number of cores for the VM ram_memory the VM's RAM memory capacity desired_vm_name the VM's desired name ("" means "pick a name for me") property_list a property list for the BareMetalComputeService that will run on the VM ({} means "use all defaults") messagepayload_list a message payload list for the BareMetalComputeService that will run on the VM ({} means "use all defaults")
- Returns
- A VM name
- Exceptions
-
WorkflowExecutionException std::runtime_error
◆ destroyVM()
|
virtual |
Destroy a VM.
- Parameters
-
vm_name the name of the VM
- Exceptions
-
WorkflowExecutionException std::invalid_argument
◆ getExecutionHosts()
std::vector< std::string > wrench::CloudComputeService::getExecutionHosts | ( | ) |
Get the list of execution hosts available to run VMs.
- Returns
- a list of hostnames
- Exceptions
-
WorkflowExecutionException
◆ getVMComputeService()
|
virtual |
Get the compute service running on a VM, if any.
- Parameters
-
vm_name the name of the VM
- Returns
- A BareMetalComputeService that runs on the VM, or nullptr if none
- Exceptions
-
WorkflowExecutionException std::invalid_argument
◆ isVMDown()
|
virtual |
Method to check whether a VM is currently down.
- Parameters
-
vm_name the name of the VM
- Returns
- true or false
- Exceptions
-
std::invalid_argument
◆ isVMRunning()
|
virtual |
Method to check whether a VM is currently running.
- Parameters
-
vm_name the name of the VM
- Returns
- true or false
- Exceptions
-
std::invalid_argument
◆ isVMSuspended()
|
virtual |
Method to check whether a VM is currently running.
- Parameters
-
vm_name the name of the VM
- Returns
- true or false
- Exceptions
-
std::invalid_argument
◆ main()
|
overrideprotectedvirtual |
Main method of the daemon.
- Returns
- 0 on termination
Main loop
Implements wrench::S4U_Daemon.
Reimplemented in wrench::VirtualizedClusterComputeService.
◆ processBareMetalComputeServiceTermination()
|
protectedvirtual |
Process a termination by a previously started BareMetalComputeService on a VM.
- Parameters
-
cs the service that has terminated exit_code the service's exit code
◆ processCreateVM()
|
protectedvirtual |
Create a BareMetalComputeService VM on a physical machine.
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent requested_num_cores the number of cores the service can use requested_ram the VM's RAM memory capacity desired_vm_name the desired VM name ("" means "pick a name for me") property_list a property list for the BareMetalComputeService that will run on the VM ({} means "use all defaults") messagepayload_list a message payload list for the BareMetalComputeService that will run on the VM ({} means "use all defaults")
- Exceptions
-
std::runtime_error
◆ processDestroyVM()
|
protectedvirtual |
: Process a VM destruction request
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent vm_name the name of the VM
◆ processGetExecutionHosts()
|
protectedvirtual |
Process a execution host list request.
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent
◆ processGetResourceInformation()
|
protectedvirtual |
Process a "get resource information message".
- Parameters
-
answer_mailbox the mailbox to which the description message should be sent
◆ processNextMessage()
|
protectedvirtual |
Wait for and react to any incoming message.
- Returns
- false if the daemon should terminate, true otherwise
- Exceptions
-
std::runtime_error
Reimplemented in wrench::VirtualizedClusterComputeService.
◆ processResumeVM()
|
protectedvirtual |
: Process a VM resume request
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent vm_name the name of the VM
◆ processShutdownVM()
|
protectedvirtual |
: Process a VM shutdown request
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent vm_name the name of the VM
◆ processStartVM()
|
protectedvirtual |
: Process a VM start request by startibnng a VM on a host (using best fit for RAM first, and then for cores)
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent vm_name the name of the VM pm_name the name of the physical host on which to start the VM (empty string if up to the service to pick a host)
◆ processSubmitPilotJob()
|
protectedvirtual |
Process a submit pilot job request.
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent job the job service_specific_args service specific arguments
- Exceptions
-
std::runtime_error
◆ processSubmitStandardJob()
|
protectedvirtual |
Process a submit standard job request.
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent job the job service_specific_args service specific arguments
- Exceptions
-
std::runtime_error
◆ processSuspendVM()
|
protectedvirtual |
: Process a VM suspend request
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent vm_name the name of the VM
◆ resumeVM()
|
virtual |
Resume a suspended VM.
- Parameters
-
vm_name the name of the VM
- Exceptions
-
WorkflowExecutionException std::invalid_argument
◆ sendRequest()
|
protected |
Send a message request.
- Parameters
-
answer_mailbox the mailbox to which the answer message should be sent message message to be sent
- Returns
- a simulation message
- Exceptions
-
std::runtime_error
◆ shutdownVM()
|
virtual |
Shutdown an active VM.
- Parameters
-
vm_name the name of the VM
- Exceptions
-
WorkflowExecutionException std::invalid_argument
◆ startVM()
|
virtual |
Start a VM.
- Parameters
-
vm_name the name of the VM
- Returns
- A BareMetalComputeService that runs on the VM
- Exceptions
-
WorkflowExecutionException std::invalid_argument
◆ submitPilotJob()
|
overridevirtual |
Asynchronously submit a pilot job to the cloud service.
- Parameters
-
job a pilot job service_specific_args always {} (i.e., no service-specific arguments supported)
- Exceptions
-
WorkflowExecutionException std::runtime_error
Implements wrench::ComputeService.
◆ submitStandardJob()
|
overridevirtual |
Submit a standard job to the cloud service.
- Parameters
-
job a standard job service_specific_args always {} (i.e., no service-specific arguments supported)
- Exceptions
-
WorkflowExecutionException std::invalid_argument std::runtime_error
Implements wrench::ComputeService.
◆ suspendVM()
|
virtual |
Suspend a running VM.
- Parameters
-
vm_name the name of the VM
- Exceptions
-
WorkflowExecutionException std::invalid_argument
◆ terminatePilotJob()
|
overridevirtual |
non-implemented
- Parameters
-
job a pilot job to (supposedly) terminate
Implements wrench::ComputeService.
◆ terminateStandardJob()
|
overridevirtual |
Terminate a standard job to the compute service (virtual)
- Parameters
-
job the standard job
- Exceptions
-
std::runtime_error
Implements wrench::ComputeService.
◆ validateProperties()
void wrench::CloudComputeService::validateProperties | ( | ) |
Validate the service's properties.
- Exceptions
-
std::invalid_argument
The documentation for this class was generated from the following files:
- CloudComputeService.h
- CloudComputeService.cpp