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 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 = 0;
792
- let allcpus = 0;
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 = 0;
957
- let allcpus = 0;
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "systeminformation",
3
- "version": "5.7.11",
3
+ "version": "5.8.0",
4
4
  "description": "Simple system and OS information library",
5
5
  "license": "MIT",
6
6
  "author": "Sebastian Hildebrandt <hildebrandt@plus-innovations.com> (https://plus-innovations.com)",