systeminformation 5.7.11 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/README.md +7 -0
- package/lib/cpu.js +8 -8
- package/lib/filesystem.js +48 -3
- package/lib/osinfo.js +19 -20
- package/lib/processes.js +18 -8
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -77,6 +77,10 @@ For major (breaking) changes - **version 4, 3 and 2** - see end of page.
|
|
|
77
77
|
|
|
78
78
|
| Version | Date | Comment |
|
|
79
79
|
| -------------- | -------------- | -------- |
|
|
80
|
+
| 5.8.0 | 2021-08-02 | `disksIO()` added waitTime, waitPercent (linux) |
|
|
81
|
+
| 5.7.14 | 2021-08-01 | `cpu()` cache calculation fix (linux) |
|
|
82
|
+
| 5.7.13 | 2021-07-28 | `osInfo()` fix uefi detection (win) |
|
|
83
|
+
| 5.7.12 | 2021-07-27 | `osInfo()` fix uefi detection (win) |
|
|
80
84
|
| 5.7.11 | 2021-07-27 | typescript typings fix `bluetoothDevices()` |
|
|
81
85
|
| 5.7.10 | 2021-07-26 | typescript typings fix `processLoad()` |
|
|
82
86
|
| 5.7.9 | 2021-07-25 | `uuid()` better regedit path detection (win) |
|
package/README.md
CHANGED
|
@@ -103,6 +103,7 @@ si.cpu()
|
|
|
103
103
|
|
|
104
104
|
(last 7 major and minor version releases)
|
|
105
105
|
|
|
106
|
+
- Version 5.8.0: `disksIO()` added waitTime, waitPercent (linux)
|
|
106
107
|
- Version 5.7.0: `diskLayout()` added S.M.A.R.T for Windows (if installed)
|
|
107
108
|
- Version 5.6.0: `cpuTemperature()` added added socket and chipset temp (linux)
|
|
108
109
|
- Version 5.5.0: `dockerVolumes()` added
|
|
@@ -446,6 +447,12 @@ Full function reference with examples can be found at [https://systeminformation
|
|
|
446
447
|
| | rIO_sec | X | | X | | | read IO per sec (* see notes) |
|
|
447
448
|
| | wIO_sec | X | | X | | | write IO per sec (* see notes) |
|
|
448
449
|
| | tIO_sec | X | | X | | | total IO per sec (* see notes) |
|
|
450
|
+
| | rWaitTime | X | | | | | read IO request time (* see notes) |
|
|
451
|
+
| | wWaitTime | X | | | | | write IO request time (* see notes) |
|
|
452
|
+
| | tWaitTime | X | | | | | total IO request time (* see notes) |
|
|
453
|
+
| | rWaitPercent | X | | | | | read IO request time percent (* see notes) |
|
|
454
|
+
| | wWaitPercent | X | | | | | write IO request time percent (* see notes) |
|
|
455
|
+
| | tWaitPercent | X | | | | | total IO request time percent (* see notes) |
|
|
449
456
|
| | ms | X | | X | | | interval length (for per second values) |
|
|
450
457
|
| si.fsSize(cb) | [{...}] | X | X | X | X | | returns array of mounted file systems |
|
|
451
458
|
| | [0].fs | X | X | X | X | | name of file system |
|
package/lib/cpu.js
CHANGED
|
@@ -636,13 +636,13 @@ function getCpu() {
|
|
|
636
636
|
result.stepping = util.getValue(lines, 'stepping');
|
|
637
637
|
result.revision = util.getValue(lines, 'cpu revision');
|
|
638
638
|
result.cache.l1d = util.getValue(lines, 'l1d cache');
|
|
639
|
-
if (result.cache.l1d) { result.cache.l1d = parseInt(result.cache.l1d) * (result.cache.l1d.indexOf('K') !== -1 ? 1024 : 1); }
|
|
639
|
+
if (result.cache.l1d) { result.cache.l1d = parseInt(result.cache.l1d) * (result.cache.l1d.indexOf('M') !== -1 ? 1024 * 1024 : (result.cache.l1d.indexOf('K') !== -1 ? 1024 : 1)); }
|
|
640
640
|
result.cache.l1i = util.getValue(lines, 'l1i cache');
|
|
641
|
-
if (result.cache.l1i) { result.cache.l1i = parseInt(result.cache.l1i) * (result.cache.l1i.indexOf('K') !== -1 ? 1024 : 1); }
|
|
641
|
+
if (result.cache.l1i) { result.cache.l1i = parseInt(result.cache.l1i) * (result.cache.l1i.indexOf('M') !== -1 ? 1024 * 1024 : (result.cache.l1i.indexOf('K') !== -1 ? 1024 : 1)); }
|
|
642
642
|
result.cache.l2 = util.getValue(lines, 'l2 cache');
|
|
643
|
-
if (result.cache.l2) { result.cache.l2 = parseInt(result.cache.l2) * (result.cache.l2.indexOf('K') !== -1 ? 1024 : 1); }
|
|
643
|
+
if (result.cache.l2) { result.cache.l2 = parseInt(result.cache.l2) * (result.cache.l2.indexOf('M') !== -1 ? 1024 * 1024 : (result.cache.l2.indexOf('K') !== -1 ? 1024 : 1)); }
|
|
644
644
|
result.cache.l3 = util.getValue(lines, 'l3 cache');
|
|
645
|
-
if (result.cache.l3) { result.cache.l3 = parseInt(result.cache.l3) * (result.cache.l3.indexOf('K') !== -1 ? 1024 : 1); }
|
|
645
|
+
if (result.cache.l3) { result.cache.l3 = parseInt(result.cache.l3) * (result.cache.l3.indexOf('M') !== -1 ? 1024 * 1024 : (result.cache.l3.indexOf('K') !== -1 ? 1024 : 1)); }
|
|
646
646
|
|
|
647
647
|
const threadsPerCore = util.getValue(lines, 'thread(s) per core') || '1';
|
|
648
648
|
// const coresPerSocketInt = parseInt(util.getValue(lines, 'cores(s) per socket') || '1', 10);
|
|
@@ -1285,16 +1285,16 @@ function cpuCache(callback) {
|
|
|
1285
1285
|
lines.forEach(function (line) {
|
|
1286
1286
|
let parts = line.split(':');
|
|
1287
1287
|
if (parts[0].toUpperCase().indexOf('L1D CACHE') !== -1) {
|
|
1288
|
-
result.l1d = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
|
|
1288
|
+
result.l1d = parseInt(parts[1].trim()) * (parts[1].indexOf('M') !== -1 ? 1024 * 1024 : (parts[1].indexOf('K') !== -1 ? 1024 : 1));
|
|
1289
1289
|
}
|
|
1290
1290
|
if (parts[0].toUpperCase().indexOf('L1I CACHE') !== -1) {
|
|
1291
|
-
result.l1i = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
|
|
1291
|
+
result.l1i = parseInt(parts[1].trim()) * (parts[1].indexOf('M') !== -1 ? 1024 * 1024 : (parts[1].indexOf('K') !== -1 ? 1024 : 1));
|
|
1292
1292
|
}
|
|
1293
1293
|
if (parts[0].toUpperCase().indexOf('L2 CACHE') !== -1) {
|
|
1294
|
-
result.l2 = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
|
|
1294
|
+
result.l2 = parseInt(parts[1].trim()) * (parts[1].indexOf('M') !== -1 ? 1024 * 1024 : (parts[1].indexOf('K') !== -1 ? 1024 : 1));
|
|
1295
1295
|
}
|
|
1296
1296
|
if (parts[0].toUpperCase().indexOf('L3 CACHE') !== -1) {
|
|
1297
|
-
result.l3 = parseInt(parts[1].trim()) * (parts[1].indexOf('K') !== -1 ? 1024 : 1);
|
|
1297
|
+
result.l3 = parseInt(parts[1].trim()) * (parts[1].indexOf('M') !== -1 ? 1024 * 1024 : (parts[1].indexOf('K') !== -1 ? 1024 : 1));
|
|
1298
1298
|
}
|
|
1299
1299
|
});
|
|
1300
1300
|
}
|
package/lib/filesystem.js
CHANGED
|
@@ -590,7 +590,7 @@ function fsStats(callback) {
|
|
|
590
590
|
|
|
591
591
|
exports.fsStats = fsStats;
|
|
592
592
|
|
|
593
|
-
function calcDiskIO(rIO, wIO) {
|
|
593
|
+
function calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime) {
|
|
594
594
|
let result = {
|
|
595
595
|
rIO: 0,
|
|
596
596
|
wIO: 0,
|
|
@@ -598,6 +598,12 @@ function calcDiskIO(rIO, wIO) {
|
|
|
598
598
|
rIO_sec: null,
|
|
599
599
|
wIO_sec: null,
|
|
600
600
|
tIO_sec: null,
|
|
601
|
+
rWaitTime: 0,
|
|
602
|
+
wWaitTime: 0,
|
|
603
|
+
tWaitTime: 0,
|
|
604
|
+
rWaitPercent: null,
|
|
605
|
+
wWaitPercent: null,
|
|
606
|
+
tWaitPercent: null,
|
|
601
607
|
ms: 0
|
|
602
608
|
};
|
|
603
609
|
if (_disk_io && _disk_io.ms) {
|
|
@@ -608,22 +614,43 @@ function calcDiskIO(rIO, wIO) {
|
|
|
608
614
|
result.rIO_sec = (result.rIO - _disk_io.rIO) / (result.ms / 1000);
|
|
609
615
|
result.wIO_sec = (result.wIO - _disk_io.wIO) / (result.ms / 1000);
|
|
610
616
|
result.tIO_sec = result.rIO_sec + result.wIO_sec;
|
|
617
|
+
result.rWaitTime = rWaitTime;
|
|
618
|
+
result.wWaitTime = wWaitTime;
|
|
619
|
+
result.tWaitTime = tWaitTime;
|
|
620
|
+
result.rWaitPercent = (result.rWaitTime - _disk_io.rWaitTime) * 100 / (result.ms);
|
|
621
|
+
result.wWaitPercent = (result.wWaitTime - _disk_io.wWaitTime) * 100 / (result.ms);
|
|
622
|
+
result.tWaitPercent = (result.tWaitTime - _disk_io.tWaitTime) * 100 / (result.ms);
|
|
611
623
|
_disk_io.rIO = rIO;
|
|
612
624
|
_disk_io.wIO = wIO;
|
|
613
625
|
_disk_io.rIO_sec = result.rIO_sec;
|
|
614
626
|
_disk_io.wIO_sec = result.wIO_sec;
|
|
615
627
|
_disk_io.tIO_sec = result.tIO_sec;
|
|
628
|
+
_disk_io.rWaitTime = rWaitTime;
|
|
629
|
+
_disk_io.wWaitTime = wWaitTime;
|
|
630
|
+
_disk_io.tWaitTime = tWaitTime;
|
|
631
|
+
_disk_io.rWaitPercent = result.rWaitPercent;
|
|
632
|
+
_disk_io.wWaitPercent = result.wWaitPercent;
|
|
633
|
+
_disk_io.tWaitPercent = result.tWaitPercent;
|
|
616
634
|
_disk_io.last_ms = result.ms;
|
|
617
635
|
_disk_io.ms = Date.now();
|
|
618
636
|
} else {
|
|
619
637
|
result.rIO = rIO;
|
|
620
638
|
result.wIO = wIO;
|
|
621
639
|
result.tIO = rIO + wIO;
|
|
640
|
+
result.rWaitTime = rWaitTime;
|
|
641
|
+
result.wWaitTime = wWaitTime;
|
|
642
|
+
result.tWaitTime = tWaitTime;
|
|
622
643
|
_disk_io.rIO = rIO;
|
|
623
644
|
_disk_io.wIO = wIO;
|
|
624
645
|
_disk_io.rIO_sec = null;
|
|
625
646
|
_disk_io.wIO_sec = null;
|
|
626
647
|
_disk_io.tIO_sec = null;
|
|
648
|
+
_disk_io.rWaitTime = rWaitTime;
|
|
649
|
+
_disk_io.wWaitTime = wWaitTime;
|
|
650
|
+
_disk_io.tWaitTime = tWaitTime;
|
|
651
|
+
_disk_io.rWaitPercent = null;
|
|
652
|
+
_disk_io.wWaitPercent = null;
|
|
653
|
+
_disk_io.tWaitPercent = null;
|
|
627
654
|
_disk_io.last_ms = 0;
|
|
628
655
|
_disk_io.ms = Date.now();
|
|
629
656
|
}
|
|
@@ -648,10 +675,19 @@ function disksIO(callback) {
|
|
|
648
675
|
rIO_sec: null,
|
|
649
676
|
wIO_sec: null,
|
|
650
677
|
tIO_sec: null,
|
|
678
|
+
rWaitTime: 0,
|
|
679
|
+
wWaitTime: 0,
|
|
680
|
+
tWaitTime: 0,
|
|
681
|
+
rWaitPercent: null,
|
|
682
|
+
wWaitPercent: null,
|
|
683
|
+
tWaitPercent: null,
|
|
651
684
|
ms: 0
|
|
652
685
|
};
|
|
653
686
|
let rIO = 0;
|
|
654
687
|
let wIO = 0;
|
|
688
|
+
let rWaitTime = 0;
|
|
689
|
+
let wWaitTime = 0;
|
|
690
|
+
let tWaitTime = 0;
|
|
655
691
|
|
|
656
692
|
if ((_disk_io && !_disk_io.ms) || (_disk_io && _disk_io.ms && Date.now() - _disk_io.ms >= 500)) {
|
|
657
693
|
if (_linux || _freebsd || _openbsd || _netbsd) {
|
|
@@ -671,8 +707,11 @@ function disksIO(callback) {
|
|
|
671
707
|
let stats = line.split(';');
|
|
672
708
|
rIO += parseInt(stats[0]);
|
|
673
709
|
wIO += parseInt(stats[4]);
|
|
710
|
+
rWaitTime += parseInt(stats[3]);
|
|
711
|
+
wWaitTime += parseInt(stats[7]);
|
|
712
|
+
tWaitTime += parseInt(stats[10]);
|
|
674
713
|
});
|
|
675
|
-
result = calcDiskIO(rIO, wIO);
|
|
714
|
+
result = calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime);
|
|
676
715
|
|
|
677
716
|
if (callback) {
|
|
678
717
|
callback(result);
|
|
@@ -699,7 +738,7 @@ function disksIO(callback) {
|
|
|
699
738
|
wIO += parseInt(line[0]);
|
|
700
739
|
}
|
|
701
740
|
});
|
|
702
|
-
result = calcDiskIO(rIO, wIO);
|
|
741
|
+
result = calcDiskIO(rIO, wIO, rWaitTime, wWaitTime, tWaitTime);
|
|
703
742
|
}
|
|
704
743
|
if (callback) {
|
|
705
744
|
callback(result);
|
|
@@ -715,6 +754,12 @@ function disksIO(callback) {
|
|
|
715
754
|
result.rIO_sec = _disk_io.rIO_sec;
|
|
716
755
|
result.wIO_sec = _disk_io.wIO_sec;
|
|
717
756
|
result.tIO_sec = _disk_io.tIO_sec;
|
|
757
|
+
result.rWaitTime = _disk_io.rWaitTime;
|
|
758
|
+
result.wWaitTime = _disk_io.wWaitTime;
|
|
759
|
+
result.tWaitTime = _disk_io.tWaitTime;
|
|
760
|
+
result.rWaitPercent = _disk_io.rWaitPercent;
|
|
761
|
+
result.wWaitPercent = _disk_io.wWaitPercent;
|
|
762
|
+
result.tWaitPercent = _disk_io.tWaitPercent;
|
|
718
763
|
if (callback) {
|
|
719
764
|
callback(result);
|
|
720
765
|
}
|
package/lib/osinfo.js
CHANGED
|
@@ -365,14 +365,14 @@ function isUefiLinux() {
|
|
|
365
365
|
process.nextTick(() => {
|
|
366
366
|
fs.stat('/sys/firmware/efi', function (err) {
|
|
367
367
|
if (!err) {
|
|
368
|
-
resolve(true);
|
|
368
|
+
return resolve(true);
|
|
369
369
|
} else {
|
|
370
370
|
exec('dmesg | grep -E "EFI v"', function (error, stdout) {
|
|
371
371
|
if (!error) {
|
|
372
372
|
const lines = stdout.toString().split('\n');
|
|
373
|
-
resolve(lines.length > 0);
|
|
373
|
+
return resolve(lines.length > 0);
|
|
374
374
|
}
|
|
375
|
-
resolve(false);
|
|
375
|
+
return resolve(false);
|
|
376
376
|
});
|
|
377
377
|
}
|
|
378
378
|
});
|
|
@@ -387,21 +387,20 @@ function isUefiWindows() {
|
|
|
387
387
|
exec('findstr /C:"Detected boot environment" "%windir%\\Panther\\setupact.log"', util.execOptsWin, function (error, stdout) {
|
|
388
388
|
if (!error) {
|
|
389
389
|
const line = stdout.toString().split('\n\r')[0];
|
|
390
|
-
resolve(line.toLowerCase().indexOf('efi') >= 0);
|
|
391
|
-
return;
|
|
390
|
+
return resolve(line.toLowerCase().indexOf('efi') >= 0);
|
|
392
391
|
} else {
|
|
393
392
|
exec('echo %firmware_type%', util.execOptsWin, function (error, stdout) {
|
|
394
393
|
if (!error) {
|
|
395
394
|
const line = stdout.toString() || '';
|
|
396
|
-
resolve(line.toLowerCase().indexOf('efi') >= 0);
|
|
395
|
+
return resolve(line.toLowerCase().indexOf('efi') >= 0);
|
|
396
|
+
} else {
|
|
397
|
+
return resolve(false);
|
|
397
398
|
}
|
|
398
|
-
resolve(false);
|
|
399
399
|
});
|
|
400
400
|
}
|
|
401
|
-
resolve(false);
|
|
402
401
|
});
|
|
403
402
|
} catch (e) {
|
|
404
|
-
resolve(false);
|
|
403
|
+
return resolve(false);
|
|
405
404
|
}
|
|
406
405
|
});
|
|
407
406
|
});
|
|
@@ -1015,18 +1014,18 @@ function shell(callback) {
|
|
|
1015
1014
|
process.nextTick(() => {
|
|
1016
1015
|
if (_windows) {
|
|
1017
1016
|
resolve('cmd');
|
|
1017
|
+
} else {
|
|
1018
|
+
let result = '';
|
|
1019
|
+
exec('echo $SHELL', function (error, stdout) {
|
|
1020
|
+
if (!error) {
|
|
1021
|
+
result = stdout.toString().split('\n')[0];
|
|
1022
|
+
}
|
|
1023
|
+
if (callback) {
|
|
1024
|
+
callback(result);
|
|
1025
|
+
}
|
|
1026
|
+
resolve(result);
|
|
1027
|
+
});
|
|
1018
1028
|
}
|
|
1019
|
-
|
|
1020
|
-
let result = '';
|
|
1021
|
-
exec('echo $SHELL', function (error, stdout) {
|
|
1022
|
-
if (!error) {
|
|
1023
|
-
result = stdout.toString().split('\n')[0];
|
|
1024
|
-
}
|
|
1025
|
-
if (callback) {
|
|
1026
|
-
callback(result);
|
|
1027
|
-
}
|
|
1028
|
-
resolve(result);
|
|
1029
|
-
});
|
|
1030
1029
|
});
|
|
1031
1030
|
});
|
|
1032
1031
|
}
|
package/lib/processes.js
CHANGED
|
@@ -33,18 +33,24 @@ const _sunos = (_platform === 'sunos');
|
|
|
33
33
|
|
|
34
34
|
const _processes_cpu = {
|
|
35
35
|
all: 0,
|
|
36
|
+
all_utime: 0,
|
|
37
|
+
all_stime: 0,
|
|
36
38
|
list: {},
|
|
37
39
|
ms: 0,
|
|
38
40
|
result: {}
|
|
39
41
|
};
|
|
40
42
|
const _services_cpu = {
|
|
41
43
|
all: 0,
|
|
44
|
+
all_utime: 0,
|
|
45
|
+
all_stime: 0,
|
|
42
46
|
list: {},
|
|
43
47
|
ms: 0,
|
|
44
48
|
result: {}
|
|
45
49
|
};
|
|
46
50
|
const _process_cpu = {
|
|
47
51
|
all: 0,
|
|
52
|
+
all_utime: 0,
|
|
53
|
+
all_stime: 0,
|
|
48
54
|
list: {},
|
|
49
55
|
ms: 0,
|
|
50
56
|
result: {}
|
|
@@ -471,10 +477,10 @@ function calcProcStatWin(procStat, all, _cpu_old) {
|
|
|
471
477
|
}
|
|
472
478
|
return {
|
|
473
479
|
pid: procStat.pid,
|
|
474
|
-
utime: procStat.utime,
|
|
475
|
-
stime: procStat.stime,
|
|
476
|
-
cpuu: cpuu,
|
|
477
|
-
cpus: cpus
|
|
480
|
+
utime: cpuu > 0 ? procStat.utime : 0,
|
|
481
|
+
stime: cpus > 0 ? procStat.stime : 0,
|
|
482
|
+
cpuu: cpuu > 0 ? cpuu : 0,
|
|
483
|
+
cpus: cpus > 0 ? cpus : 0
|
|
478
484
|
};
|
|
479
485
|
}
|
|
480
486
|
|
|
@@ -788,8 +794,8 @@ function processes(callback) {
|
|
|
788
794
|
let procs = [];
|
|
789
795
|
let procStats = [];
|
|
790
796
|
let list_new = {};
|
|
791
|
-
let allcpuu =
|
|
792
|
-
let allcpus =
|
|
797
|
+
let allcpuu = _processes_cpu.all_utime;
|
|
798
|
+
let allcpus = _processes_cpu.all_stime;
|
|
793
799
|
for (let i = 0; i < processSections.length; i++) {
|
|
794
800
|
if (processSections[i].trim() !== '') {
|
|
795
801
|
let lines = processSections[i].trim().split('\r\n');
|
|
@@ -862,6 +868,8 @@ function processes(callback) {
|
|
|
862
868
|
}
|
|
863
869
|
// store old values
|
|
864
870
|
_processes_cpu.all = allcpuu + allcpus;
|
|
871
|
+
_processes_cpu.all_utime = allcpuu;
|
|
872
|
+
_processes_cpu.all_stime = allcpus;
|
|
865
873
|
// _processes_cpu.list = list_new;
|
|
866
874
|
_processes_cpu.list = Object.assign({}, list_new);
|
|
867
875
|
_processes_cpu.ms = Date.now() - _processes_cpu.ms;
|
|
@@ -953,8 +961,8 @@ function processLoad(proc, callback) {
|
|
|
953
961
|
let processSections = stdout.split(/\n\s*\n/);
|
|
954
962
|
let procStats = [];
|
|
955
963
|
let list_new = {};
|
|
956
|
-
let allcpuu =
|
|
957
|
-
let allcpus =
|
|
964
|
+
let allcpuu = _process_cpu.all_utime;
|
|
965
|
+
let allcpus = _process_cpu.all_stime;
|
|
958
966
|
|
|
959
967
|
// go through all processes
|
|
960
968
|
for (let i = 0; i < processSections.length; i++) {
|
|
@@ -1051,6 +1059,8 @@ function processLoad(proc, callback) {
|
|
|
1051
1059
|
}
|
|
1052
1060
|
// store old values
|
|
1053
1061
|
_process_cpu.all = allcpuu + allcpus;
|
|
1062
|
+
_process_cpu.all_utime = allcpuu;
|
|
1063
|
+
_process_cpu.all_stime = allcpus;
|
|
1054
1064
|
// _process_cpu.list = list_new;
|
|
1055
1065
|
_process_cpu.list = Object.assign({}, list_new);
|
|
1056
1066
|
_process_cpu.ms = Date.now() - _process_cpu.ms;
|
package/package.json
CHANGED