disksIO() added waitTime, waitPercent (linux)
This commit is contained in:
+48
-3
@@ -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
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user