kibana/packages/kbn-profiling-utils/index.ts
Tim Rühsen 79f63c2a3d
[Profiling] Ignore error frames (#176537)
This change allows the Universal Profiling agent to send error frames,
which will give us more accurate values for CO2 emission and $ costs.

The reason is that unwinding errors resulting in 0-length stacktraces
happen quite often. These are not sent to the backend currently, so the
related CPU activity doesn't go into the calculations. This can make up
showing 10% less CPU / CO2 / costs in the UI.
Adding artificial error frames in case of unwinding errors guarantees
that stacktraces always have a length of > 0.

Once we settled on how error frames can be displayed in a user-friendly
way, this code can be removed.

---------

Co-authored-by: Joel Höner <joel@elastic.co>
Co-authored-by: Caue Marcondes <caue.marcondes@elastic.co>
2024-02-13 07:40:21 +01:00

55 lines
1.7 KiB
TypeScript

/*
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
* or more contributor license agreements. Licensed under the Elastic License
* 2.0 and the Server Side Public License, v 1; you may not use this file except
* in compliance with, at your election, the Elastic License 2.0 or the Server
* Side Public License, v 1.
*/
export { decodeStackTraceResponse } from './common/stack_traces';
export { createFlameGraph } from './common/flamegraph';
export { ProfilingESField } from './common/elasticsearch';
export {
groupStackFrameMetadataByStackTrace,
describeFrameType,
normalizeFrameType,
FrameType,
getCalleeFunction,
getCalleeSource,
getLanguageType,
FrameSymbolStatus,
getFrameSymbolStatus,
createStackFrameMetadata,
emptyExecutable,
emptyStackFrame,
emptyStackTrace,
} from './common/profiling';
export { getFieldNameForTopNType, TopNType, StackTracesDisplayOption } from './common/stack_traces';
export { createFrameGroupID } from './common/frame_group';
export {
createTopNFunctions,
TopNFunctionSortField,
topNFunctionSortFieldRt,
TopNComparisonFunctionSortField,
topNComparisonFunctionSortFieldRt,
} from './common/functions';
export { convertTonsToKgs } from './common/utils';
export type {
ProfilingStatusResponse,
StackTraceResponse,
DecodedStackTraceResponse,
} from './common/stack_traces';
export type { ElasticFlameGraph, BaseFlameGraph } from './common/flamegraph';
export type { FrameGroupID } from './common/frame_group';
export type {
Executable,
FileID,
StackFrame,
StackFrameID,
StackFrameMetadata,
StackTrace,
StackTraceID,
} from './common/profiling';
export type { ProfilingStatus } from './common/profiling_status';
export type { TopNFunctions } from './common/functions';