UNPKG

@oaklean/profiler-core

Version:

Part of the @oaklean suite. It provides all basic functions to work with the `.oak` file format. It allows parsing the `.oak` file format as well as tools for analyzing the measurement values. It also provides all necessary capabilities required for prec

83 lines 6.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PowerMetricsData = void 0; const BaseMetricsData_1 = require("./BaseMetricsData"); const TimeHelper_1 = require("../../helper/TimeHelper"); class PowerMetricsData extends BaseMetricsData_1.BaseMetricsData { constructor(data) { super(); this._data = data; this._energyImpactPerTask = undefined; this.timeDelta = TimeHelper_1.TimeHelper.getTimeDelta(); } toJSON() { return { data: Object.assign(Object.assign({}, this._data), { timestamp: this._data.timestamp.toUTCString() }), timeDelta: this.timeDelta.toString() }; } static fromJSON(json, // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unused-vars ...args) { let data; if (typeof json === 'string') { data = JSON.parse(json); } else { data = json; } const result = new PowerMetricsData(Object.assign(Object.assign({}, data.data), { timestamp: new Date(data.data.timestamp) })); result.timeDelta = BigInt(data.timeDelta); return result; } get duration() { return BigInt(this._data.elapsed_ns); } get startTime() { return TimeHelper_1.TimeHelper.timestampToHighResolutionTime(this._data.timestamp.getTime(), this.timeDelta); } get endTime() { return BigInt(this.startTime + this.duration); } energyImpactPerTask() { if (this._energyImpactPerTask === undefined) { const energyImpactPerTask = new Map(); for (const task of this._data.tasks) { energyImpactPerTask.set(task.pid, task.energy_impact); } this._energyImpactPerTask = energyImpactPerTask; } return this._energyImpactPerTask; } totalEnergyImpact() { if (this._totalEnergyImpact === undefined) { let totalEnergyImpact = 0; // eslint-disable-next-line @typescript-eslint/no-unused-vars for (const [_, energyImpact] of this.energyImpactPerTask().entries()) { totalEnergyImpact += energyImpact; } this._totalEnergyImpact = totalEnergyImpact; } return this._totalEnergyImpact; } processIsPresent(pid) { return this.energyImpactPerTask().has(pid); } energyPortionOfProcess(pid) { const energyImpactOfProcess = this.energyImpactPerTask().get(pid); if (energyImpactOfProcess === undefined) { throw new Error('Processes energy could not be found in the PowerMetrics measurements'); } return energyImpactOfProcess / this.totalEnergyImpact(); } cpuEnergy() { const power = this._data.processor.cpu_power; // in mW = 1e-3 W const time = this._data.elapsed_ns; // in ns = 1e-9 s return ((power * time) / 1e9); // (1e-3 W)*(1e-9 s) = 1e-12 J = 1e-9 mJ } ramEnergy() { return 0; // sensor interface does not support ram energy measurements } } exports.PowerMetricsData = PowerMetricsData; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUG93ZXJNZXRyaWNzRGF0YS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tb2RlbC9pbnRlcmZhY2VzL1Bvd2VyTWV0cmljc0RhdGEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdURBQW1EO0FBRW5ELHdEQUFvRDtBQVVwRCxNQUFhLGdCQUFpQixTQUFRLGlDQUFlO0lBT3BELFlBQVksSUFBK0I7UUFDMUMsS0FBSyxFQUFFLENBQUE7UUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQTtRQUNqQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsU0FBUyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxTQUFTLEdBQUcsdUJBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtJQUMzQyxDQUFDO0lBRUQsTUFBTTtRQUNMLE9BQU87WUFDTixJQUFJLGtDQUNBLElBQUksQ0FBQyxLQUFLLEtBQ2IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxHQUM3QztZQUNELFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtTQUNwQyxDQUFBO0lBQ0YsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQ2QsSUFBZ0M7SUFDaEMsZ0dBQWdHO0lBQ2hHLEdBQUcsSUFBVztRQUVkLElBQUksSUFBdUIsQ0FBQTtRQUMzQixJQUFJLE9BQU8sSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ1AsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNaLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixpQ0FDL0IsSUFBSSxDQUFDLElBQUksS0FDWixTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMs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