From 45d7d1ab9ae1e9a941dd34440467f25e6d337970 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Sat, 19 Mar 2016 23:38:05 +0100 Subject: [PATCH] cleanups in (wanna be) surf::CpuImpl --- src/include/surf/surf.h | 1 - src/surf/cpu_cas01.cpp | 7 +---- src/surf/cpu_interface.cpp | 58 ++++++++++++-------------------------- src/surf/cpu_interface.hpp | 22 +++++---------- 4 files changed, 26 insertions(+), 62 deletions(-) diff --git a/src/include/surf/surf.h b/src/include/surf/surf.h index 405f4e0a9b..aaa3015c98 100644 --- a/src/include/surf/surf.h +++ b/src/include/surf/surf.h @@ -486,7 +486,6 @@ XBT_PUBLIC(const char * ) surf_storage_get_host(surf_resource_t resource); /* Implementations of model object */ /**************************************/ -XBT_PUBLIC_DATA(int) autoload_surf_cpu_model; XBT_PUBLIC_DATA(void_f_void_t) surf_cpu_model_init_preparse; /** \ingroup SURF_models diff --git a/src/surf/cpu_cas01.cpp b/src/surf/cpu_cas01.cpp index db15c1a98e..2c4435c3da 100644 --- a/src/surf/cpu_cas01.cpp +++ b/src/surf/cpu_cas01.cpp @@ -9,8 +9,7 @@ #include "maxmin_private.hpp" #include "simgrid/sg_config.h" -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu_cas, surf_cpu, - "Logging specific to the SURF CPU IMPROVED module"); +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu_cas, surf_cpu, "Logging specific to the SURF CPU IMPROVED module"); /********* * Model * @@ -100,9 +99,6 @@ CpuCas01::CpuCas01(CpuCas01Model *model, simgrid::s4u::Host *host, xbt_dynar_t s lmm_constraint_new(model->getMaxminSystem(), this, core * xbt_dynar_get_as(speedPerPstate, 0/*pstate*/, double)), speedPerPstate, core) { - XBT_DEBUG("CPU create: peak=%f, pstate=%d", speed_.peak, pstate_); - - coresAmount_ = core; } CpuCas01::~CpuCas01() @@ -203,7 +199,6 @@ CpuAction *CpuCas01::sleep(double duration) CpuCas01Action *action = new CpuCas01Action(getModel(), 1.0, isOff(), speed_.scale * speed_.peak, getConstraint()); - // FIXME: sleep variables should not consume 1.0 in lmm_expand action->m_maxDuration = duration; action->m_suspended = 2; diff --git a/src/surf/cpu_interface.cpp b/src/surf/cpu_interface.cpp index 3d8068c29c..6bb195a11b 100644 --- a/src/surf/cpu_interface.cpp +++ b/src/surf/cpu_interface.cpp @@ -10,10 +10,8 @@ #include "src/instr/instr_private.h" // TRACE_is_enabled(). FIXME: remove by subscribing tracing to the surf signals XBT_LOG_EXTERNAL_CATEGORY(surf_kernel); -XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu, surf, - "Logging specific to the SURF cpu module"); +XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_cpu, surf, "Logging specific to the SURF cpu module"); -int autoload_surf_cpu_model = 1; void_f_void_t surf_cpu_model_init_preparse = NULL; simgrid::surf::CpuModel *surf_cpu_model_pm; @@ -96,12 +94,12 @@ void CpuModel::updateActionsStateFull(double now, double delta) for(ActionList::iterator it(running_actions->begin()), itNext=it, itend(running_actions->end()) ; it != itend ; it=itNext) { - ++itNext; + ++itNext; action = static_cast(&*it); if (TRACE_is_enabled()) { - Cpu *x = static_cast (lmm_constraint_id(lmm_get_cnst_from_var(getMaxminSystem(), action->getVariable(), 0)) ); + Cpu *cpu = static_cast (lmm_constraint_id(lmm_get_cnst_from_var(getMaxminSystem(), action->getVariable(), 0)) ); - TRACE_surf_host_set_utilization(x->getName(), + TRACE_surf_host_set_utilization(cpu->getName(), action->getCategory(), lmm_variable_getvalue(action->getVariable()), now - delta, @@ -126,15 +124,12 @@ void CpuModel::updateActionsStateFull(double now, double delta) action->setState(SURF_ACTION_DONE); } } - - return; } /************ * Resource * ************/ -Cpu::Cpu(Model *model, simgrid::s4u::Host *host, - xbt_dynar_t speedPerPstate, int core) +Cpu::Cpu(Model *model, simgrid::s4u::Host *host, xbt_dynar_t speedPerPstate, int core) : Cpu(model, host, NULL/*constraint*/, speedPerPstate, core) { } @@ -160,16 +155,13 @@ Cpu::Cpu(Model *model, simgrid::s4u::Host *host, lmm_constraint_t constraint, xbt_dynar_push(speedPerPstate_, &value); } - /* Currently, we assume that a VM does not have a multicore CPU. */ - if (core > 1) - xbt_assert(model == surf_cpu_model_pm); + xbt_assert(model == surf_cpu_model_pm || core==1, "Currently, VM cannot be multicore"); if (model->getUpdateMechanism() != UM_UNDEFINED) { - p_constraintCore = xbt_new(lmm_constraint_t, core); - p_constraintCoreId = xbt_new(void*, core); + p_constraintCore = xbt_new(lmm_constraint_t, core); + p_constraintCoreId = xbt_new(void*, core); - int i; - for (i = 0; i < core; i++) { + for (int i = 0; i < core; i++) { /* just for a unique id, never used as a string. */ p_constraintCoreId[i] = bprintf("%s:%i", host->name().c_str(), i); p_constraintCore[i] = lmm_constraint_new(model->getMaxminSystem(), p_constraintCoreId[i], speed_.scale * speed_.peak); @@ -180,15 +172,12 @@ Cpu::Cpu(Model *model, simgrid::s4u::Host *host, lmm_constraint_t constraint, Cpu::~Cpu() { if (p_constraintCoreId){ - for (int i = 0; i < coresAmount_; i++) { - xbt_free(p_constraintCoreId[i]); - } + for (int i = 0; i < coresAmount_; i++) + xbt_free(p_constraintCoreId[i]); xbt_free(p_constraintCore); } - if (p_constraintCoreId) - xbt_free(p_constraintCoreId); - if (speedPerPstate_) - xbt_dynar_free(&speedPerPstate_); + xbt_free(p_constraintCoreId); + xbt_dynar_free(&speedPerPstate_); } double Cpu::getCurrentPowerPeak() @@ -239,8 +228,7 @@ double Cpu::getAvailableSpeed() } void Cpu::onSpeedChange() { - TRACE_surf_host_set_speed(surf_get_clock(), getName(), - coresAmount_ * speed_.scale * speed_.peak); + TRACE_surf_host_set_speed(surf_get_clock(), getName(), coresAmount_ * speed_.scale * speed_.peak); } @@ -269,16 +257,10 @@ void Cpu::setSpeedTrace(tmgr_trace_t trace) void CpuAction::updateRemainingLazy(double now) { - double delta = 0.0; + xbt_assert(getStateSet() == getModel()->getRunningActionSet(), "You're updating an action that is not running."); + xbt_assert(getPriority() > 0, "You're updating an action that seems suspended."); - xbt_assert(getStateSet() == getModel()->getRunningActionSet(), - "You're updating an action that is not running."); - - /* bogus priority, skip it */ - xbt_assert(getPriority() > 0, - "You're updating an action that seems suspended."); - - delta = now - m_lastUpdate; + double delta = now - m_lastUpdate; if (m_remains > 0) { XBT_CDEBUG(surf_kernel, "Updating action(%p): remains was %f, last_update was: %f", this, m_remains, m_lastUpdate); @@ -330,11 +312,7 @@ void CpuAction::setAffinity(Cpu *cpu, unsigned long mask) nbits += 1; } - if (nbits > 1) { - XBT_CRITICAL("Do not specify multiple cores for an affinity mask."); - XBT_CRITICAL("See the comment in cpu_action_set_affinity()."); - DIE_IMPOSSIBLE; - } + xbt_assert(nbits <= 1, "Affinity mask cannot span over multiple cores."); } for (int i = 0; i < cpu->coresAmount_; i++) { diff --git a/src/surf/cpu_interface.hpp b/src/surf/cpu_interface.hpp index f8c4092118..5e9e7a0246 100644 --- a/src/surf/cpu_interface.hpp +++ b/src/surf/cpu_interface.hpp @@ -151,35 +151,27 @@ public: **********/ /** @ingroup SURF_cpu_interface - * @brief SURF Cpu action interface class - * @details A CpuAction represent the execution of code on a Cpu + * @brief A CpuAction represents the execution of code on one or several Cpus */ XBT_PUBLIC_CLASS CpuAction : public simgrid::surf::Action { friend XBT_PUBLIC(Cpu*) getActionCpu(CpuAction *action); public: -/** @brief Callbacks handler which emit the callbacks after CpuAction State changed * - * @details Callback functions have the following signature: `void(CpuAction *action, e_surf_action_state_t previous)` - */ + /** @brief Callbacks handler which emit the callbacks after CpuAction State changed * + * @details Callback functions have the following signature: `void(CpuAction *action, e_surf_action_state_t previous)` + */ static simgrid::xbt::signal onStateChange; - /** @brief CpuAction constructor */ CpuAction(simgrid::surf::Model *model, double cost, bool failed) - : Action(model, cost, failed) {} //FIXME:DEADCODE? - - /** @brief CpuAction constructor */ + : Action(model, cost, failed) {} //FIXME:DEADCODE? CpuAction(simgrid::surf::Model *model, double cost, bool failed, lmm_variable_t var) - : Action(model, cost, failed, var) {} + : Action(model, cost, failed, var) {} - /** - * @brief Set the affinity of the current CpuAction - * @details [TODO] - */ + /** @brief Set the affinity of the current CpuAction */ virtual void setAffinity(Cpu *cpu, unsigned long mask); void setState(e_surf_action_state_t state); void updateRemainingLazy(double now); - }; } -- 2.20.1