X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b4b40408881fd9dfc49a7802d4a83689c506b36b..f9d7b35c174d52377ef297f786129e0340ae0778:/src/surf/cpu_interface.cpp diff --git a/src/surf/cpu_interface.cpp b/src/surf/cpu_interface.cpp index a935630d10..374db5c3f7 100644 --- a/src/surf/cpu_interface.cpp +++ b/src/surf/cpu_interface.cpp @@ -21,14 +21,6 @@ simgrid::surf::CpuModel *surf_cpu_model_vm; namespace simgrid { namespace surf { -simgrid::xbt::Extension Cpu::EXTENSION_ID; - -void Cpu::classInit() -{ - if (!EXTENSION_ID.valid()) - EXTENSION_ID = simgrid::Host::extension_create(); -} - /************* * Callbacks * *************/ @@ -139,32 +131,12 @@ void CpuModel::updateActionsStateFull(double now, double delta) /************ * Resource * ************/ -Cpu::Cpu() -{ -} - - Cpu::Cpu(Model *model, simgrid::Host *host, xbt_dynar_t speedPeakList, int pstate, int core, double speedPeak, double speedScale, e_surf_resource_state_t stateInitial) - : Resource(model, host->getName().c_str(), stateInitial) - , m_core(core) - , m_speedPeak(speedPeak) - , m_speedScale(speedScale) - , m_host(host) + : Cpu(model, host, NULL/*constraint*/, speedPeakList, pstate, core, speedPeak, speedScale, stateInitial) { - host->extension_set(Cpu::EXTENSION_ID, this); - - // Copy the power peak array: - p_speedPeakList = xbt_dynar_new(sizeof(double), nullptr); - unsigned long n = xbt_dynar_length(speedPeakList); - for (unsigned long i = 0; i != n; ++i) { - double value = xbt_dynar_get_as(speedPeakList, i, double); - xbt_dynar_push(p_speedPeakList, &value); - } - - m_pstate = pstate; } Cpu::Cpu(Model *model, simgrid::Host *host, lmm_constraint_t constraint, @@ -177,7 +149,8 @@ Cpu::Cpu(Model *model, simgrid::Host *host, lmm_constraint_t constraint, , m_speedScale(speedScale) , m_host(host) { - host->extension_set(Cpu::EXTENSION_ID, this); + host->p_cpu = this; + xbt_assert(m_speedScale > 0, "Available speed has to be >0"); // Copy the power peak array: p_speedPeakList = xbt_dynar_new(sizeof(double), nullptr); @@ -206,20 +179,6 @@ Cpu::Cpu(Model *model, simgrid::Host *host, lmm_constraint_t constraint, } } -Cpu::Cpu(Model *model, simgrid::Host *host, lmm_constraint_t constraint, - xbt_dynar_t speedPeakList, int pstate, - int core, double speedPeak, double speedScale) -: Cpu(model, host, constraint, speedPeakList, pstate, core, speedPeak, speedScale, SURF_RESOURCE_ON) -{ - xbt_assert(0,"FIXME: this constructor could be removed"); -} - -Cpu::Cpu(Model *model, simgrid::Host *host, - xbt_dynar_t speedPeakList, int pstate, - int core, double speedPeak, double speedScale) -: Cpu(model, host, speedPeakList, pstate, core, speedPeak, speedScale, SURF_RESOURCE_ON) -{} - Cpu::~Cpu() { if (p_constraintCoreId){ @@ -251,6 +210,8 @@ void Cpu::setPState(int pstate_index) double new_peak_speed = xbt_dynar_get_as(plist, pstate_index, double); m_pstate = pstate_index; m_speedPeak = new_peak_speed; + + onSpeedChange(); } int Cpu::getPState() @@ -277,6 +238,12 @@ double Cpu::getAvailableSpeed() return m_speedScale; } +void Cpu::onSpeedChange() { + TRACE_surf_host_set_speed(surf_get_clock(), getName(), + m_core * m_speedScale * m_speedPeak); +} + + int Cpu::getCore() { return m_core;