Skip to content

Commit c8f6209

Browse files
committed
perf: use the faster api to collect rss
1 parent 2160804 commit c8f6209

2 files changed

Lines changed: 18 additions & 6 deletions

File tree

lib/metrics/helpers/safeRss.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
'use strict';
2+
3+
// process.memoryUsage.rss() can throw on some platforms, see #67
4+
function safeRss() {
5+
try {
6+
return process.memoryUsage.rss();
7+
} catch {
8+
return;
9+
}
10+
}
11+
12+
module.exports = safeRss;

lib/metrics/osMemoryHeap.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
const Gauge = require('../gauge');
44
const linuxVariant = require('./osMemoryHeapLinux');
5-
const safeMemoryUsage = require('./helpers/safeMemoryUsage');
5+
const safeRss = require('./helpers/safeRss');
66

77
const PROCESS_RESIDENT_MEMORY = 'process_resident_memory_bytes';
88

@@ -17,11 +17,11 @@ function notLinuxVariant(registry, config = {}) {
1717
registers: registry ? [registry] : undefined,
1818
labelNames,
1919
collect() {
20-
const memUsage = safeMemoryUsage();
21-
22-
// I don't think the other things returned from `process.memoryUsage()` is relevant to a standard export
23-
if (memUsage) {
24-
this.set(labels, memUsage.rss);
20+
// process.memoryUsage.rss() is faster than process.memoryUsage() as it
21+
// only reads RSS from the OS without collecting all heap statistics
22+
const rss = safeRss();
23+
if (rss !== undefined) {
24+
this.set(labels, rss);
2525
}
2626
},
2727
});

0 commit comments

Comments
 (0)