-/* Copyright (c) 2013-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2013-2020. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
xbt_assert(surf_cpu_model_pm == nullptr, "CPU model already initialized. This should not happen.");
xbt_assert(surf_cpu_model_vm == nullptr, "CPU model already initialized. This should not happen.");
- surf_cpu_model_pm = new simgrid::kernel::resource::CpuTiModel();
- surf_cpu_model_vm = new simgrid::kernel::resource::CpuTiModel();
+ surf_cpu_model_pm = new CpuTiModel();
+ surf_cpu_model_vm = new CpuTiModel();
}
CpuTiModel::CpuTiModel() : CpuModel(Model::UpdateAlgo::FULL)
surf_cpu_model_pm = nullptr;
}
-kernel::resource::Cpu* CpuTiModel::create_cpu(s4u::Host* host, const std::vector<double>& speed_per_pstate, int core)
+Cpu* CpuTiModel::create_cpu(s4u::Host* host, const std::vector<double>& speed_per_pstate, int core)
{
return new CpuTi(this, host, speed_per_pstate, core);
}
while (not get_action_heap().empty() && double_equals(get_action_heap().top_date(), now, sg_surf_precision)) {
auto* action = static_cast<CpuTiAction*>(get_action_heap().pop());
XBT_DEBUG("Action %p: finish", action);
- action->finish(kernel::resource::Action::State::FINISHED);
+ action->finish(Action::State::FINISHED);
/* update remaining amount of all actions */
action->cpu_->update_remaining_amount(surf_get_clock());
}
/************
* Resource *
************/
-CpuTi::CpuTi(CpuTiModel* model, simgrid::s4u::Host* host, const std::vector<double>& speed_per_pstate, int core)
+CpuTi::CpuTi(CpuTiModel* model, s4u::Host* host, const std::vector<double>& speed_per_pstate, int core)
: Cpu(model, host, speed_per_pstate, core)
{
xbt_assert(core == 1, "Multi-core not handled by this model yet");
set_modified(false);
delete speed_integrated_trace_;
}
+
void CpuTi::set_speed_profile(kernel::profile::Profile* profile)
{
delete speed_integrated_trace_;
if (profile && profile->event_list.size() > 1) {
kernel::profile::DatedValue val = profile->event_list.back();
if (val.date_ < 1e-12) {
- auto* prof = new simgrid::kernel::profile::Profile();
+ auto* prof = new kernel::profile::Profile();
speed_.event = prof->schedule(&profile::future_evt_set, this);
}
}
} else if (event == state_event_) {
if (value > 0) {
if (not is_on()) {
- XBT_VERB("Restart processes on host %s", get_host()->get_cname());
+ XBT_VERB("Restart actors on host %s", get_host()->get_cname());
get_host()->turn_on();
}
} else {
/* put all action running on cpu to failed */
for (CpuTiAction& action : action_set_) {
- 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) {
+ if (action.get_state() == Action::State::INITED || action.get_state() == Action::State::STARTED ||
+ action.get_state() == Action::State::IGNORED) {
action.set_finish_time(date);
- action.set_state(kernel::resource::Action::State::FAILED);
+ action.set_state(Action::State::FAILED);
get_model()->get_action_heap().remove(&action);
}
}
}
/* add in action heap */
if (min_finish != NO_MAX_DURATION)
- get_model()->get_action_heap().update(&action, min_finish, kernel::resource::ActionHeap::Type::unset);
+ get_model()->get_action_heap().update(&action, min_finish, ActionHeap::Type::unset);
else
get_model()->get_action_heap().remove(&action);
last_update_ = now;
}
-kernel::resource::CpuAction* CpuTi::execution_start(double size)
+CpuAction* CpuTi::execution_start(double size)
{
XBT_IN("(%s,%g)", get_cname(), size);
auto* action = new CpuTiAction(this, size);
return action;
}
-kernel::resource::CpuAction* CpuTi::sleep(double duration)
+CpuAction* CpuTi::sleep(double duration)
{
if (duration > 0)
duration = std::max(duration, sg_surf_precision);
auto* action = new CpuTiAction(this, 1.0);
action->set_max_duration(duration);
- action->set_suspend_state(kernel::resource::Action::SuspendStates::SLEEPING);
+ action->set_suspend_state(Action::SuspendStates::SLEEPING);
if (duration == NO_MAX_DURATION)
- action->set_state(simgrid::kernel::resource::Action::State::IGNORED);
+ action->set_state(Action::State::IGNORED);
action_set_.push_back(*action);
}
} else {
if (cpu_ti_hook.is_linked())
- simgrid::xbt::intrusive_erase(modified_cpus, *this);
+ xbt::intrusive_erase(modified_cpus, *this);
}
}
{
/* remove from action_set */
if (action_ti_hook.is_linked())
- simgrid::xbt::intrusive_erase(cpu_->action_set_, *this);
+ xbt::intrusive_erase(cpu_->action_set_, *this);
/* remove from heap */
get_model()->get_action_heap().remove(this);
cpu_->set_modified(true);
min_finish = get_finish_time();
/* add in action heap */
- get_model()->get_action_heap().update(this, min_finish, kernel::resource::ActionHeap::Type::unset);
+ get_model()->get_action_heap().update(this, min_finish, ActionHeap::Type::unset);
XBT_OUT();
}