Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
No vm when ptask on
[simgrid.git] / src / surf / cpu.hpp
index cebc48c..669578a 100644 (file)
@@ -43,14 +43,21 @@ public:
   Cpu(CpuModelPtr model, const char* name, xbt_dict_t properties) : Resource(model, name, properties) {};
   virtual ActionPtr execute(double size)=0;
   virtual ActionPtr sleep(double duration)=0;
-  int getCore();
-  double getSpeed(double load);
-  double getAvailableSpeed();
+  virtual int getCore();
+  virtual double getSpeed(double load);
+  virtual double getAvailableSpeed();
+
+  virtual double getCurrentPowerPeak()=0;
+  virtual double getPowerPeakAt(int pstate_index)=0;
+  virtual int getNbPstates()=0;
+  virtual void setPowerPeakAt(int pstate_index)=0;
+  virtual double getConsumedEnergy()=0;
+
   void addTraces(void);
   double m_powerPeak;            /*< CPU power peak */
   double m_powerScale;           /*< Percentage of CPU disponible */
-protected:
   int m_core;
+protected:
 
   //virtual boost::shared_ptr<Action> execute(double size) = 0;
   //virtual boost::shared_ptr<Action> sleep(double duration) = 0;
@@ -60,7 +67,8 @@ class CpuLmm : public ResourceLmm, public Cpu {
 public:
   CpuLmm(){};
   CpuLmm(CpuModelPtr model, const char* name, xbt_dict_t properties) : ResourceLmm(), Cpu(model, name, properties) {};
-
+  /* Note (hypervisor): */
+  lmm_constraint_t *p_constraintCore;
 };
 
 /**********
@@ -69,14 +77,20 @@ public:
 class CpuAction : virtual public Action {
 public:
   CpuAction(){};
-  CpuAction(ModelPtr model, double cost, bool failed): Action(model, cost, failed) {};
+  CpuAction(ModelPtr model, double cost, bool failed)
+  : Action(model, cost, failed) {};
 };
 
 class CpuActionLmm : public ActionLmm, public CpuAction {
 public:
   CpuActionLmm(){};
-  CpuActionLmm(ModelPtr model, double cost, bool failed): ActionLmm(model, cost, failed), CpuAction(model, cost, failed) {};
+  CpuActionLmm(ModelPtr model, double cost, bool failed)
+  : Action(model, cost, failed), ActionLmm(model, cost, failed), CpuAction(model, cost, failed) {};
   void updateRemainingLazy(double now);
+  virtual void updateEnergy()=0;
+  void setAffinity(CpuLmmPtr cpu, unsigned long mask);
+  void setBound(double bound);
+  double m_bound;
 };