Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions doc/api/perf_hooks.md
Original file line number Diff line number Diff line change
Expand Up @@ -643,6 +643,7 @@ The value may be one of:

* `perf_hooks.constants.NODE_PERFORMANCE_GC_MAJOR`
* `perf_hooks.constants.NODE_PERFORMANCE_GC_MINOR`
* `perf_hooks.constants.NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP`
* `perf_hooks.constants.NODE_PERFORMANCE_GC_INCREMENTAL`
* `perf_hooks.constants.NODE_PERFORMANCE_GC_WEAKCB`

Expand All @@ -654,6 +655,7 @@ When `performanceEntry.type` is equal to `'gc'`, the
* `kind` {number} One of:
* `perf_hooks.constants.NODE_PERFORMANCE_GC_MAJOR`
* `perf_hooks.constants.NODE_PERFORMANCE_GC_MINOR`
* `perf_hooks.constants.NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP`
* `perf_hooks.constants.NODE_PERFORMANCE_GC_INCREMENTAL`
* `perf_hooks.constants.NODE_PERFORMANCE_GC_WEAKCB`
* `flags` {number} One of:
Expand Down
1 change: 1 addition & 0 deletions src/node_perf.cc
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ void CreatePerContextProperties(Local<Object> target,

NODE_DEFINE_CONSTANT(constants, NODE_PERFORMANCE_GC_MAJOR);
NODE_DEFINE_CONSTANT(constants, NODE_PERFORMANCE_GC_MINOR);
NODE_DEFINE_CONSTANT(constants, NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP);
NODE_DEFINE_CONSTANT(constants, NODE_PERFORMANCE_GC_INCREMENTAL);
NODE_DEFINE_CONSTANT(constants, NODE_PERFORMANCE_GC_WEAKCB);

Expand Down
1 change: 1 addition & 0 deletions src/node_perf.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ inline PerformanceEntryType ToPerformanceEntryTypeEnum(
enum PerformanceGCKind {
NODE_PERFORMANCE_GC_MAJOR = v8::GCType::kGCTypeMarkSweepCompact,
NODE_PERFORMANCE_GC_MINOR = v8::GCType::kGCTypeScavenge,
NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP = v8::GCType::kGCTypeMinorMarkSweep,
NODE_PERFORMANCE_GC_INCREMENTAL = v8::GCType::kGCTypeIncrementalMarking,
NODE_PERFORMANCE_GC_WEAKCB = v8::GCType::kGCTypeProcessWeakCallbacks
};
Expand Down
33 changes: 33 additions & 0 deletions test/parallel/test-performance-gc-minor-ms.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
// Flags: --expose-gc --no-warnings --minor-ms
'use strict';

// When V8's Minor Mark-Sweep collector is enabled (--minor-ms), minor garbage
// collections are reported with kind NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP
// rather than NODE_PERFORMANCE_GC_MINOR.

const common = require('../common');
const assert = require('assert');
const {
PerformanceObserver,
constants
} = require('perf_hooks');

const {
NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP,
NODE_PERFORMANCE_GC_FLAGS_FORCED
} = constants;

const obs = new PerformanceObserver(common.mustCallAtLeast((list) => {
const entry = list.getEntries()[0];
assert(entry);
assert.strictEqual(entry.name, 'gc');
assert.strictEqual(entry.entryType, 'gc');
assert.strictEqual(entry.detail.kind, NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP);
assert.strictEqual(entry.detail.flags, NODE_PERFORMANCE_GC_FLAGS_FORCED);
obs.disconnect();
}));
obs.observe({ entryTypes: ['gc'] });

globalThis.gc({ type: 'minor' });
// Keep the event loop alive to witness the GC async callback happen.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would you mind converting this to gcUntil from test/common/gc.js, reducing the flakiness on the gc timing?

This can be like:

let observed = fasel;
const obs = new PerformanceObserver(common.mustCallAtLeast((list) => {
   ...
   observed = true;
}));

gcUntil('minor gc event', () => observed, 10, { type: 'minor' });

setImmediate(() => setImmediate(() => 0));
2 changes: 2 additions & 0 deletions test/parallel/test-performance-gc.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ const {
const {
NODE_PERFORMANCE_GC_MAJOR,
NODE_PERFORMANCE_GC_MINOR,
NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP,
NODE_PERFORMANCE_GC_INCREMENTAL,
NODE_PERFORMANCE_GC_WEAKCB,
NODE_PERFORMANCE_GC_FLAGS_FORCED
Expand All @@ -19,6 +20,7 @@ const {
const kinds = [
NODE_PERFORMANCE_GC_MAJOR,
NODE_PERFORMANCE_GC_MINOR,
NODE_PERFORMANCE_GC_MINOR_MARK_SWEEP,
NODE_PERFORMANCE_GC_INCREMENTAL,
NODE_PERFORMANCE_GC_WEAKCB,
];
Expand Down
Loading