- /**
- * @brief Get the current Cpu power peak
- *
- * @return The current Cpu power peak
- */
- virtual double getCurrentPowerPeak();
-
-
- virtual double getPowerPeakAt(int pstate_index)=0;
-
- virtual int getNbPstates()=0;
-
- virtual void setPstate(int pstate_index)=0;
- virtual int getPstate()=0;
-
- void setState(e_surf_resource_state_t state);
-
- void addTraces(void);
- int m_core;
- double m_powerPeak; /*< CPU power peak */
- double m_powerScale; /*< Percentage of CPU disponible */
-
- /* Note (hypervisor): */
- lmm_constraint_t *p_constraintCore;
- void **p_constraintCoreId;
-
- // ////
- // Adrien - Oct 2015. Additional code related to VM energy extensions
- /* TODO:
- 1./ create a VirtualCpuModel that inherits from CpuModel or create
- a VirtualCpuCas01Model that inherist from CpuCas01Model
- => Question: not sure which one is really usefull :( The objective is to
- be able to create a VirtualCpu instead of a Cpu (i.e. a CpuCas01 to be exact).
- 2. create VirtualCpu class that inherits from Cpu or create
- a VirtualCpuCas01 class that inherits from CpuCas01 (same issue as the one described above).
- Such modifications would enable us to remove the isVirtual method and
- actually use the polymorphism feature of C++. It will also enable us
- to overwrite the cpu_energy hashmap in energyCpuCreateCallBack instead of invoking
- setVirtual().
- So to make a long story short, it will be cleaner from the software viewpoint
- and patches welcome ;) - Adrien October 20 2015
- */
- Cpu *physCpu = NULL;
-
- /**
- * @brief Set the current Cpu as virtual or physical
- *
- * @param isVirtual true to indicate this Cpu is virtual, false otherwise
- */
- void setVirtual(Cpu *physCpu);
-
- /**
- * @brief Learn if this Cpu is physical or virtual
- *
- * @return phys CPU if the current Cpu is a VM, null otherwise
- */
- Cpu* isVirtual(void);
-
- // Adrien - Oct 2015. End of additional code related to VM energy extensions
- // ////
+ /** @brief Get the current Cpu computational speed */
+ virtual double getPstateSpeedCurrent();
+ virtual double getPstateSpeed(int pstate_index);
+
+ virtual int getNbPStates();
+ virtual void setPState(int pstate_index);
+ virtual int getPState();
+
+ simgrid::s4u::Host* getHost() { return host_; }
+
+public:
+ int coresAmount_ = 1;
+ simgrid::s4u::Host* host_;
+
+ std::vector<double> speedPerPstate_; /*< List of supported CPU capacities (pstate related) */
+ int pstate_ = 0; /*< Current pstate (index in the speedPeakList)*/
+
+public:
+ virtual void setStateTrace(tmgr_trace_t trace); /*< setup the trace file with states events (ON or OFF). Trace must contain boolean values (0 or 1). */
+ virtual void setSpeedTrace(tmgr_trace_t trace); /*< setup the trace file with availability events (peak speed changes due to external load). Trace must contain relative values (ratio between 0 and 1) */
+
+ tmgr_trace_iterator_t stateEvent_ = nullptr;
+ s_surf_metric_t speed_ = {1.0, 0, nullptr};