disksIO() added waitTime, waitPercent (linux)

This commit is contained in:
Sebastian Hildebrandt
2021-08-02 13:51:20 +02:00
parent 8b8114acfb
commit 123fb99d05
9 changed files with 150 additions and 21 deletions
+48 -3
View File
@@ -590,7 +590,7 @@ function fsStats(callback) {
exports.fsStats = fsStats;
function calcDiskIO(rIO, wIO) {
function calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime) {
let result = {
rIO: 0,
wIO: 0,
@@ -598,6 +598,12 @@ function calcDiskIO(rIO, wIO) {
rIO_sec: null,
wIO_sec: null,
tIO_sec: null,
rWaitTime: 0,
wWaitTime: 0,
tWaitTime: 0,
rWaitPercent: null,
wWaitPercent: null,
tWaitPercent: null,
ms: 0
};
if (_disk_io && _disk_io.ms) {
@@ -608,22 +614,43 @@ function calcDiskIO(rIO, wIO) {
result.rIO_sec = (result.rIO - _disk_io.rIO) / (result.ms / 1000);
result.wIO_sec = (result.wIO - _disk_io.wIO) / (result.ms / 1000);
result.tIO_sec = result.rIO_sec + result.wIO_sec;
result.rWaitTime = rWaitTime;
result.wWaitTime = wWaitTime;
result.tWaitTime = tWaitTime;
result.rWaitPercent = (result.rWaitTime - _disk_io.rWaitTime) * 100 / (result.ms);
result.wWaitPercent = (result.wWaitTime - _disk_io.wWaitTime) * 100 / (result.ms);
result.tWaitPercent = (result.tWaitTime - _disk_io.tWaitTime) * 100 / (result.ms);
_disk_io.rIO = rIO;
_disk_io.wIO = wIO;
_disk_io.rIO_sec = result.rIO_sec;
_disk_io.wIO_sec = result.wIO_sec;
_disk_io.tIO_sec = result.tIO_sec;
_disk_io.rWaitTime = rWaitTime;
_disk_io.wWaitTime = wWaitTime;
_disk_io.tWaitTime = tWaitTime;
_disk_io.rWaitPercent = result.rWaitPercent;
_disk_io.wWaitPercent = result.wWaitPercent;
_disk_io.tWaitPercent = result.tWaitPercent;
_disk_io.last_ms = result.ms;
_disk_io.ms = Date.now();
} else {
result.rIO = rIO;
result.wIO = wIO;
result.tIO = rIO + wIO;
result.rWaitTime = rWaitTime;
result.wWaitTime = wWaitTime;
result.tWaitTime = tWaitTime;
_disk_io.rIO = rIO;
_disk_io.wIO = wIO;
_disk_io.rIO_sec = null;
_disk_io.wIO_sec = null;
_disk_io.tIO_sec = null;
_disk_io.rWaitTime = rWaitTime;
_disk_io.wWaitTime = wWaitTime;
_disk_io.tWaitTime = tWaitTime;
_disk_io.rWaitPercent = null;
_disk_io.wWaitPercent = null;
_disk_io.tWaitPercent = null;
_disk_io.last_ms = 0;
_disk_io.ms = Date.now();
}
@@ -648,10 +675,19 @@ function disksIO(callback) {
rIO_sec: null,
wIO_sec: null,
tIO_sec: null,
rWaitTime: 0,
wWaitTime: 0,
tWaitTime: 0,
rWaitPercent: null,
wWaitPercent: null,
tWaitPercent: null,
ms: 0
};
let rIO = 0;
let wIO = 0;
let rWaitTime = 0;
let wWaitTime = 0;
let tWaitTime = 0;
if ((_disk_io && !_disk_io.ms) || (_disk_io && _disk_io.ms && Date.now() - _disk_io.ms >= 500)) {
if (_linux || _freebsd || _openbsd || _netbsd) {
@@ -671,8 +707,11 @@ function disksIO(callback) {
let stats = line.split(';');
rIO += parseInt(stats[0]);
wIO += parseInt(stats[4]);
rWaitTime += parseInt(stats[3]);
wWaitTime += parseInt(stats[7]);
tWaitTime += parseInt(stats[10]);
});
result = calcDiskIO(rIO, wIO);
result = calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime);
if (callback) {
callback(result);
@@ -699,7 +738,7 @@ function disksIO(callback) {
wIO += parseInt(line[0]);
}
});
result = calcDiskIO(rIO, wIO);
result = calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime);
}
if (callback) {
callback(result);
@@ -715,6 +754,12 @@ function disksIO(callback) {
result.rIO_sec = _disk_io.rIO_sec;
result.wIO_sec = _disk_io.wIO_sec;
result.tIO_sec = _disk_io.tIO_sec;
result.rWaitTime = _disk_io.rWaitTime;
result.wWaitTime = _disk_io.wWaitTime;
result.tWaitTime = _disk_io.tWaitTime;
result.rWaitPercent = _disk_io.rWaitPercent;
result.wWaitPercent = _disk_io.wWaitPercent;
result.tWaitPercent = _disk_io.tWaitPercent;
if (callback) {
callback(result);
}
+18 -8
View File
@@ -33,18 +33,24 @@ const _sunos = (_platform === 'sunos');
const _processes_cpu = {
all: 0,
all_utime: 0,
all_stime: 0,
list: {},
ms: 0,
result: {}
};
const _services_cpu = {
all: 0,
all_utime: 0,
all_stime: 0,
list: {},
ms: 0,
result: {}
};
const _process_cpu = {
all: 0,
all_utime: 0,
all_stime: 0,
list: {},
ms: 0,
result: {}
@@ -471,10 +477,10 @@ function calcProcStatWin(procStat, all, _cpu_old) {
}
return {
pid: procStat.pid,
utime: procStat.utime,
stime: procStat.stime,
cpuu: cpuu,
cpus: cpus
utime: cpuu > 0 ? procStat.utime : 0,
stime: cpus > 0 ? procStat.stime : 0,
cpuu: cpuu > 0 ? cpuu : 0,
cpus: cpus > 0 ? cpus : 0
};
}
@@ -788,8 +794,8 @@ function processes(callback) {
let procs = [];
let procStats = [];
let list_new = {};
let allcpuu = 0;
let allcpus = 0;
let allcpuu = _processes_cpu.all_utime;
let allcpus = _processes_cpu.all_stime;
for (let i = 0; i < processSections.length; i++) {
if (processSections[i].trim() !== '') {
let lines = processSections[i].trim().split('\r\n');
@@ -862,6 +868,8 @@ function processes(callback) {
}
// store old values
_processes_cpu.all = allcpuu + allcpus;
_processes_cpu.all_utime = allcpuu;
_processes_cpu.all_stime = allcpus;
// _processes_cpu.list = list_new;
_processes_cpu.list = Object.assign({}, list_new);
_processes_cpu.ms = Date.now() - _processes_cpu.ms;
@@ -953,8 +961,8 @@ function processLoad(proc, callback) {
let processSections = stdout.split(/\n\s*\n/);
let procStats = [];
let list_new = {};
let allcpuu = 0;
let allcpus = 0;
let allcpuu = _process_cpu.all_utime;
let allcpus = _process_cpu.all_stime;
// go through all processes
for (let i = 0; i < processSections.length; i++) {
@@ -1051,6 +1059,8 @@ function processLoad(proc, callback) {
}
// store old values
_process_cpu.all = allcpuu + allcpus;
_process_cpu.all_utime = allcpuu;
_process_cpu.all_stime = allcpus;
// _process_cpu.list = list_new;
_process_cpu.list = Object.assign({}, list_new);
_process_cpu.ms = Date.now() - _process_cpu.ms;