hello / index.js
steren's picture
Upload 2 files
66e65d0
const express = require('express');
const app = express();
const fs = require('node:fs');
const os = require("node:os");
const v8 = require("node:v8");
const process = require('node:process');
function handle(signal) {
console.log(`Received signal ${signal}`);
}
process.on('SIGINT', handle);
process.on('SIGTERM', handle);
app.get('/', (req, res) => {
console.log('Received a request.');
const files = [
"/sys/fs/cgroup/memory/memory.usage_in_bytes",
"/sys/fs/cgroup/memory/memory.limit_in_bytes",
"/sys/fs/cgroup/cpu/cpuacct.usage",
"/sys/fs/cgroup/cpu/cpu.shares",
"/sys/fs/cgroup/cpu/cpu.cfs_quota_us",
"/sys/fs/cgroup/cpu/cpu.cfs_period_us",
]
let cgroup = {};
for (let f of files) {
try {
cgroup[f] = fs.readFileSync(f, 'utf8');
} catch(e) {
console.error(`Cannot read cgroup info for ${f}`, e);
}
}
let memory = {
freemem: os.freemem(),
totalmem: os.totalmem(),
memoryUsage: process.memoryUsage(),
};
let cpus = os.cpus();
let availableParallelism = os.availableParallelism();
let username = os.userInfo().username
let product_name;
try {
product_name = fs.readFileSync('/sys/class/dmi/id/product_name', 'utf8');
} catch(e) {
console.error(`Cannot read /sys/class/dmi/id/product_name`, e);
}
let env = process.env;
let heapinfo = v8.getHeapStatistics();
let pid = process.pid;
res.send({cgroup, memory, heapinfo, cpus, username, product_name, env, availableParallelism, pid});
});
const port = process.env.PORT || 8080;
app.listen(port, () => {
console.log('Hello world listening on port', port);
});