X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/fe304706848f0a64477d4687b3ea97d5b9a0c35c..122ace8270460324eaa28fd429cc3f59e621f292:/include/simgrid/kernel/resource/Action.hpp diff --git a/include/simgrid/kernel/resource/Action.hpp b/include/simgrid/kernel/resource/Action.hpp index 475ba174f1..6900b01fce 100644 --- a/include/simgrid/kernel/resource/Action.hpp +++ b/include/simgrid/kernel/resource/Action.hpp @@ -20,12 +20,12 @@ namespace simgrid { namespace kernel { namespace resource { -typedef std::pair heap_element_type; +typedef std::pair heap_element_type; typedef boost::heap::pairing_heap, boost::heap::stable, boost::heap::compare>> heap_type; -typedef std::pair heap_element_type; +typedef std::pair heap_element_type; class XBT_PUBLIC ActionHeap : public heap_type { friend Action; @@ -47,7 +47,14 @@ public: /** @details An action is a consumption on a resource (e.g.: a communication for the network). * * It is related (but still different) from activities, that are the stuff on which an actor can be blocked. - * See simgrid::s4u::Activity for more details. + * + * - A sequential execution activity encompasses 2 actions: one for the exec itself, + * and a time-limited sleep used as timeout detector. + * - A point-to-point communication activity encompasses 3 actions: one for the comm itself + * (which spans on all links of the path), and one infinite sleep used as failure detector + * on both sender and receiver hosts. + * - Synchronization activities may possibly be connected to no action. + */ class XBT_PUBLIC Action { friend ActionHeap; @@ -191,11 +198,11 @@ public: /** @brief Set the tracing category of the current Action */ void set_category(const std::string& category) { category_ = category; } - /** @brief Get the priority of the current Action */ - double get_priority() const { return sharing_priority_; }; - /** @brief Set the priority of the current Action */ - virtual void set_priority(double priority); - void set_priority_no_update(double priority) { sharing_priority_ = priority; } + /** @brief Get the sharing_penalty (RTT or 1/thread_count) of the current Action */ + double get_sharing_penalty() const { return sharing_penalty_; }; + /** @brief Set the sharing_penalty (RTT or 1/thread_count) of the current Action */ + virtual void set_sharing_penalty(double sharing_penalty); + void set_sharing_penalty_no_update(double sharing_penalty) { sharing_penalty_ = sharing_penalty; } /** @brief Get the state set in which the action is */ StateSet* get_state_set() const { return state_set_; }; @@ -206,7 +213,7 @@ private: StateSet* state_set_; Action::SuspendStates suspended_ = Action::SuspendStates::RUNNING; int refcount_ = 1; - double sharing_priority_ = 1.0; /**< priority (1.0 by default) */ + double sharing_penalty_ = 1.0; /**< priority (1.0 by default) */ double max_duration_ = NO_MAX_DURATION; /*< max_duration (may fluctuate until the task is completed) */ double remains_; /**< How much of that cost remains to be done in the currently running task */ double start_time_; /**< start time */ @@ -214,14 +221,14 @@ private: std::string category_; /**< tracing category for categorized resource utilization monitoring */ double cost_; - simgrid::kernel::resource::Model* model_; + Model* model_; void* data_ = nullptr; /**< for your convenience */ activity::ActivityImpl* activity_ = nullptr; /* LMM */ - double last_update_ = 0; - double last_value_ = 0; - kernel::lmm::Variable* variable_ = nullptr; + double last_update_ = 0; + double last_value_ = 0; + lmm::Variable* variable_ = nullptr; ActionHeap::Type type_ = ActionHeap::Type::unset; boost::optional heap_hook_ = boost::none;