@cloud-carbon-footprint/core
Version:
The core logic to get cloud usage data and estimate energy and carbon emissions.
29 lines • 1.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const _1 = require("../.");
const ENERGY_ESTIMATION_FORMULA = (averageCPUUtilization, virtualCPUHours, minWatts, maxWatts, powerUsageEffectiveness, replicationFactor = 1, averageWatts) => {
const calculatedAverageWatts = averageWatts
? averageWatts
: minWatts + (averageCPUUtilization / 100) * (maxWatts - minWatts);
return ((calculatedAverageWatts *
virtualCPUHours *
powerUsageEffectiveness *
replicationFactor) /
1000);
};
class ComputeEstimator {
estimate(data, region, emissionsFactors, constants) {
return data.map((usage) => {
const estimatedKilowattHours = ENERGY_ESTIMATION_FORMULA(usage.cpuUtilizationAverage, usage.vCpuHours, constants.minWatts, constants.maxWatts, constants.powerUsageEffectiveness, constants.replicationFactor, constants.averageWatts);
const estimatedCO2Emissions = (0, _1.estimateCo2)(estimatedKilowattHours, region, emissionsFactors);
return {
timestamp: usage.timestamp,
kilowattHours: estimatedKilowattHours,
co2e: estimatedCO2Emissions,
usesAverageCPUConstant: usage.usesAverageCPUConstant,
};
});
}
}
exports.default = ComputeEstimator;
//# sourceMappingURL=ComputeEstimator.js.map