@oaklean/cli
Version:
A command-line interface that provides utilities for parsing, inspecting, and converting the .oak file format, as well as interfaces used in the @oaklean suite.
81 lines • 7.02 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const profiler_core_1 = require("@oaklean/profiler-core");
const commander_1 = require("commander");
class MetricsDataCommands {
constructor() {
const baseCommand = commander_1.program
.command('metrics-data')
.alias('md')
.description('commands to convert or inspect the metrics data collection format');
baseCommand
.command('show')
.description('Displays the metrics data collection as a table')
.argument('<input>', 'input file path')
.option('-c, --csv', 'output as csv')
.action(this.show.bind(this));
}
static init() {
return new MetricsDataCommands();
}
show(input, options) {
return __awaiter(this, void 0, void 0, function* () {
let inputPath = new profiler_core_1.UnifiedPath(input);
if (inputPath.isRelative()) {
inputPath = new profiler_core_1.UnifiedPath(process.cwd()).join(inputPath);
}
const outputAsCSV = options.csv !== undefined;
const data = profiler_core_1.MetricsDataCollection.loadFromFile(inputPath);
if (data) {
const pid = data.pid;
const values = [];
if (outputAsCSV) {
profiler_core_1.LoggerHelper.log(['process (mJ)', 'system (mJ)', 'portion', 'duration (ns)'].join(','));
}
for (const item of data.items) {
if (item.processIsPresent(pid)) {
const energyPortionOfProcess = item.energyPortionOfProcess(pid);
const systemEnergy = item.cpuEnergy();
const processEnergy = energyPortionOfProcess * systemEnergy;
const data = {
processEnergy: processEnergy.toFixed(3),
systemEnergy: systemEnergy.toFixed(3),
energyPortionOfProcess: energyPortionOfProcess.toFixed(2),
duration: item.duration
};
values.push(data);
if (outputAsCSV) {
profiler_core_1.LoggerHelper.log([
data.processEnergy,
data.systemEnergy,
data.energyPortionOfProcess,
data.duration
].join(','));
}
}
}
if (!outputAsCSV) {
profiler_core_1.LoggerHelper.table(values.map((value) => {
return {
'process (mJ)': value.processEnergy,
'system (mJ)': value.systemEnergy,
portion: value.energyPortionOfProcess,
'duration (ns)': value.duration
};
}), ['process (mJ)', 'system (mJ)', 'portion', 'duration (ns)']);
}
}
});
}
}
exports.default = MetricsDataCommands;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWV0cmljc0RhdGFDb21tYW5kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9NZXRyaWNzRGF0YUNvbW1hbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsMERBSytCO0FBQy9CLHlDQUFtQztBQUVuQyxNQUFxQixtQkFBbUI7SUFDdkM7UUFDQyxNQUFNLFdBQVcsR0FBRyxtQkFBTzthQUN6QixPQUFPLENBQUMsY0FBYyxDQUFDO2FBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDWCxXQUFXLENBQ1gsbUVBQW1FLENBQ25FLENBQUE7UUFFRixXQUFXO2FBQ1QsT0FBTyxDQUFDLE1BQU0sQ0FBQzthQUNmLFdBQVcsQ0FBQyxpREFBaUQsQ0FBQzthQUM5RCxRQUFRLENBQUMsU0FBUyxFQUFFLGlCQUFpQixDQUFDO2FBQ3RDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsZUFBZSxDQUFDO2FBQ3BDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFBO0lBQy9CLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSTtRQUNWLE9BQU8sSUFBSSxtQkFBbUIsRUFBRSxDQUFBO0lBQ2pDLENBQUM7SUFFSyxJQUFJLENBQ1QsS0FBYSxFQUNiLE9BRUM7O1lBRUQsSUFBSSxTQUFTLEdBQUcsSUFBSSwyQkFBVyxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3RDLElBQUksU0FBUyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7Z0JBQzVCLFNBQVMsR0FBRyxJQUFJLDJCQUFXLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzNELENBQUM7WUFFRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsR0FBRyxLQUFLLFNBQVMsQ0FBQTtZQUU3QyxNQUFNLElBQUksR0FBRyxxQ0FBcUIsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUE7WUFFMUQsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDVixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFBO2dCQUNwQixNQUFNLE1BQU0sR0FLTixFQUFFLENBQUE7Z0JBRVIsSUFBSSxXQUFXLEVBQUUsQ0FBQztvQkFDakIsNEJBQVksQ0FBQyxHQUFHLENBQ2YsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ3JFLENBQUE7Z0JBQ0YsQ0FBQztnQkFFRCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDL0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDaEMsTUFBTSxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUE7d0JBQy9ELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQTt3QkFDckMsTUFBTSxhQUFhLEdBQUcsc0JBQXNCLEdBQUcsWUFBWSxDQUFBO3dCQUUzRCxNQUFNLElBQUksR0FBRzs0QkFDWixhQUFhLEVBQUUsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7NEJBQ3ZDLFlBQVksRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs0QkFDckMsc0JBQXNCLEVBQUUsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQzs0QkFDekQsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO3lCQUN2QixDQUFBO3dCQUVELE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7d0JBRWpCLElBQUksV0FBVyxFQUFFLENBQUM7NEJBQ2pCLDRCQUFZLENBQUMsR0FBRyxDQUNmO2dDQUNDLElBQUksQ0FBQyxhQUFhO2dDQUNsQixJQUFJLENBQUMsWUFBWTtnQ0FDakIsSUFBSSxDQUFDLHNCQUFzQjtnQ0FDM0IsSUFBSSxDQUFDLFFBQVE7NkJBQ2IsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQ1gsQ0FBQTt3QkFDRixDQUFDO29CQUNGLENBQUM7Z0JBQ0YsQ0FBQztnQkFFRCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2xCLDRCQUFZLENBQUMsS0FBSyxDQUNqQixNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ3BCLE9BQU87NEJBQ04sY0FBYyxFQUFFLEtBQUssQ0FBQyxhQUFhOzRCQUNuQyxhQUFhLEVBQUUsS0FBSyxDQUFDLFlBQVk7NEJBQ2pDLE9BQU8sRUFBRSxLQUFLLENBQUMsc0JBQXNCOzRCQUNyQyxlQUFlLEVBQUUsS0FBSyxDQUFDLFFBQVE7eUJBQy9CLENBQUE7b0JBQ0YsQ0FBQyxDQUFDLEVBQ0YsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FDM0QsQ0FBQTtnQkFDRixDQUFDO1lBQ0YsQ0FBQztRQUNGLENBQUM7S0FBQTtDQUNEO0FBOUZELHNDQThGQyJ9