@naturalcycles/nodejs-lib 12.37.0 → 12.38.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
@@ -1,3 +1,10 @@
1
+ # [12.38.0](https://github.com/NaturalCycles/nodejs-lib/compare/v12.37.0...v12.38.0) (2021-10-06)
2
+
3
+
4
+ ### Features
5
+
6
+ * TransformLogOptions.peakRSS to log peak rss ([4602565](https://github.com/NaturalCycles/nodejs-lib/commit/4602565c8e52d17d8bd975f73e0f2bd6df03cf8b))
7
+
1
8
  # [12.37.0](https://github.com/NaturalCycles/nodejs-lib/compare/v12.36.0...v12.37.0) (2021-10-04)
2
9
 
3
10
 
@@ -24,6 +24,12 @@ export interface TransformLogProgressOptions<IN = any> extends TransformOptions
24
24
  * @default true
25
25
  */
26
26
  rss?: boolean;
27
+ /**
28
+ * Incude Peak RSS in log.
29
+ *
30
+ * @default false
31
+ */
32
+ peakRSS?: boolean;
27
33
  /**
28
34
  * Include `external` in log.
29
35
  *
@@ -50,15 +56,16 @@ export interface TransformLogProgressOptions<IN = any> extends TransformOptions
50
56
  */
51
57
  logRPS?: boolean;
52
58
  /**
53
- * @default true
54
59
  * Set to false to disable logging progress
60
+ *
61
+ * @default true
55
62
  */
56
63
  logProgress?: boolean;
57
64
  /**
58
65
  * Log progress event Nth record that is _processed_ (went through mapper).
66
+ * Set to 0 to disable logging.
59
67
  *
60
68
  * @default 1000
61
- * Set to 0 to disable logging.
62
69
  */
63
70
  logEvery?: number;
64
71
  /**
@@ -8,13 +8,13 @@ const time_lib_1 = require("@naturalcycles/time-lib");
8
8
  const colors_1 = require("../../colors");
9
9
  const inspectOpt = {
10
10
  colors: true,
11
- breakLength: 200,
11
+ breakLength: 300,
12
12
  };
13
13
  /**
14
14
  * Pass-through transform that optionally logs progress.
15
15
  */
16
16
  function transformLogProgress(opt = {}) {
17
- const { metric = 'progress', heapTotal: logHeapTotal = false, heapUsed: logHeapUsed = true, rss: logRss = true, logRPS = true, logEvery = 1000, extra, } = opt;
17
+ const { metric = 'progress', heapTotal: logHeapTotal = false, heapUsed: logHeapUsed = true, rss: logRss = true, peakRSS: logPeakRSS = false, logRPS = true, logEvery = 1000, extra, } = opt;
18
18
  const logProgress = opt.logProgress !== false && logEvery !== 0; // true by default
19
19
  const logEvery10 = logEvery * 10;
20
20
  const started = Date.now();
@@ -22,6 +22,7 @@ function transformLogProgress(opt = {}) {
22
22
  const sma = new js_lib_1.SimpleMovingAverage(10); // over last 10 seconds
23
23
  let processedLastSecond = 0;
24
24
  let progress = 0;
25
+ let peakRSS = 0;
25
26
  logStats(); // initial
26
27
  return new stream_1.Transform({
27
28
  objectMode: true,
@@ -49,12 +50,15 @@ function transformLogProgress(opt = {}) {
49
50
  lastSecondStarted = now;
50
51
  processedLastSecond = 0;
51
52
  const rps10 = Math.round(sma.push(lastRPS));
53
+ if (mem.rss > peakRSS)
54
+ peakRSS = mem.rss;
52
55
  console.log((0, util_1.inspect)({
53
56
  [final ? `${metric}_final` : metric]: progress,
54
57
  ...(extra ? extra(chunk, progress) : {}),
55
58
  ...(logHeapUsed ? { heapUsed: (0, js_lib_1._mb)(mem.heapUsed) } : {}),
56
59
  ...(logHeapTotal ? { heapTotal: (0, js_lib_1._mb)(mem.heapTotal) } : {}),
57
60
  ...(logRss ? { rss: (0, js_lib_1._mb)(mem.rss) } : {}),
61
+ ...(logPeakRSS ? { peakRSS: (0, js_lib_1._mb)(peakRSS) } : {}),
58
62
  ...(opt.rssMinusHeap ? { rssMinusHeap: (0, js_lib_1._mb)(mem.rss - mem.heapTotal) } : {}),
59
63
  ...(opt.external ? { external: (0, js_lib_1._mb)(mem.external) } : {}),
60
64
  ...(opt.arrayBuffers ? { arrayBuffers: (0, js_lib_1._mb)(mem.arrayBuffers || 0) } : {}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@naturalcycles/nodejs-lib",
3
- "version": "12.37.0",
3
+ "version": "12.38.0",
4
4
  "scripts": {
5
5
  "prepare": "husky install",
6
6
  "docs-serve": "vuepress dev docs",
@@ -34,6 +34,13 @@ export interface TransformLogProgressOptions<IN = any> extends TransformOptions
34
34
  */
35
35
  rss?: boolean
36
36
 
37
+ /**
38
+ * Incude Peak RSS in log.
39
+ *
40
+ * @default false
41
+ */
42
+ peakRSS?: boolean
43
+
37
44
  /**
38
45
  * Include `external` in log.
39
46
  *
@@ -64,16 +71,17 @@ export interface TransformLogProgressOptions<IN = any> extends TransformOptions
64
71
  logRPS?: boolean
65
72
 
66
73
  /**
67
- * @default true
68
74
  * Set to false to disable logging progress
75
+ *
76
+ * @default true
69
77
  */
70
78
  logProgress?: boolean
71
79
 
72
80
  /**
73
81
  * Log progress event Nth record that is _processed_ (went through mapper).
82
+ * Set to 0 to disable logging.
74
83
  *
75
84
  * @default 1000
76
- * Set to 0 to disable logging.
77
85
  */
78
86
  logEvery?: number
79
87
 
@@ -87,7 +95,7 @@ export interface TransformLogProgressOptions<IN = any> extends TransformOptions
87
95
 
88
96
  const inspectOpt: InspectOptions = {
89
97
  colors: true,
90
- breakLength: 200,
98
+ breakLength: 300,
91
99
  }
92
100
 
93
101
  /**
@@ -101,6 +109,7 @@ export function transformLogProgress<IN = any>(
101
109
  heapTotal: logHeapTotal = false,
102
110
  heapUsed: logHeapUsed = true,
103
111
  rss: logRss = true,
112
+ peakRSS: logPeakRSS = false,
104
113
  logRPS = true,
105
114
  logEvery = 1000,
106
115
  extra,
@@ -113,6 +122,7 @@ export function transformLogProgress<IN = any>(
113
122
  const sma = new SimpleMovingAverage(10) // over last 10 seconds
114
123
  let processedLastSecond = 0
115
124
  let progress = 0
125
+ let peakRSS = 0
116
126
 
117
127
  logStats() // initial
118
128
 
@@ -138,6 +148,7 @@ export function transformLogProgress<IN = any>(
138
148
 
139
149
  function logStats(chunk?: IN, final = false, tenx = false): void {
140
150
  if (!logProgress) return
151
+
141
152
  const mem = process.memoryUsage()
142
153
 
143
154
  const now = Date.now()
@@ -147,6 +158,7 @@ export function transformLogProgress<IN = any>(
147
158
  processedLastSecond = 0
148
159
 
149
160
  const rps10 = Math.round(sma.push(lastRPS))
161
+ if (mem.rss > peakRSS) peakRSS = mem.rss
150
162
 
151
163
  console.log(
152
164
  inspect(
@@ -156,6 +168,7 @@ export function transformLogProgress<IN = any>(
156
168
  ...(logHeapUsed ? { heapUsed: _mb(mem.heapUsed) } : {}),
157
169
  ...(logHeapTotal ? { heapTotal: _mb(mem.heapTotal) } : {}),
158
170
  ...(logRss ? { rss: _mb(mem.rss) } : {}),
171
+ ...(logPeakRSS ? { peakRSS: _mb(peakRSS) } : {}),
159
172
  ...(opt.rssMinusHeap ? { rssMinusHeap: _mb(mem.rss - mem.heapTotal) } : {}),
160
173
  ...(opt.external ? { external: _mb(mem.external) } : {}),
161
174
  ...(opt.arrayBuffers ? { arrayBuffers: _mb(mem.arrayBuffers || 0) } : {}),