X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/242fde5e8077f8193db4df5f262a9672085c8d8a..b1da263522ee9c5ca0b60d0ce75d3f06a2e641ba:/src/surf/plugins/energy.cpp diff --git a/src/surf/plugins/energy.cpp b/src/surf/plugins/energy.cpp index 8be806887d..4d44af5ddd 100644 --- a/src/surf/plugins/energy.cpp +++ b/src/surf/plugins/energy.cpp @@ -94,13 +94,19 @@ static void energyCpuDestructedCallback(Cpu *cpu){ else update_consumption_running(cpu, cpu_energy); - XBT_INFO("Total energy of host %s: %f Joules", cpu->getName(), cpu_energy->getConsumedEnergy()); - delete cpu_energy_it->second; - surf_energy->erase(cpu_energy_it); + // Adrien - October 2015, Changes related to VM energy extensions + // Only report/delete and erase if the cpu_energy is related to a physical one + if(cpu->isVirtual() == NULL){ + XBT_INFO("Total energy of host %s: %f Joules", cpu->getName(), cpu_energy->getConsumedEnergy()); + delete cpu_energy_it->second; + surf_energy->erase(cpu_energy_it); + } + } static void energyCpuActionStateChangedCallback(CpuAction *action, e_surf_action_state_t old, e_surf_action_state_t cur){ Cpu *cpu = getActionCpu(action); + CpuEnergy *cpu_energy = (*surf_energy)[cpu]; if(cpu_energy->last_updated < surf_get_clock()) { @@ -144,8 +150,8 @@ void sg_energy_plugin_init() { * */ CpuEnergy::CpuEnergy(Cpu *ptr) - : cpu(ptr) { + cpu = ptr; total_energy = 0; power_range_watts_list = getWattsRangeList(); last_updated = surf_get_clock(); @@ -212,7 +218,8 @@ double CpuEnergy::getCurrentWattsValue(double cpu_load) double CpuEnergy::getConsumedEnergy() { - if(last_updated < surf_get_clock()) { + + if(last_updated < surf_get_clock()) { if (cpu->getState() == SURF_RESOURCE_OFF) update_consumption_off(cpu, this); else