@datadog/pprof 1.0.2 → 1.1.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/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 +6 -8
- 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-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-111.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 -945
- package/proto/profile.js +0 -2989
|
@@ -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: intervalMicros,
|
|
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 labelSet 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, intervalNanos],
|
|
254
230
|
label: buildLabels(labelSet, stringTable),
|
|
@@ -257,7 +233,7 @@ function serializeCpuProfile(prof, intervalMicros, sourceMapper) {
|
|
|
257
233
|
}
|
|
258
234
|
const unknownEntryCount = entry.node.hitCount - entry.node.labelSets.length;
|
|
259
235
|
if (unknownEntryCount > 0) {
|
|
260
|
-
const sample = new
|
|
236
|
+
const sample = new pprof_format_1.Sample({
|
|
261
237
|
locationId: entry.stack,
|
|
262
238
|
value: [
|
|
263
239
|
unknownEntryCount,
|
|
@@ -268,7 +244,7 @@ function serializeCpuProfile(prof, intervalMicros, sourceMapper) {
|
|
|
268
244
|
samples.push(sample);
|
|
269
245
|
}
|
|
270
246
|
};
|
|
271
|
-
const stringTable = new StringTable();
|
|
247
|
+
const stringTable = new pprof_format_1.StringTable();
|
|
272
248
|
const sampleValueType = createSampleCountValueType(stringTable);
|
|
273
249
|
// const wallValueType = createTimeValueType(stringTable);
|
|
274
250
|
const cpuValueType = createCpuValueType(stringTable);
|
|
@@ -280,7 +256,7 @@ function serializeCpuProfile(prof, intervalMicros, sourceMapper) {
|
|
|
280
256
|
period: intervalMicros,
|
|
281
257
|
};
|
|
282
258
|
serialize(profile, prof.topDownRoot, appendCpuEntryToSamples, stringTable, undefined, sourceMapper);
|
|
283
|
-
return profile;
|
|
259
|
+
return new pprof_format_1.Profile(profile);
|
|
284
260
|
}
|
|
285
261
|
exports.serializeCpuProfile = serializeCpuProfile;
|
|
286
262
|
/**
|
|
@@ -297,7 +273,7 @@ function serializeHeapProfile(prof, startTimeNanos, intervalBytes, ignoreSamples
|
|
|
297
273
|
const appendHeapEntryToSamples = (entry, samples) => {
|
|
298
274
|
if (entry.node.allocations.length > 0) {
|
|
299
275
|
for (const alloc of entry.node.allocations) {
|
|
300
|
-
const sample = new
|
|
276
|
+
const sample = new pprof_format_1.Sample({
|
|
301
277
|
locationId: entry.stack,
|
|
302
278
|
value: [alloc.count, alloc.sizeBytes * alloc.count],
|
|
303
279
|
// TODO: add tag for allocation size
|
|
@@ -306,7 +282,7 @@ function serializeHeapProfile(prof, startTimeNanos, intervalBytes, ignoreSamples
|
|
|
306
282
|
}
|
|
307
283
|
}
|
|
308
284
|
};
|
|
309
|
-
const stringTable = new StringTable();
|
|
285
|
+
const stringTable = new pprof_format_1.StringTable();
|
|
310
286
|
const sampleValueType = createObjectCountValueType(stringTable);
|
|
311
287
|
const allocationValueType = createAllocationValueType(stringTable);
|
|
312
288
|
const profile = {
|
|
@@ -316,7 +292,7 @@ function serializeHeapProfile(prof, startTimeNanos, intervalBytes, ignoreSamples
|
|
|
316
292
|
period: intervalBytes,
|
|
317
293
|
};
|
|
318
294
|
serialize(profile, prof, appendHeapEntryToSamples, stringTable, ignoreSamplesPath, sourceMapper);
|
|
319
|
-
return profile;
|
|
295
|
+
return new pprof_format_1.Profile(profile);
|
|
320
296
|
}
|
|
321
297
|
exports.serializeHeapProfile = serializeHeapProfile;
|
|
322
298
|
//# 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": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
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 && 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."
|
|
@@ -29,13 +27,10 @@
|
|
|
29
27
|
"dependencies": {
|
|
30
28
|
"delay": "^5.0.0",
|
|
31
29
|
"findit2": "^2.2.3",
|
|
32
|
-
"nan": "^2.16.0",
|
|
33
30
|
"node-gyp-build": "^3.9.0",
|
|
34
31
|
"p-limit": "^3.1.0",
|
|
35
32
|
"pify": "^5.0.0",
|
|
36
|
-
"
|
|
37
|
-
"rimraf": "^3.0.2",
|
|
38
|
-
"semver": "^7.3.5",
|
|
33
|
+
"pprof-format": "^2.0.4",
|
|
39
34
|
"source-map": "^0.7.3",
|
|
40
35
|
"split": "^1.0.1"
|
|
41
36
|
},
|
|
@@ -48,6 +43,7 @@
|
|
|
48
43
|
"@types/request": "^2.47.1",
|
|
49
44
|
"@types/sinon": "^10.0.0",
|
|
50
45
|
"@types/tmp": "^0.2.3",
|
|
46
|
+
"@typescript-eslint/eslint-plugin": "^5.38.0",
|
|
51
47
|
"axios": "^0.27.2",
|
|
52
48
|
"checksum": "^1.0.0",
|
|
53
49
|
"codecov": "^3.0.0",
|
|
@@ -62,7 +58,9 @@
|
|
|
62
58
|
"linkinator": "^4.0.2",
|
|
63
59
|
"mkdirp": "^1.0.4",
|
|
64
60
|
"mocha": "^9.2.2",
|
|
61
|
+
"nan": "^2.17.0",
|
|
65
62
|
"nyc": "^15.0.0",
|
|
63
|
+
"protobufjs-cli": "^1.0.2",
|
|
66
64
|
"rimraf": "^3.0.2",
|
|
67
65
|
"semver": "^7.3.5",
|
|
68
66
|
"sinon": "^14.0.0",
|
|
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