10 #ifndef SIMULATION_COMPUTESERVICE_H
11 #define SIMULATION_COMPUTESERVICE_H
19 #include "wrench/services/Service.h"
20 #include "wrench/workflow/job/WorkflowJob.h"
21 #include "wrench/workflow/job/StandardJob.h"
22 #include "wrench/workflow/job/PilotJob.h"
39 friend class StandardJobExecutorTest;
52 static constexpr
unsigned long ALL_CORES = ULONG_MAX;
57 static constexpr
double ALL_RAM = DBL_MAX;
119 submitStandardJob(std::shared_ptr<StandardJob> job,
const std::map<std::string, std::string> &service_specific_arguments) = 0;
127 virtual void submitPilotJob(std::shared_ptr<PilotJob> job,
const std::map<std::string, std::string> &service_specific_arguments) = 0;
149 std::string service_name,
150 std::string mailbox_name_prefix,
151 std::string scratch_space_mount_point);
157 void submitJob(std::shared_ptr<WorkflowJob> job,
const std::map<std::string, std::string>& = {});
160 std::string service_name,
161 std::string mailbox_name_prefix,
162 std::shared_ptr<StorageService> scratch_space);
184 std::shared_ptr<StorageService> scratch_space_storage_service_shared_ptr;
186 std::map<std::string, std::map<std::string, double>> getServiceResourceInformation();
193 #endif //SIMULATION_COMPUTESERVICE_H
double getTotalScratchSpaceSize()
Get the total capacity of the compute service's scratch storage space.
Definition: ComputeService.cpp:511
std::map< std::string, double > getPerHostAvailableMemoryCapacity()
Get ram availability for each of the compute service's host.
Definition: ComputeService.cpp:309
ComputeService(const std::string &hostname, std::string service_name, std::string mailbox_name_prefix, std::string scratch_space_mount_point)
Constructor.
Definition: ComputeService.cpp:112
bool hasScratch()
Checks if the compute service has a scratch space.
Definition: ComputeService.cpp:545
void submitJob(std::shared_ptr< WorkflowJob > job, const std::map< std::string, std::string > &={})
Submit a job to the compute service.
Definition: ComputeService.cpp:57
std::map< std::string, unsigned long > getPerHostNumIdleCores()
Get idle core counts for each of the compute service's host.
Definition: ComputeService.cpp:282
virtual void submitPilotJob(std::shared_ptr< PilotJob > job, const std::map< std::string, std::string > &service_specific_arguments)=0
Method to submit a pilot job to the service.
double getTTL()
Get the time-to-live of the compute service.
Definition: ComputeService.cpp:454
virtual unsigned long getTotalNumIdleCores()
Get the total idle core count for all hosts of the compute service.
Definition: ComputeService.cpp:336
A helper daemon (co-located with and explicitly started by a WMS), which is used to handle all job ex...
Definition: JobManager.h:48
std::map< std::string, double > getCoreFlopRate()
Get the per-core flop rate of the compute service's hosts.
Definition: ComputeService.cpp:403
The compute service base class.
Definition: ComputeService.h:33
std::vector< std::string > getHosts()
Get the list of the compute service's compute host.
Definition: ComputeService.cpp:200
std::shared_ptr< StorageService > getScratch()
Method that returns the computer service's scratch space's storage service.
Definition: ComputeService.cpp:529
std::map< std::string, unsigned long > getPerHostNumCores()
Get core counts for each of the compute service's host.
Definition: ComputeService.cpp:229
virtual void submitStandardJob(std::shared_ptr< StandardJob > job, const std::map< std::string, std::string > &service_specific_arguments)=0
Method to submit a standard job to the service.
virtual void terminatePilotJob(std::shared_ptr< PilotJob > job)=0
Method to terminate a running pilot job.
double getFreeScratchSpaceSize()
Get the free space on the compute service's scratch storage space.
Definition: ComputeService.cpp:520
std::shared_ptr< StorageService > getScratchSharedPtr()
Get a shared pointer to the compute service's scratch storage space.
Definition: ComputeService.cpp:537
void stop() override
Stop the compute service - must be called by the stop() method of derived classes.
Definition: ComputeService.cpp:33
unsigned long getTotalNumCores()
Get the total core counts for all hosts of the compute service.
Definition: ComputeService.cpp:256
static constexpr unsigned long ALL_CORES
A convenient constant to mean "use all cores of a physical host" whenever a number of cores is needed...
Definition: ComputeService.h:52
std::string hostname
The name of the host on which the daemon is running.
Definition: S4U_Daemon.h:51
A class that provides basic simulation methods. Once the simulation object has been explicitly or imp...
Definition: Simulation.h:46
bool supportsStandardJobs()
Get whether the compute service supports standard jobs or not.
Definition: ComputeService.cpp:158
virtual void terminateStandardJob(std::shared_ptr< StandardJob > job)=0
Method to terminate a running standard job.
std::shared_ptr< StorageService > scratch_space_storage_service
A scratch storage service associated to the compute service.
Definition: ComputeService.h:165
static constexpr double ALL_RAM
A convenient constant to mean "use all ram of a physical host" whenever a ram capacity is needed when...
Definition: ComputeService.h:57
A service that can be added to the simulation and that can be used by a WMS when executing a workflow...
Definition: Service.h:26
virtual bool isThereAtLeastOneHostWithIdleResources(unsigned long num_cores, double ram)
Method to find out if, right now, the compute service has at least one host with some idle number of ...
Definition: ComputeService.cpp:362
unsigned long getNumHosts()
Get the number of hosts that the compute service manages.
Definition: ComputeService.cpp:177
std::map< std::string, double > getMemoryCapacity()
Get the RAM capacities for each of the compute service's hosts.
Definition: ComputeService.cpp:428
void terminateJob(std::shared_ptr< WorkflowJob > job)
Terminate a previously-submitted job (which may or may not be running yet)
Definition: ComputeService.cpp:85
bool supportsPilotJobs()
Get whether the compute service supports pilot jobs or not.
Definition: ComputeService.cpp:166