X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/16bbb8a8212497d9c44c81333ed2c0e689e0c5af..03d87ef83eada5a3cf9aacce9e6a5dc0d169aaa3:/src/surf/host_ptask_L07.cpp diff --git a/src/surf/host_ptask_L07.cpp b/src/surf/host_ptask_L07.cpp index adc4aba6ea..bc73ae68fb 100644 --- a/src/surf/host_ptask_L07.cpp +++ b/src/surf/host_ptask_L07.cpp @@ -89,7 +89,7 @@ NetworkL07Model::~NetworkL07Model() } -double HostL07Model::shareResources(double /*now*/) +double HostL07Model::next_occuring_event(double /*now*/) { L07Action *action; @@ -337,20 +337,9 @@ void HostL07Model::addTraces() xbt_dict_cursor_t cursor = NULL; char *trace_name, *elm; - if (!trace_connect_list_host_speed) + if (!trace_connect_list_link_avail) return; - /* Connect traces relative to cpu */ - xbt_dict_foreach(trace_connect_list_host_speed, cursor, trace_name, elm) { - tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name); - Cpu *cpu = sg_host_by_name(elm)->pimpl_cpu; - - xbt_assert(cpu, "Host %s undefined", elm); - xbt_assert(trace, "Trace %s undefined", trace_name); - - cpu->set_speed_trace(trace); - } - /* Connect traces relative to network */ xbt_dict_foreach(trace_connect_list_link_avail, cursor, trace_name, elm) { tmgr_trace_t trace = (tmgr_trace_t) xbt_dict_get_or_null(traces_set_list, trace_name); @@ -359,7 +348,7 @@ void HostL07Model::addTraces() xbt_assert(link, "Link %s undefined", elm); xbt_assert(trace, "Trace %s undefined", trace_name); - link->p_stateEvent = future_evt_set->add_trace(trace, 0.0, link); + link->m_stateEvent = future_evt_set->add_trace(trace, 0.0, link); } xbt_dict_foreach(trace_connect_list_link_bw, cursor, trace_name, elm) { @@ -369,7 +358,7 @@ void HostL07Model::addTraces() xbt_assert(link, "Link %s undefined", elm); xbt_assert(trace, "Trace %s undefined", trace_name); - link->p_bwEvent = future_evt_set->add_trace(trace, 0.0, link); + link->m_bandwidth.event = future_evt_set->add_trace(trace, 0.0, link); } xbt_dict_foreach(trace_connect_list_link_lat, cursor, trace_name, elm) { @@ -379,7 +368,7 @@ void HostL07Model::addTraces() xbt_assert(link, "Link %s undefined", elm); xbt_assert(trace, "Trace %s undefined", trace_name); - link->p_latEvent = future_evt_set->add_trace(trace, 0.0, link); + link->m_latency.event = future_evt_set->add_trace(trace, 0.0, link); } } @@ -397,7 +386,7 @@ CpuL07::CpuL07(CpuL07Model *model, simgrid::s4u::Host *host, p_constraint = lmm_constraint_new(model->getMaxminSystem(), this, xbt_dynar_get_as(speedPeakList,pstate,double) * speedScale); if (speedTrace) - p_speedEvent = future_evt_set->add_trace(speedTrace, 0.0, this); + p_speed.event = future_evt_set->add_trace(speedTrace, 0.0, this); if (state_trace) p_stateEvent = future_evt_set->add_trace(state_trace, 0.0, this); @@ -408,27 +397,24 @@ CpuL07::~CpuL07() } LinkL07::LinkL07(NetworkL07Model *model, const char* name, xbt_dict_t props, - double bw_initial, - tmgr_trace_t bw_trace, - double lat_initial, - tmgr_trace_t lat_trace, - int initiallyOn, - tmgr_trace_t state_trace, + double bw_initial, tmgr_trace_t bw_trace, + double lat_initial, tmgr_trace_t lat_trace, + int initiallyOn, tmgr_trace_t state_trace, e_surf_link_sharing_policy_t policy) - : Link(model, name, props, lmm_constraint_new(model->getMaxminSystem(), this, bw_initial), future_evt_set, state_trace) + : Link(model, name, props, lmm_constraint_new(model->getMaxminSystem(), this, bw_initial), state_trace) { - m_bwCurrent = bw_initial; + m_bandwidth.peak = bw_initial; if (bw_trace) - p_bwEvent = future_evt_set->add_trace(bw_trace, 0.0, this); + m_bandwidth.event = future_evt_set->add_trace(bw_trace, 0.0, this); if (initiallyOn) turnOn(); else turnOff(); - m_latCurrent = lat_initial; + m_latency.peak = lat_initial; if (lat_trace) - p_latEvent = future_evt_set->add_trace(lat_trace, 0.0, this); + m_latency.event = future_evt_set->add_trace(lat_trace, 0.0, this); if (policy == SURF_LINK_FATPIPE) lmm_constraint_shared(getConstraint()); @@ -465,14 +451,14 @@ void CpuL07::onSpeedChange() { lmm_variable_t var = NULL; lmm_element_t elem = NULL; - lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(), m_speedPeak * m_speedScale); + lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(), p_speed.peak * p_speed.scale); while ((var = lmm_get_var_from_cnst (getModel()->getMaxminSystem(), getConstraint(), &elem))) { Action *action = static_cast(lmm_variable_id(var)); lmm_update_variable_bound(getModel()->getMaxminSystem(), action->getVariable(), - m_speedScale * m_speedPeak); + p_speed.scale * p_speed.peak); } Cpu::onSpeedChange(); @@ -483,12 +469,12 @@ bool LinkL07::isUsed(){ return lmm_constraint_used(getModel()->getMaxminSystem(), getConstraint()); } -void CpuL07::updateState(tmgr_trace_iterator_t triggered, double value, double /*date*/){ +void CpuL07::apply_event(tmgr_trace_iterator_t triggered, double value){ XBT_DEBUG("Updating cpu %s (%p) with value %g", getName(), this, value); - if (triggered == p_speedEvent) { - m_speedScale = value; + if (triggered == p_speed.event) { + p_speed.scale = value; onSpeedChange(); - tmgr_trace_event_unref(&p_speedEvent); + tmgr_trace_event_unref(&p_speed.event); } else if (triggered == p_stateEvent) { if (value > 0) turnOn(); @@ -500,43 +486,38 @@ void CpuL07::updateState(tmgr_trace_iterator_t triggered, double value, double / } } -void LinkL07::updateState(tmgr_trace_iterator_t triggered, double value, double date) { - XBT_DEBUG("Updating link %s (%p) with value=%f for date=%g", getName(), this, value, date); - if (triggered == p_bwEvent) { - updateBandwidth(value, date); - tmgr_trace_event_unref(&p_bwEvent); - } else if (triggered == p_latEvent) { - updateLatency(value, date); - tmgr_trace_event_unref(&p_latEvent); - } else if (triggered == p_stateEvent) { +void LinkL07::apply_event(tmgr_trace_iterator_t triggered, double value) { + XBT_DEBUG("Updating link %s (%p) with value=%f", getName(), this, value); + if (triggered == m_bandwidth.event) { + updateBandwidth(value); + tmgr_trace_event_unref(&m_bandwidth.event); + } else if (triggered == m_latency.event) { + updateLatency(value); + tmgr_trace_event_unref(&m_latency.event); + } else if (triggered == m_stateEvent) { if (value > 0) turnOn(); else turnOff(); - tmgr_trace_event_unref(&p_stateEvent); + tmgr_trace_event_unref(&m_stateEvent); } else { xbt_die("Unknown event ! \n"); } } -double LinkL07::getBandwidth() -{ - return m_bwCurrent; -} - -void LinkL07::updateBandwidth(double value, double date) +void LinkL07::updateBandwidth(double value) { - m_bwCurrent = value; - lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(), m_bwCurrent); + m_bandwidth.peak = value; + lmm_update_constraint_bound(getModel()->getMaxminSystem(), getConstraint(), m_bandwidth.peak * m_bandwidth.scale); } -void LinkL07::updateLatency(double value, double date) +void LinkL07::updateLatency(double value) { lmm_variable_t var = NULL; L07Action *action; lmm_element_t elem = NULL; - m_latCurrent = value; + m_latency.peak = value; while ((var = lmm_get_var_from_cnst(getModel()->getMaxminSystem(), getConstraint(), &elem))) { action = static_cast(lmm_variable_id(var)); action->updateBound();