@datadog/pprof 2.0.0-pre-9983949 → 2.0.0-pre-d4ee286
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/out/src/cpu-profiler.d.ts +1 -1
- package/out/src/heap-profiler.d.ts +2 -2
- package/out/src/profile-encoder.d.ts +3 -3
- package/out/src/profile-encoder.js +2 -5
- package/out/src/profile-encoder.js.map +1 -1
- package/out/src/profile-serializer.d.ts +4 -4
- package/out/src/profile-serializer.js +35 -59
- package/out/src/profile-serializer.js.map +1 -1
- package/out/src/time-profiler.d.ts +2 -2
- package/package.json +3 -5
- package/prebuilds/darwin-arm64/node-102.node +0 -0
- package/prebuilds/darwin-arm64/node-108.node +0 -0
- package/prebuilds/darwin-arm64/node-111.node +0 -0
- package/prebuilds/darwin-arm64/node-72.node +0 -0
- package/prebuilds/darwin-arm64/node-79.node +0 -0
- package/prebuilds/darwin-arm64/node-83.node +0 -0
- package/prebuilds/darwin-arm64/node-88.node +0 -0
- package/prebuilds/darwin-arm64/node-93.node +0 -0
- package/prebuilds/darwin-x64/node-102.node +0 -0
- package/prebuilds/darwin-x64/node-108.node +0 -0
- package/prebuilds/darwin-x64/node-111.node +0 -0
- package/prebuilds/darwin-x64/node-72.node +0 -0
- package/prebuilds/darwin-x64/node-79.node +0 -0
- package/prebuilds/darwin-x64/node-83.node +0 -0
- package/prebuilds/darwin-x64/node-88.node +0 -0
- package/prebuilds/darwin-x64/node-93.node +0 -0
- package/prebuilds/linux-arm/node-102.node +0 -0
- package/prebuilds/linux-arm/node-108.node +0 -0
- package/prebuilds/linux-arm/node-111.node +0 -0
- package/prebuilds/linux-arm/node-72.node +0 -0
- package/prebuilds/linux-arm/node-79.node +0 -0
- package/prebuilds/linux-arm/node-83.node +0 -0
- package/prebuilds/linux-arm/node-88.node +0 -0
- package/prebuilds/linux-arm/node-93.node +0 -0
- package/prebuilds/linux-arm64/node-102.node +0 -0
- package/prebuilds/linux-arm64/node-108.node +0 -0
- package/prebuilds/linux-arm64/node-111.node +0 -0
- package/prebuilds/linux-arm64/node-72.node +0 -0
- package/prebuilds/linux-arm64/node-79.node +0 -0
- package/prebuilds/linux-arm64/node-83.node +0 -0
- package/prebuilds/linux-arm64/node-88.node +0 -0
- package/prebuilds/linux-arm64/node-93.node +0 -0
- package/prebuilds/linux-ia32/node-72.node +0 -0
- package/prebuilds/linux-ia32/node-79.node +0 -0
- package/prebuilds/linux-x64/node-102.node +0 -0
- package/prebuilds/linux-x64/node-108.node +0 -0
- package/prebuilds/linux-x64/node-111.node +0 -0
- package/prebuilds/linux-x64/node-72.node +0 -0
- package/prebuilds/linux-x64/node-79.node +0 -0
- package/prebuilds/linux-x64/node-83.node +0 -0
- package/prebuilds/linux-x64/node-88.node +0 -0
- package/prebuilds/linux-x64/node-93.node +0 -0
- package/prebuilds/linuxmusl-x64/node-102.node +0 -0
- package/prebuilds/linuxmusl-x64/node-108.node +0 -0
- package/prebuilds/linuxmusl-x64/node-111.node +0 -0
- package/prebuilds/linuxmusl-x64/node-72.node +0 -0
- package/prebuilds/linuxmusl-x64/node-79.node +0 -0
- package/prebuilds/linuxmusl-x64/node-83.node +0 -0
- package/prebuilds/linuxmusl-x64/node-88.node +0 -0
- package/prebuilds/linuxmusl-x64/node-93.node +0 -0
- package/prebuilds/win32-ia32/node-102.node +0 -0
- package/prebuilds/win32-ia32/node-72.node +0 -0
- package/prebuilds/win32-ia32/node-79.node +0 -0
- package/prebuilds/win32-ia32/node-83.node +0 -0
- package/prebuilds/win32-ia32/node-88.node +0 -0
- package/prebuilds/win32-ia32/node-93.node +0 -0
- package/prebuilds/win32-x64/node-102.node +0 -0
- package/prebuilds/win32-x64/node-108.node +0 -0
- package/prebuilds/win32-x64/node-111.node +0 -0
- package/prebuilds/win32-x64/node-72.node +0 -0
- package/prebuilds/win32-x64/node-79.node +0 -0
- package/prebuilds/win32-x64/node-83.node +0 -0
- package/prebuilds/win32-x64/node-88.node +0 -0
- package/prebuilds/win32-x64/node-93.node +0 -0
- package/proto/README.md +0 -3
- package/proto/profile.d.ts +0 -1001
- package/proto/profile.js +0 -3161
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
*/
|
|
16
16
|
import { CpuProfiler as NativeCpuProfiler } from './cpu-profiler-bindings';
|
|
17
17
|
export default class CpuProfiler extends NativeCpuProfiler {
|
|
18
|
-
profile(): import("
|
|
18
|
+
profile(): import("pprof-format").Profile | undefined;
|
|
19
19
|
}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { Profile } from 'pprof-format';
|
|
17
17
|
import { SourceMapper } from './sourcemapper/sourcemapper';
|
|
18
18
|
import { AllocationProfileNode } from './v8-types';
|
|
19
19
|
export declare function v8Profile(): AllocationProfileNode;
|
|
@@ -24,7 +24,7 @@ export declare function v8Profile(): AllocationProfileNode;
|
|
|
24
24
|
* @param ignoreSamplePath
|
|
25
25
|
* @param sourceMapper
|
|
26
26
|
*/
|
|
27
|
-
export declare function profile(ignoreSamplePath?: string, sourceMapper?: SourceMapper):
|
|
27
|
+
export declare function profile(ignoreSamplePath?: string, sourceMapper?: SourceMapper): Profile;
|
|
28
28
|
/**
|
|
29
29
|
* Starts heap profiling. If heap profiling has already been started with
|
|
30
30
|
* the same parameters, this is a noop. If heap profiler has already been
|
|
@@ -14,6 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
/// <reference types="node" />
|
|
17
|
-
import {
|
|
18
|
-
export declare function encode(profile:
|
|
19
|
-
export declare function encodeSync(profile:
|
|
17
|
+
import { Profile } from 'pprof-format';
|
|
18
|
+
export declare function encode(profile: Profile): Promise<Buffer>;
|
|
19
|
+
export declare function encodeSync(profile: Profile): Buffer;
|
|
@@ -18,16 +18,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
18
18
|
exports.encodeSync = exports.encode = void 0;
|
|
19
19
|
const pify = require("pify");
|
|
20
20
|
const zlib_1 = require("zlib");
|
|
21
|
-
const profile_1 = require("../../proto/profile");
|
|
22
21
|
const gzipPromise = pify(zlib_1.gzip);
|
|
23
22
|
async function encode(profile) {
|
|
24
|
-
|
|
25
|
-
return gzipPromise(buffer);
|
|
23
|
+
return gzipPromise(profile.encode());
|
|
26
24
|
}
|
|
27
25
|
exports.encode = encode;
|
|
28
26
|
function encodeSync(profile) {
|
|
29
|
-
|
|
30
|
-
return (0, zlib_1.gzipSync)(buffer);
|
|
27
|
+
return (0, zlib_1.gzipSync)(profile.encode());
|
|
31
28
|
}
|
|
32
29
|
exports.encodeSync = encodeSync;
|
|
33
30
|
//# sourceMappingURL=profile-encoder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-encoder.js","sourceRoot":"","sources":["../../ts/src/profile-encoder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6BAA6B;AAC7B,+BAAoC;
|
|
1
|
+
{"version":3,"file":"profile-encoder.js","sourceRoot":"","sources":["../../ts/src/profile-encoder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,6BAA6B;AAC7B,+BAAoC;AAIpC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAI,CAAC,CAAC;AAExB,KAAK,UAAU,MAAM,CAAC,OAAgB;IAC3C,OAAO,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACvC,CAAC;AAFD,wBAEC;AAED,SAAgB,UAAU,CAAC,OAAgB;IACzC,OAAO,IAAA,eAAQ,EAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACpC,CAAC;AAFD,gCAEC"}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
import {
|
|
16
|
+
import { Profile } from 'pprof-format';
|
|
17
17
|
import { SourceMapper } from './sourcemapper/sourcemapper';
|
|
18
18
|
import { AllocationProfileNode, CpuProfile, TimeProfile } from './v8-types';
|
|
19
19
|
/**
|
|
@@ -23,7 +23,7 @@ import { AllocationProfileNode, CpuProfile, TimeProfile } from './v8-types';
|
|
|
23
23
|
* @param prof - profile to be converted.
|
|
24
24
|
* @param intervalMicros - average time (microseconds) between samples.
|
|
25
25
|
*/
|
|
26
|
-
export declare function serializeTimeProfile(prof: TimeProfile, intervalMicros: number, sourceMapper?: SourceMapper):
|
|
26
|
+
export declare function serializeTimeProfile(prof: TimeProfile, intervalMicros: number, sourceMapper?: SourceMapper): Profile;
|
|
27
27
|
/**
|
|
28
28
|
* Converts cpu profile into into a profile proto.
|
|
29
29
|
* (https://github.com/google/pprof/blob/master/proto/profile.proto)
|
|
@@ -31,7 +31,7 @@ export declare function serializeTimeProfile(prof: TimeProfile, intervalMicros:
|
|
|
31
31
|
* @param prof - profile to be converted.
|
|
32
32
|
* @param intervalMicros - average time (microseconds) between samples.
|
|
33
33
|
*/
|
|
34
|
-
export declare function serializeCpuProfile(prof: CpuProfile, intervalMicros: number, sourceMapper?: SourceMapper):
|
|
34
|
+
export declare function serializeCpuProfile(prof: CpuProfile, intervalMicros: number, sourceMapper?: SourceMapper): Profile;
|
|
35
35
|
/**
|
|
36
36
|
* Converts v8 heap profile into into a profile proto.
|
|
37
37
|
* (https://github.com/google/pprof/blob/master/proto/profile.proto)
|
|
@@ -42,4 +42,4 @@ export declare function serializeCpuProfile(prof: CpuProfile, intervalMicros: nu
|
|
|
42
42
|
* nanoseconds.
|
|
43
43
|
* @param intervalBytes - bytes allocated between samples.
|
|
44
44
|
*/
|
|
45
|
-
export declare function serializeHeapProfile(prof: AllocationProfileNode, startTimeNanos: number, intervalBytes: number, ignoreSamplesPath?: string, sourceMapper?: SourceMapper):
|
|
45
|
+
export declare function serializeHeapProfile(prof: AllocationProfileNode, startTimeNanos: number, intervalBytes: number, ignoreSamplesPath?: string, sourceMapper?: SourceMapper): Profile;
|
|
@@ -16,36 +16,12 @@
|
|
|
16
16
|
*/
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.serializeHeapProfile = exports.serializeCpuProfile = exports.serializeTimeProfile = void 0;
|
|
19
|
-
const
|
|
19
|
+
const pprof_format_1 = require("pprof-format");
|
|
20
20
|
function isGeneratedLocation(location) {
|
|
21
21
|
return (location.column !== undefined &&
|
|
22
22
|
location.line !== undefined &&
|
|
23
23
|
location.line > 0);
|
|
24
24
|
}
|
|
25
|
-
/**
|
|
26
|
-
* Used to build string table and access strings and their ids within the table
|
|
27
|
-
* when serializing a profile.
|
|
28
|
-
*/
|
|
29
|
-
class StringTable {
|
|
30
|
-
constructor() {
|
|
31
|
-
this.strings = [];
|
|
32
|
-
this.stringsMap = new Map();
|
|
33
|
-
this.getIndexOrAdd('');
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* @return index of str within the table. Also adds str to string table if
|
|
37
|
-
* str is not in the table already.
|
|
38
|
-
*/
|
|
39
|
-
getIndexOrAdd(str) {
|
|
40
|
-
let idx = this.stringsMap.get(str);
|
|
41
|
-
if (idx !== undefined) {
|
|
42
|
-
return idx;
|
|
43
|
-
}
|
|
44
|
-
idx = this.strings.push(str) - 1;
|
|
45
|
-
this.stringsMap.set(str, idx);
|
|
46
|
-
return idx;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
25
|
/**
|
|
50
26
|
* Takes v8 profile and populates sample, location, and function fields of
|
|
51
27
|
* profile.proto.
|
|
@@ -87,7 +63,7 @@ function serialize(profile, root, appendToSamples, stringTable, ignoreSamplesPat
|
|
|
87
63
|
profile.sample = samples;
|
|
88
64
|
profile.location = locations;
|
|
89
65
|
profile.function = functions;
|
|
90
|
-
profile.stringTable = stringTable
|
|
66
|
+
profile.stringTable = stringTable;
|
|
91
67
|
function getLocation(node, sourceMapper) {
|
|
92
68
|
let profLoc = {
|
|
93
69
|
file: node.scriptName || '',
|
|
@@ -109,12 +85,12 @@ function serialize(profile, root, appendToSamples, stringTable, ignoreSamplesPat
|
|
|
109
85
|
id = locations.length + 1;
|
|
110
86
|
locationIdMap.set(keyStr, id);
|
|
111
87
|
const line = getLine(node.scriptId, profLoc.file, profLoc.name, profLoc.line);
|
|
112
|
-
const location = new
|
|
88
|
+
const location = new pprof_format_1.Location({ id, line: [line] });
|
|
113
89
|
locations.push(location);
|
|
114
90
|
return location;
|
|
115
91
|
}
|
|
116
92
|
function getLine(scriptId, scriptName, name, line) {
|
|
117
|
-
return new
|
|
93
|
+
return new pprof_format_1.Line({
|
|
118
94
|
functionId: getFunction(scriptId, scriptName, name).id,
|
|
119
95
|
line,
|
|
120
96
|
});
|
|
@@ -128,12 +104,12 @@ function serialize(profile, root, appendToSamples, stringTable, ignoreSamplesPat
|
|
|
128
104
|
}
|
|
129
105
|
id = functions.length + 1;
|
|
130
106
|
functionIdMap.set(keyStr, id);
|
|
131
|
-
const nameId = stringTable.
|
|
132
|
-
const f = new
|
|
107
|
+
const nameId = stringTable.dedup(name || '(anonymous)');
|
|
108
|
+
const f = new pprof_format_1.Function({
|
|
133
109
|
id,
|
|
134
110
|
name: nameId,
|
|
135
111
|
systemName: nameId,
|
|
136
|
-
filename: stringTable.
|
|
112
|
+
filename: stringTable.dedup(scriptName || ''),
|
|
137
113
|
});
|
|
138
114
|
functions.push(f);
|
|
139
115
|
return f;
|
|
@@ -144,9 +120,9 @@ function serialize(profile, root, appendToSamples, stringTable, ignoreSamplesPat
|
|
|
144
120
|
* adds strings used in this value type to the table.
|
|
145
121
|
*/
|
|
146
122
|
function createSampleCountValueType(table) {
|
|
147
|
-
return new
|
|
148
|
-
type: table.
|
|
149
|
-
unit: table.
|
|
123
|
+
return new pprof_format_1.ValueType({
|
|
124
|
+
type: table.dedup('sample'),
|
|
125
|
+
unit: table.dedup('count'),
|
|
150
126
|
});
|
|
151
127
|
}
|
|
152
128
|
/**
|
|
@@ -154,9 +130,9 @@ function createSampleCountValueType(table) {
|
|
|
154
130
|
* adds strings used in this value type to the table.
|
|
155
131
|
*/
|
|
156
132
|
function createTimeValueType(table) {
|
|
157
|
-
return new
|
|
158
|
-
type: table.
|
|
159
|
-
unit: table.
|
|
133
|
+
return new pprof_format_1.ValueType({
|
|
134
|
+
type: table.dedup('wall'),
|
|
135
|
+
unit: table.dedup('nanoseconds'),
|
|
160
136
|
});
|
|
161
137
|
}
|
|
162
138
|
/**
|
|
@@ -164,9 +140,9 @@ function createTimeValueType(table) {
|
|
|
164
140
|
* adds strings used in this value type to the table.
|
|
165
141
|
*/
|
|
166
142
|
function createCpuValueType(table) {
|
|
167
|
-
return new
|
|
168
|
-
type: table.
|
|
169
|
-
unit: table.
|
|
143
|
+
return new pprof_format_1.ValueType({
|
|
144
|
+
type: table.dedup('cpu'),
|
|
145
|
+
unit: table.dedup('nanoseconds'),
|
|
170
146
|
});
|
|
171
147
|
}
|
|
172
148
|
/**
|
|
@@ -174,9 +150,9 @@ function createCpuValueType(table) {
|
|
|
174
150
|
* adds strings used in this value type to the table.
|
|
175
151
|
*/
|
|
176
152
|
function createObjectCountValueType(table) {
|
|
177
|
-
return new
|
|
178
|
-
type: table.
|
|
179
|
-
unit: table.
|
|
153
|
+
return new pprof_format_1.ValueType({
|
|
154
|
+
type: table.dedup('objects'),
|
|
155
|
+
unit: table.dedup('count'),
|
|
180
156
|
});
|
|
181
157
|
}
|
|
182
158
|
/**
|
|
@@ -184,9 +160,9 @@ function createObjectCountValueType(table) {
|
|
|
184
160
|
* adds strings used in this value type to the table.
|
|
185
161
|
*/
|
|
186
162
|
function createAllocationValueType(table) {
|
|
187
|
-
return new
|
|
188
|
-
type: table.
|
|
189
|
-
unit: table.
|
|
163
|
+
return new pprof_format_1.ValueType({
|
|
164
|
+
type: table.dedup('space'),
|
|
165
|
+
unit: table.dedup('bytes'),
|
|
190
166
|
});
|
|
191
167
|
}
|
|
192
168
|
/**
|
|
@@ -200,14 +176,14 @@ function serializeTimeProfile(prof, intervalMicros, sourceMapper) {
|
|
|
200
176
|
const intervalNanos = intervalMicros * 1000;
|
|
201
177
|
const appendTimeEntryToSamples = (entry, samples) => {
|
|
202
178
|
if (entry.node.hitCount > 0) {
|
|
203
|
-
const sample = new
|
|
179
|
+
const sample = new pprof_format_1.Sample({
|
|
204
180
|
locationId: entry.stack,
|
|
205
181
|
value: [entry.node.hitCount, entry.node.hitCount * intervalNanos],
|
|
206
182
|
});
|
|
207
183
|
samples.push(sample);
|
|
208
184
|
}
|
|
209
185
|
};
|
|
210
|
-
const stringTable = new StringTable();
|
|
186
|
+
const stringTable = new pprof_format_1.StringTable();
|
|
211
187
|
const sampleValueType = createSampleCountValueType(stringTable);
|
|
212
188
|
const timeValueType = createTimeValueType(stringTable);
|
|
213
189
|
const profile = {
|
|
@@ -218,18 +194,18 @@ function serializeTimeProfile(prof, intervalMicros, sourceMapper) {
|
|
|
218
194
|
period: intervalNanos,
|
|
219
195
|
};
|
|
220
196
|
serialize(profile, prof.topDownRoot, appendTimeEntryToSamples, stringTable, undefined, sourceMapper);
|
|
221
|
-
return profile;
|
|
197
|
+
return new pprof_format_1.Profile(profile);
|
|
222
198
|
}
|
|
223
199
|
exports.serializeTimeProfile = serializeTimeProfile;
|
|
224
200
|
function buildLabels(labelSet, stringTable) {
|
|
225
201
|
const labels = [];
|
|
226
202
|
for (const [key, value] of Object.entries(labelSet)) {
|
|
227
203
|
if (typeof value === 'number' || typeof value === 'string') {
|
|
228
|
-
const label = new
|
|
229
|
-
key: stringTable.
|
|
204
|
+
const label = new pprof_format_1.Label({
|
|
205
|
+
key: stringTable.dedup(key),
|
|
230
206
|
num: typeof value === 'number' ? value : undefined,
|
|
231
207
|
str: typeof value === 'string'
|
|
232
|
-
? stringTable.
|
|
208
|
+
? stringTable.dedup(value)
|
|
233
209
|
: undefined,
|
|
234
210
|
});
|
|
235
211
|
labels.push(label);
|
|
@@ -248,7 +224,7 @@ function serializeCpuProfile(prof, intervalMicros, sourceMapper) {
|
|
|
248
224
|
const intervalNanos = intervalMicros * 1000;
|
|
249
225
|
const appendCpuEntryToSamples = (entry, samples) => {
|
|
250
226
|
for (const labelCpu of entry.node.labelSets) {
|
|
251
|
-
const sample = new
|
|
227
|
+
const sample = new pprof_format_1.Sample({
|
|
252
228
|
locationId: entry.stack,
|
|
253
229
|
value: [1, labelCpu.cpuTime],
|
|
254
230
|
label: buildLabels(labelCpu.labels, stringTable),
|
|
@@ -256,14 +232,14 @@ function serializeCpuProfile(prof, intervalMicros, sourceMapper) {
|
|
|
256
232
|
samples.push(sample);
|
|
257
233
|
}
|
|
258
234
|
if (entry.node.hitCount > 0) {
|
|
259
|
-
const sample = new
|
|
235
|
+
const sample = new pprof_format_1.Sample({
|
|
260
236
|
locationId: entry.stack,
|
|
261
237
|
value: [entry.node.hitCount, entry.node.cpuTime],
|
|
262
238
|
});
|
|
263
239
|
samples.push(sample);
|
|
264
240
|
}
|
|
265
241
|
};
|
|
266
|
-
const stringTable = new StringTable();
|
|
242
|
+
const stringTable = new pprof_format_1.StringTable();
|
|
267
243
|
const sampleValueType = createSampleCountValueType(stringTable);
|
|
268
244
|
// const wallValueType = createTimeValueType(stringTable);
|
|
269
245
|
const cpuValueType = createCpuValueType(stringTable);
|
|
@@ -275,7 +251,7 @@ function serializeCpuProfile(prof, intervalMicros, sourceMapper) {
|
|
|
275
251
|
period: intervalNanos,
|
|
276
252
|
};
|
|
277
253
|
serialize(profile, prof.topDownRoot, appendCpuEntryToSamples, stringTable, undefined, sourceMapper);
|
|
278
|
-
return profile;
|
|
254
|
+
return new pprof_format_1.Profile(profile);
|
|
279
255
|
}
|
|
280
256
|
exports.serializeCpuProfile = serializeCpuProfile;
|
|
281
257
|
/**
|
|
@@ -292,7 +268,7 @@ function serializeHeapProfile(prof, startTimeNanos, intervalBytes, ignoreSamples
|
|
|
292
268
|
const appendHeapEntryToSamples = (entry, samples) => {
|
|
293
269
|
if (entry.node.allocations.length > 0) {
|
|
294
270
|
for (const alloc of entry.node.allocations) {
|
|
295
|
-
const sample = new
|
|
271
|
+
const sample = new pprof_format_1.Sample({
|
|
296
272
|
locationId: entry.stack,
|
|
297
273
|
value: [alloc.count, alloc.sizeBytes * alloc.count],
|
|
298
274
|
// TODO: add tag for allocation size
|
|
@@ -301,7 +277,7 @@ function serializeHeapProfile(prof, startTimeNanos, intervalBytes, ignoreSamples
|
|
|
301
277
|
}
|
|
302
278
|
}
|
|
303
279
|
};
|
|
304
|
-
const stringTable = new StringTable();
|
|
280
|
+
const stringTable = new pprof_format_1.StringTable();
|
|
305
281
|
const sampleValueType = createObjectCountValueType(stringTable);
|
|
306
282
|
const allocationValueType = createAllocationValueType(stringTable);
|
|
307
283
|
const profile = {
|
|
@@ -311,7 +287,7 @@ function serializeHeapProfile(prof, startTimeNanos, intervalBytes, ignoreSamples
|
|
|
311
287
|
period: intervalBytes,
|
|
312
288
|
};
|
|
313
289
|
serialize(profile, prof, appendHeapEntryToSamples, stringTable, ignoreSamplesPath, sourceMapper);
|
|
314
|
-
return profile;
|
|
290
|
+
return new pprof_format_1.Profile(profile);
|
|
315
291
|
}
|
|
316
292
|
exports.serializeHeapProfile = serializeHeapProfile;
|
|
317
293
|
//# sourceMappingURL=profile-serializer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profile-serializer.js","sourceRoot":"","sources":["../../ts/src/profile-serializer.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH
|
|
1
|
+
{"version":3,"file":"profile-serializer.js","sourceRoot":"","sources":["../../ts/src/profile-serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,6 @@ export interface TimeProfilerOptions {
|
|
|
31
31
|
*/
|
|
32
32
|
lineNumbers?: boolean;
|
|
33
33
|
}
|
|
34
|
-
export declare function profile(options: TimeProfilerOptions): Promise<import("
|
|
35
|
-
export declare function start(intervalMicros?: Microseconds, name?: string, sourceMapper?: SourceMapper, lineNumbers?: boolean): (restart?: boolean) => import("
|
|
34
|
+
export declare function profile(options: TimeProfilerOptions): Promise<import("pprof-format").Profile>;
|
|
35
|
+
export declare function start(intervalMicros?: Microseconds, name?: string, sourceMapper?: SourceMapper, lineNumbers?: boolean): (restart?: boolean) => import("pprof-format").Profile;
|
|
36
36
|
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@datadog/pprof",
|
|
3
|
-
"version": "2.0.0-pre-
|
|
3
|
+
"version": "2.0.0-pre-d4ee286",
|
|
4
4
|
"description": "pprof support for Node.js",
|
|
5
5
|
"repository": "datadog/pprof-nodejs",
|
|
6
6
|
"main": "out/src/index.js",
|
|
@@ -18,9 +18,7 @@
|
|
|
18
18
|
"prebuild": "node scripts/prebuild.js",
|
|
19
19
|
"prebuilds": "node scripts/prebuilds.js",
|
|
20
20
|
"prepare": "npm run compile",
|
|
21
|
-
"pretest": "npm run compile && npm run rebuild"
|
|
22
|
-
"proto": "npm run proto:profile",
|
|
23
|
-
"proto:profile": "mkdir -p proto && npx --yes pbjs -t static-module -w commonjs -o proto/profile.js third_party/proto/profile.proto && pbts -o proto/profile.d.ts proto/profile.js"
|
|
21
|
+
"pretest": "npm run compile && npm run rebuild"
|
|
24
22
|
},
|
|
25
23
|
"author": {
|
|
26
24
|
"name": "Google Inc."
|
|
@@ -31,7 +29,7 @@
|
|
|
31
29
|
"node-gyp-build": "^3.9.0",
|
|
32
30
|
"p-limit": "^3.1.0",
|
|
33
31
|
"pify": "^5.0.0",
|
|
34
|
-
"
|
|
32
|
+
"pprof-format": "^2.0.5",
|
|
35
33
|
"source-map": "^0.7.3",
|
|
36
34
|
"split": "^1.0.1"
|
|
37
35
|
},
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/proto/README.md
DELETED