wrench::S4U_Simulation

class S4U_Simulation

Wrappers around S4U’s basic simulation methods.

Public Functions

void checkLinkBandwidths()

Method to check that all link bandwidths are >0.

void initialize(int *argc, char **argv)

Initialize the Simgrid simulation.

Parameters
  • argc – the C-style argument counts

  • argv – the C-style argument list

bool isInitialized() const

Returns true if S4U_Simulation::initialize() has been called successfully previously.

Returns

true or false

bool isPlatformSetup() const

Returns true if S4U_Simulation::setupPlatform() has been called successfully previously.

Returns

true or false

void runSimulation()

Start the simulation.

Throws

std::runtime_error

void setupPlatform(const std::function<void()> &creation_function)

Initialize the simulated platform. Must only be called once.

Parameters

creation_function – void() function to create the platform

Throws

std::invalid_argument

void setupPlatform(const std::string&)

Initialize the simulated platform. Must only be called once.

Parameters

filename – the path to an XML platform description file

Throws

std::invalid_argument

void shutdown() const

Shutdown the simulation.

Public Static Functions

static void compute(double)

Simulates a computation on host on which the calling actor is running.

Parameters

flops – the number of flops

static void compute_multi_threaded(unsigned long num_threads, double thread_creation_overhead, double sequential_work, double parallel_per_thread_work)

Simulates a multi-threaded computation.

Parameters
  • num_threads – the number of threads

  • thread_creation_overhead – the thread creation overhead in seconds

  • sequential_work – the sequential work (in flops)

  • parallel_per_thread_work – the parallel per thread work (in flops)

static void computeZeroFlop()

Compute zero flop, which take zero time but will block if the host’s pstate has a zero flop/sec speed, until the host’s pstate is changed to a pstate with non-zero flop/sec speed.

static void createNewDisk(const std::string &hostname, const std::string &disk_id, double read_bandwidth_in_bytes_per_sec, double write_bandwidth_in_bytes_per_sec, double capacity_in_bytes, const std::string &mount_point)

Method to create, programmatically, a new disk.

Parameters
  • hostname – the name of the host to which the disk should be attached

  • disk_id – the nae of the disk

  • read_bandwidth_in_bytes_per_sec – the disk’s read bandwidth in byte/sec

  • write_bandwidth_in_bytes_per_sec – the disk’s write bandwidth in byte/sec

  • capacity_in_bytes – the disk’s capacity in bytes

  • mount_point – the disk’s mount point (most people use “/”)

static simgrid::s4u::Host *get_host_or_vm_by_name(const std::string &name)

Convenient s4u wrapper to retrieve a Host (which can be a VM) based on a name.

Parameters

name – the host/vm name

Returns

a SimGrid host

static simgrid::s4u::Host *get_host_or_vm_by_name_or_null(const std::string &name)

Convenient s4u wrapper to retrieve a Host (which can be a VM) based on a name.

Parameters

name – the host/vm name or null if none

Returns

a SimGrid host

static std::map<std::string, std::vector<std::string>> getAllClusterIDsByZone()

Get the list of ids of all ClusterZone in the platform within each zone (<cluster> XML tag in the platform XML description)

Returns

a map of zone ids and the list of cluster ids

static std::vector<std::string> getAllHostnames()

Get the list of physical hostnames.

Returns

a vector of hostnames

static std::map<std::string, std::vector<std::string>> getAllHostnamesByCluster()

Get the list of hostnames in each ClusterZone in the platform (<cluster> XML tag in the platform XML description)

Returns

a map of all cluster ids and lists of hostnames

static std::map<std::string, std::vector<std::string>> getAllHostnamesByZone()

Get the list of hostnames in each NetZone (<zone> and <cluster> tags in the platform XML description). Note that this method does not recurse into sub-zones, so it only returns the hosts that are declared directly under the <zone> and or <cluster> tags.

Returns

a map of all zone ids and lists of hostnames

static std::vector<std::string> getAllLinknames()

Get the list of link names.

Returns

a vector of link names

static std::map<std::string, std::vector<std::string>> getAllSubZoneIDsByZone()

Get the list of ids of all (sub-)zones in the platform within each zone (<zone> XML tag in the platform XML description)

Returns

a map of zone ids and the list of (sub-)zone ids

static double getClock()

Get the current simulation date.

Returns

the simulation clock

static std::string getClusterProperty(const std::string &cluster_id, const std::string &property_name)

Get the property associated to a cluster specified in the platform file.

Parameters
  • cluster_id – the cluster id

  • property_name – the property name

Returns

a string relating to the property specified in the platform file

static unsigned long getCurrentPstate(const std::string &hostname)

Get the current power state of a host.

Parameters

hostname – the host name

Throws

std::runtime_error

Returns

The index of the current pstate of the host (as specified in the platform xml description file)

static double getDiskCapacity(const std::string &hostname, std::string mount_point)

Gets the capacity of a disk attached to some host for a given mount point.

Parameters
  • hostname – the host’s name

  • mount_point – the mount point (e.g., “/home”)

Throws

std::invalid_argument

Returns

the capacity of the disk / mount point

static std::vector<std::string> getDisks(const std::string &hostname)

Gets set of disks, i.e., mount points, available at a host.

Parameters

hostname – the host’s name

Throws

std::invalid_argument

Returns

a vector of mount points

static double getEnergyConsumedByHost(const std::string &hostname)

Get the energy consumed by the host up to now.

Parameters

hostname – the host name

Throws
  • std::invalid_argument

  • std::runtime_error

Returns

the energy consumed by the host in Joules

static double getFlopRate()

Get the flop rate of the current host.

Throws

std::invalid_argument

Returns

the flop rate in floating point operations per second

static double getHostFlopRate(const std::string &hostname)

Get the flop rate of a host.

Parameters

hostname – the name of the host

Throws

std::invalid_argument

Returns

the flop rate in floating point operations per second

static double getHostMemoryCapacity(const std::string &hostname)

Get the memory_manager_service capacity of a host given a hostname.

Parameters

hostname – the name of the host

Returns

a memory_manager_service capacity in bytes

static std::string getHostName()

Get the hostname on which the calling actor is running.

Returns

the hostname as a string

static unsigned int getHostNumCores(const std::string &hostname)

Get the number of cores of a host.

Parameters

hostname – the name of the host

Throws

std::invalid_argument

Returns

the number of cores of the host

static std::string getHostProperty(const std::string &hostname, const std::string &property_name)

Get the property associated to a host specified in the platform file.

Parameters
  • hostname – the host name

  • property_name – the property name

Returns

a string relating to the property specified in the platform file

static double getLinkBandwidth(const std::string &name)

Get a link’s bandwidth.

Parameters

name – the link’s name

Returns

a bandwidth in Bps

static double getLinkUsage(const std::string &name)

Get a link’s bandwidth usage.

Parameters

name – the link’s name

Returns

a bandwidth usage in Bps

static std::vector<int> getListOfPstates(const std::string &hostname)

Get the list of power states available for a host.

Parameters

hostname – the host name

Throws
  • std::invalid_argument

  • std::runtime_error

Returns

a list of power states available for the host (as specified in the platform xml description file)

static double getMaxPowerConsumption(const std::string &hostname)

Get the maximum power consumption (i.e., 100% load) for a host at its current pstate.

Parameters

hostname – the host name

Throws
  • std::invalid_argument

  • std::runtime_error

Returns

The power consumption for this host if 100% used (as specified in the platform xml description file)

static double getMemoryCapacity()

Get the memory_manager_service capacity of the current host.

Returns

a memory_manager_service capacity in bytes

static double getMinPowerConsumption(const std::string &hostname)

Get the minimum power consumption (i.e., idling) for a host at its current pstate.

Parameters

hostname – the host name

Throws
  • std::invalid_argument

  • std::runtime_error

Returns

The power consumption for this host if idle (as specified in the platform xml description file)

static int getNumberofPstates(const std::string &hostname)

Get the total number of power states of a host.

Parameters

hostname – the host name

Throws
  • std::invalid_argument

  • std::runtime_error

Returns

The number of power states available for the host (as specified in the platform xml description file)

static unsigned int getNumCores()

Get the number of cores of the current host.

Returns

a number of cores

static std::vector<std::string> getRoute(std::string &src_host, std::string &dst_host)

Get the list of link names on the route between two hosts.

Parameters
  • src_host – src hostname

  • dst_host – dst hostname

Returns

a vector of link names

static bool hostExists(const std::string &hostname)

Determines whether a host exists for a given hostname (does not include VMs)

Parameters

hostname – the name of the host

Returns

true or false

static bool hostHasMountPoint(const std::string &hostname, const std::string &mount_point)

Determines whether a mount point is defined at a host.

Parameters
  • hostname – the host’s name

  • mount_point – the mount point

Returns

true if the host has a disk attached to the specified mount point, false otherwise

static bool isHostOn(const std::string &hostname)

Returns whether a host is on or not.

Parameters

hostname – the name of the host

Throws

std::invalid_argument

Returns

true or false

static bool isLinkOn(const std::string &link_name)

Returns whether a link is on or not.

Parameters

link_name – the name of the link

Throws

std::invalid_argument

Returns

true or false

static bool linkExists(const std::string &link_name)

Determines whether a link exists for a given link_name.

Parameters

link_name – the name of the link

Returns

true or false

static void readFromDisk(double num_bytes, const std::string &hostname, std::string mount_point)

Simulates a disk read.

Parameters
  • num_bytes – number of bytes to read

  • hostname – name of host to which disk is attached

  • mount_point – mount point

static void readFromDiskAndWriteToDiskConcurrently(double num_bytes_to_read, double num_bytes_to_write, const std::string &hostname, const std::string &read_mount_point, const std::string &write_mount_point)

Read from a local disk and write to a local disk concurrently.

Parameters
  • num_bytes_to_read – number of bytes to read

  • num_bytes_to_write – number of bytes to write

  • hostname – the host at which the disks are located

  • read_mount_point – the mountpoint to read from

  • write_mount_point – the mountpoint to write to

static void setHostProperty(const std::string &hostname, const std::string &property_name, const std::string &property_value)

Set a property associated to a host specified in the platform file (does not include VMs)

Parameters
  • hostname – the host name

  • property_name – the property name

  • property_value – the property value

static void setPstate(const std::string &hostname, unsigned long pstate)

Set the power state of the host.

Parameters
  • hostname – the host name

  • pstate – the power state index (the power state index is specified in the platform xml description file)

Throws
  • std::invalid_argument

  • std::runtime_error

static void sleep(double)

Simulates a sleep.

Parameters

duration – the number of seconds to sleep

static void turnOffHost(const std::string &hostname)

Turn off a host.

Parameters

hostname – the name of the host to turn off

Throws

std::invalid_argument

static void turnOffLink(const std::string &link_name)

Turn off a link.

Parameters

link_name – the name of the link to turn off

Throws

std::invalid_argument

static void turnOnHost(const std::string &hostname)

Turn on a host.

Parameters

hostname – the name of the host to turn on

Throws

std::invalid_argument

static void turnOnLink(const std::string &link_name)

Turn on a link.

Parameters

link_name – the name of the link to turn on

Throws

std::invalid_argument

static void writeToDisk(double num_bytes, const std::string &hostname, std::string mount_point)

Simulates a disk write.

Parameters
  • num_bytes – number of bytes to write

  • hostname – name of host to which disk is attached

  • mount_point – mount point

static void yield()

Simulates a yield.

Public Static Attributes

static constexpr double DEFAULT_RAM = (1024.0 * 1024.0 * 1024.0 * 1024.0 * 1024.0)

The ram capacity of a physical host whenever not specified in the platform description file.