![]() |
WRENCH
1.11
Cyberinfrastructure Simulation Workbench
|
Overview | Installation | Getting Started | WRENCH 101 | WRENCH 102 |
|
A class that implemnets a MemoryManager service to simulate Linux in-memory page caching for I/O operations. More...
#include <MemoryManager.h>
Public Member Functions | |
void | addToCache (std::string filename, std::shared_ptr< FileLocation > location, double amount, bool is_dirty) |
Add a file to cache. More... | |
double | evict (double amount, std::string excluded_filename) |
Evicted clean data from page cache. More... | |
void | export_log (std::string filename) |
Export the log to a file. More... | |
double | flush (double amount, std::string excluded_filename) |
Flush dirty data from cache. More... | |
double | getAvailableMemory () |
Get currently available cache memory. More... | |
double | getCachedAmount (std::string filename) |
Get amount of cached data of a file in cache. More... | |
std::vector< Block * > | getCachedBlocks (std::string filename) |
Get list of cached blocks of a file. More... | |
double | getDirty () const |
Get number of dirty bytes. More... | |
double | getDirtyRatio () const |
Get the dirty ratio. More... | |
double | getEvictableMemory () |
Get current evictable memory. More... | |
double | getFreeMemory () const |
Get the amount of free memory. More... | |
simgrid::s4u::Disk * | getMemory () const |
Get the memory disk. More... | |
double | getTotalCachedAmount () const |
Get total number of cached bytes. More... | |
double | getTotalMemory () |
Get total available cache memory. More... | |
void | kill () |
Immediately terminate periodical flushing. | |
void | log () |
Append to the log. | |
void | readChunkFromCache (std::string filename, double amount) |
Simulate a read from cache, re-access and update cached file data. More... | |
simgrid::s4u::IoPtr | readToCache (std::string filename, std::shared_ptr< FileLocation > location, double amount, bool async) |
Read data from disk to cache. More... | |
void | releaseMemory (double released_amt) |
Release memory. More... | |
void | setDirtyRatio (double dirty_ratio) |
Set the dirty ratio. More... | |
void | setMemory (simgrid::s4u::Disk *memory) |
Set the memory disk. More... | |
void | useAnonymousMemory (double used_amt) |
Update the amount of used memory. More... | |
void | writebackToCache (std::string filename, std::shared_ptr< FileLocation > location, double amount, bool is_dirty) |
Simulate a file write to cache. 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... | |
const WRENCH_MESSAGE_PAYLOADCOLLECTION_TYPE & | getMessagePayloadList () const |
Get all message payloads and their values of the Service. More... | |
double | getMessagePayloadValue (WRENCH_MESSAGEPAYLOAD_TYPE) |
Get a message payload of the Service as a double. More... | |
double | getNetworkTimeoutValue () |
Returns the service's network timeout value. More... | |
std::string | getPhysicalHostname () |
Get the physical name of the host on which the service is / will be running. More... | |
bool | getPropertyValueAsBoolean (WRENCH_PROPERTY_TYPE) |
Get a property of the Service as a boolean. More... | |
double | getPropertyValueAsDouble (WRENCH_PROPERTY_TYPE) |
Get a property of the Service as a double. More... | |
std::string | getPropertyValueAsString (WRENCH_PROPERTY_TYPE) |
Get a property of the Service as a string. More... | |
unsigned long | getPropertyValueAsUnsignedLong (WRENCH_PROPERTY_TYPE) |
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) | |
Constructor (daemon with a mailbox) More... | |
void | acquireDaemonLock () |
Method to acquire the daemon's lock. More... | |
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... | |
Simulation * | getSimulation () |
Get the service's simulation. 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 | releaseDaemonLock () |
Method to release the daemon's lock. More... | |
void | resumeActor () |
Resume the daemon/actor. | |
void | setSimulation (Simulation *simulation) |
Set the service's simulation. More... | |
void | setupOnExitFunction () |
Sets up the on_exit function for the actor. | |
void | startDaemon (bool _daemonized, bool _auto_restart) |
Start the daemon. More... | |
void | suspendActor () |
Suspend the daemon/actor. | |
Static Public Member Functions | |
static simgrid::s4u::Disk * | getDisk (std::string mountpoint, std::string hostname) |
Retrieve the disk where the file is stored. More... | |
static std::shared_ptr< MemoryManager > | initAndStart (Simulation *simulation, simgrid::s4u::Disk *memory, double dirty_ratio, int interval, int expired_time, std::string hostname) |
Initialize and start the memory_manager_service manager. More... | |
![]() | |
static simgrid::s4u::Mailbox * | getRunningActorRecvMailbox () |
Return the running actor's recv mailbox. More... | |
Additional Inherited Members | |
![]() | |
enum | State { UP, DOWN, SUSPENDED } |
Daemon states. More... | |
![]() | |
std::string | hostname |
The name of the host on which the daemon is running. | |
LifeSaver * | life_saver = nullptr |
The daemon's life saver. | |
simgrid::s4u::Mailbox * | mailbox |
The daemon's mailbox. | |
std::string | process_name |
The name of the daemon. | |
simgrid::s4u::Mailbox * | recv_mailbox |
The daemon's receive mailbox (to send to another daemon so that that daemon can reply) | |
![]() | |
static std::unordered_map< aid_t, simgrid::s4u::Mailbox * > | map_actor_to_recv_mailbox |
![]() | |
Service (std::string hostname, std::string process_name_prefix) | |
Constructor. More... | |
~Service () override | |
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 (WRENCH_MESSAGEPAYLOAD_TYPE, double) |
Set a message payload of the Service. More... | |
void | setMessagePayloads (WRENCH_MESSAGE_PAYLOADCOLLECTION_TYPE default_messagepayload_values, WRENCH_MESSAGE_PAYLOADCOLLECTION_TYPE overriden_messagepayload_values) |
Set default and user-defined message payloads. More... | |
void | setProperties (WRENCH_PROPERTY_COLLECTION_TYPE default_property_values, WRENCH_PROPERTY_COLLECTION_TYPE overriden_property_values) |
Set default and user-defined properties. More... | |
void | setProperty (WRENCH_PROPERTY_TYPE, const std::string &) |
Set a property of the Service. More... | |
![]() | |
bool | killActor () |
Kill the daemon/actor (does nothing if already dead) More... | |
void | runMainMethod () |
Method that run's the user-defined main method (that's called by the S4U actor class) | |
![]() | |
static void | assertServiceIsUp (std::shared_ptr< Service > s) |
Assert for the service being up. More... | |
![]() | |
WRENCH_MESSAGE_PAYLOADCOLLECTION_TYPE | 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) | |
WRENCH_PROPERTY_COLLECTION_TYPE | property_list |
The service's property list. | |
bool | shutting_down = false |
A boolean that indicates if the service is in the middle of shutting down. | |
![]() | |
unsigned int | num_starts = 0 |
The number of time that this daemon has started (i.e., 1 + number of restarts) | |
Simulation * | simulation |
a pointer to the simulation object | |
State | state |
The service's state. | |
A class that implemnets a MemoryManager service to simulate Linux in-memory page caching for I/O operations.
void wrench::MemoryManager::addToCache | ( | std::string | filename, |
std::shared_ptr< FileLocation > | location, | ||
double | amount, | ||
bool | is_dirty | ||
) |
Add a file to cache.
filename | file name |
location | file location |
amount | number of bytes |
is_dirty | true or false |
double wrench::MemoryManager::evict | ( | double | amount, |
std::string | excluded_filename | ||
) |
Evicted clean data from page cache.
amount | the requested amount of data to be evicted |
excluded_filename | name of file that cannot be evicted |
void wrench::MemoryManager::export_log | ( | std::string | filename | ) |
Export the log to a file.
filename | file path |
double wrench::MemoryManager::flush | ( | double | amount, |
std::string | excluded_filename | ||
) |
Flush dirty data from cache.
amount | request amount to be flushed |
excluded_filename | name of file to exclude |
double wrench::MemoryManager::getAvailableMemory | ( | ) |
Get currently available cache memory.
double wrench::MemoryManager::getCachedAmount | ( | std::string | filename | ) |
Get amount of cached data of a file in cache.
filename | name of the file |
std::vector< Block * > wrench::MemoryManager::getCachedBlocks | ( | std::string | filename | ) |
Get list of cached blocks of a file.
filename | : name of the file |
double wrench::MemoryManager::getDirty | ( | ) | const |
Get number of dirty bytes.
double wrench::MemoryManager::getDirtyRatio | ( | ) | const |
Get the dirty ratio.
|
static |
Retrieve the disk where the file is stored.
mountpoint | mountpoint on the disk where the file is stored |
hostname | host at which the file is stored |
double wrench::MemoryManager::getEvictableMemory | ( | ) |
Get current evictable memory.
double wrench::MemoryManager::getFreeMemory | ( | ) | const |
Get the amount of free memory.
simgrid::s4u::Disk * wrench::MemoryManager::getMemory | ( | ) | const |
Get the memory disk.
double wrench::MemoryManager::getTotalCachedAmount | ( | ) | const |
Get total number of cached bytes.
double wrench::MemoryManager::getTotalMemory | ( | ) |
Get total available cache memory.
|
static |
Initialize and start the memory_manager_service manager.
simulation | |
memory | disk model used to simulate memory_manager_service |
dirty_ratio | dirty_ratio parameter as in the Linux kernel |
interval | the interval that periodical flushing awakes in milliseconds |
expired_time | the expired time of dirty data to be flushed in milliseconds |
hostname | name of the host on which periodical flushing starts |
void wrench::MemoryManager::readChunkFromCache | ( | std::string | filename, |
double | amount | ||
) |
Simulate a read from cache, re-access and update cached file data.
filename | name of the file read |
amount | number of bytes |
simgrid::s4u::IoPtr wrench::MemoryManager::readToCache | ( | std::string | filename, |
std::shared_ptr< FileLocation > | location, | ||
double | amount, | ||
bool | async | ||
) |
Read data from disk to cache.
filename | file name |
location | file location |
amount | number of bytes |
async | tue if operation is asynchronous |
void wrench::MemoryManager::releaseMemory | ( | double | released_amt | ) |
Release memory.
released_amt | number of bytes to release |
void wrench::MemoryManager::setDirtyRatio | ( | double | dirty_ratio | ) |
Set the dirty ratio.
dirty_ratio | the dirty ratio |
void wrench::MemoryManager::setMemory | ( | simgrid::s4u::Disk * | memory | ) |
Set the memory disk.
memory | a disk that acts as the memory cache |
void wrench::MemoryManager::useAnonymousMemory | ( | double | used_amt | ) |
Update the amount of used memory.
used_amt | number of bytes |
void wrench::MemoryManager::writebackToCache | ( | std::string | filename, |
std::shared_ptr< FileLocation > | location, | ||
double | amount, | ||
bool | is_dirty | ||
) |
Simulate a file write to cache.
filename | name of the file written |
location | file location |
amount | amount of data written |
is_dirty | true or false |