CpuTiTmgr::~CpuTiTmgr()
{
- if (trace_)
- delete trace_;
+ delete trace_;
}
/**
}
/**
-* \brief Creates a new integration trace from a tmgr_trace_t
-*
-* \param speedTrace CPU availability trace
-* \param value Percentage of CPU speed available (useful to fixed tracing)
-* \return Integration trace structure
-*/
-CpuTiTmgr::CpuTiTmgr(tmgr_trace_t speedTrace, double value) : speed_trace_(speedTrace)
+ * \brief Creates a new integration trace from a tmgr_trace_t
+ *
+ * \param speed_trace CPU availability trace
+ * \param value Percentage of CPU speed available (useful to fixed tracing)
+ * \return Integration trace structure
+ */
+CpuTiTmgr::CpuTiTmgr(tmgr_trace_t speed_trace, double value) : speed_trace_(speed_trace)
{
double total_time = 0.0;
trace_ = 0;
-/* no availability file, fixed trace */
- if (not speedTrace) {
+ /* no availability file, fixed trace */
+ if (not speed_trace) {
type_ = TRACE_FIXED;
value_ = value;
XBT_DEBUG("No availability trace. Constant value = %f", value);
}
/* only one point available, fixed trace */
- if (speedTrace->event_list.size() == 1) {
- trace_mgr::DatedValue val = speedTrace->event_list.front();
- type_ = TRACE_FIXED;
- value_ = val.value_;
+ if (speed_trace->event_list.size() == 1) {
+ type_ = TRACE_FIXED;
+ value_ = speed_trace->event_list.front().value_;
return;
}
type_ = TRACE_DYNAMIC;
/* count the total time of trace file */
- for (auto const& val : speedTrace->event_list)
+ for (auto const& val : speed_trace->event_list)
total_time += val.date_;
- trace_ = new CpuTiTrace(speedTrace);
+ trace_ = new CpuTiTrace(speed_trace);
last_time_ = total_time;
- total_ = trace_->integrate_simple(0, total_time);
+ total_ = trace_->integrate_simple(0, total_time);
XBT_DEBUG("Total integral %f, last_time %f ", total_, last_time_);
}
surf_cpu_model_pm = nullptr;
}
-Cpu *CpuTiModel::createCpu(simgrid::s4u::Host *host, std::vector<double>* speedPerPstate, int core)
+Cpu* CpuTiModel::create_cpu(simgrid::s4u::Host* host, std::vector<double>* speed_per_pstate, int core)
{
- return new CpuTi(this, host, speedPerPstate, core);
+ return new CpuTi(this, host, speed_per_pstate, core);
}
double CpuTiModel::next_occuring_event(double now)
/* iterates over modified cpus to update share resources */
for (auto it = std::begin(modified_cpus_); it != std::end(modified_cpus_);) {
- CpuTi& ti = *it;
- ++it; // increment iterator here since the following call to ti.updateActionsFinishTime() may invalidate it
- ti.update_actions_finish_time(now);
+ CpuTi& cpu = *it;
+ ++it; // increment iterator here since the following call to ti.update_actions_finish_time() may invalidate it
+ cpu.update_actions_finish_time(now);
}
/* get the min next event if heap not empty */
while (not get_action_heap().empty() && double_equals(get_action_heap().top_date(), now, sg_surf_precision)) {
CpuTiAction* action = static_cast<CpuTiAction*>(get_action_heap().pop());
XBT_DEBUG("Action %p: finish", action);
- action->finish(kernel::resource::Action::State::done);
+ action->finish(kernel::resource::Action::State::FINISHED);
/* update remaining amount of all actions */
action->cpu_->update_remaining_amount(surf_get_clock());
}
}
void CpuTi::set_speed_trace(tmgr_trace_t trace)
{
- if (speed_integrated_trace_)
- delete speed_integrated_trace_;
-
+ delete speed_integrated_trace_;
speed_integrated_trace_ = new CpuTiTmgr(trace, speed_.scale);
/* add a fake trace event if periodicity == 0 */
void CpuTi::apply_event(tmgr_trace_event_t event, double value)
{
if (event == speed_.event) {
- tmgr_trace_t speedTrace;
- CpuTiTmgr* trace;
-
XBT_DEBUG("Finish trace date: value %f", value);
/* update remaining of actions and put in modified cpu list */
update_remaining_amount(surf_get_clock());
set_modified(true);
- speedTrace = speed_integrated_trace_->speed_trace_;
+ tmgr_trace_t speedTrace = speed_integrated_trace_->speed_trace_;
trace_mgr::DatedValue val = speedTrace->event_list.back();
delete speed_integrated_trace_;
speed_.scale = val.value_;
- trace = new CpuTiTmgr(TRACE_FIXED, val.value_);
+ CpuTiTmgr* trace = new CpuTiTmgr(TRACE_FIXED, val.value_);
XBT_DEBUG("value %f", val.value_);
speed_integrated_trace_ = trace;
tmgr_trace_event_unref(&speed_.event);
- } else if (event == stateEvent_) {
+ } else if (event == state_event_) {
if (value > 0) {
if (is_off())
- host_that_restart.push_back(getHost());
+ host_that_restart.push_back(get_host());
turn_on();
} else {
turn_off();
/* put all action running on cpu to failed */
for (CpuTiAction& action : action_set_) {
- if (action.get_state() == kernel::resource::Action::State::running ||
- action.get_state() == kernel::resource::Action::State::ready ||
- action.get_state() == kernel::resource::Action::State::not_in_the_system) {
+ if (action.get_state() == kernel::resource::Action::State::INITED ||
+ action.get_state() == kernel::resource::Action::State::STARTED ||
+ action.get_state() == kernel::resource::Action::State::IGNORED) {
action.set_finish_time(date);
- action.set_state(kernel::resource::Action::State::failed);
+ action.set_state(kernel::resource::Action::State::FAILED);
get_model()->get_action_heap().remove(&action);
}
}
}
- tmgr_trace_event_unref(&stateEvent_);
+ tmgr_trace_event_unref(&state_event_);
} else {
xbt_die("Unknown event!\n");
sum_priority_ = 0.0;
for (CpuTiAction const& action : action_set_) {
/* action not running, skip it */
- if (action.get_state_set() != surf_cpu_model_pm->get_running_action_set())
+ if (action.get_state_set() != surf_cpu_model_pm->get_started_action_set())
continue;
/* bogus priority, skip it */
for (CpuTiAction& action : action_set_) {
double min_finish = -1;
/* action not running, skip it */
- if (action.get_state_set() != surf_cpu_model_pm->get_running_action_set())
+ if (action.get_state_set() != surf_cpu_model_pm->get_started_action_set())
continue;
/* verify if the action is really running on cpu */
return not action_set_.empty();
}
-double CpuTi::get_available_speed()
+double CpuTi::get_speed_ratio()
{
speed_.scale = speed_integrated_trace_->get_power_scale(surf_get_clock());
- return Cpu::get_available_speed();
+ return Cpu::get_speed_ratio();
}
/** @brief Update the remaining amount of actions */
XBT_DEBUG("Flops total: %f, Last update %f", area_total, last_update_);
for (CpuTiAction& action : action_set_) {
/* action not running, skip it */
- if (action.get_state_set() != get_model()->get_running_action_set())
+ if (action.get_state_set() != get_model()->get_started_action_set())
continue;
/* bogus priority, skip it */
CpuAction *CpuTi::execution_start(double size)
{
XBT_IN("(%s,%g)", get_cname(), size);
- CpuTiAction* action = new CpuTiAction(static_cast<CpuTiModel*>(get_model()), size, is_off(), this);
+ CpuTiAction* action = new CpuTiAction(this, size);
- action_set_.push_back(*action);
+ action_set_.push_back(*action); // Actually start the action
XBT_OUT();
return action;
duration = std::max(duration, sg_surf_precision);
XBT_IN("(%s,%g)", get_cname(), duration);
- CpuTiAction* action = new CpuTiAction(static_cast<CpuTiModel*>(get_model()), 1.0, is_off(), this);
+ CpuTiAction* action = new CpuTiAction(this, 1.0);
action->set_max_duration(duration);
action->suspended_ = kernel::resource::Action::SuspendStates::sleeping;
- if (duration == NO_MAX_DURATION) {
- /* Move to the *end* of the corresponding action set. This convention is used to speed up update_resource_state */
- simgrid::xbt::intrusive_erase(*action->get_state_set(), *action);
- action->state_set_ = &static_cast<CpuTiModel*>(get_model())->runningActionSetThatDoesNotNeedBeingChecked_;
- action->get_state_set()->push_back(*action);
- }
+ if (duration < 0) // NO_MAX_DURATION
+ action->set_state(simgrid::kernel::resource::Action::State::IGNORED);
action_set_.push_back(*action);
void CpuTi::set_modified(bool modified)
{
- CpuTiList& modifiedCpu = static_cast<CpuTiModel*>(get_model())->modified_cpus_;
+ CpuTiList& modified_cpus = static_cast<CpuTiModel*>(get_model())->modified_cpus_;
if (modified) {
if (not cpu_ti_hook.is_linked()) {
- modifiedCpu.push_back(*this);
+ modified_cpus.push_back(*this);
}
} else {
if (cpu_ti_hook.is_linked())
- simgrid::xbt::intrusive_erase(modifiedCpu, *this);
+ simgrid::xbt::intrusive_erase(modified_cpus, *this);
}
}
* Action *
**********/
-CpuTiAction::CpuTiAction(CpuTiModel *model_, double cost, bool failed, CpuTi *cpu)
- : CpuAction(model_, cost, failed)
- , cpu_(cpu)
+CpuTiAction::CpuTiAction(CpuTi* cpu, double cost) : CpuAction(cpu->get_model(), cost, cpu->is_off()), cpu_(cpu)
{
cpu_->set_modified(true);
}
void CpuTiAction::cancel()
{
- this->set_state(Action::State::failed);
+ this->set_state(Action::State::FAILED);
get_model()->get_action_heap().remove(this);
cpu_->set_modified(true);
}