From d98f2089d0805cd4948304a9e68354cacda452c6 Mon Sep 17 00:00:00 2001 From: zhang-zepeng1 Date: Thu, 25 Apr 2024 16:02:17 +0800 Subject: [PATCH] =?UTF-8?q?=E2=80=980425codecheck=E6=B8=85=E7=90=86?= =?UTF-8?q?=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhang-zepeng1 --- ide/src/hdc/HdcDeviceManager.ts | 2 + ide/src/trace/SpApplicationPublicFunc.ts | 1 + ide/src/trace/bean/BoxSelection.ts | 7 +- .../component/trace/TimerShaftElement.ts | 7 +- .../trace/component/trace/base/TraceRow.ts | 4 +- .../trace/sheet/sdk/TabPaneSdkSlice.ts | 2 +- .../component/trace/timer-shaft/SportRuler.ts | 3 +- .../ProcedureLogicWorkerCommon.ts | 2 +- .../logic-worker/ProcedureLogicWorkerPerf.ts | 8 +-- trace_streamer/build/sync_base.sh | 10 ++- .../src/base/filter_constraints.cpp | 6 +- trace_streamer/src/base/ts_common.h | 6 +- .../src/filter/app_start_filter.cpp | 10 ++- trace_streamer/src/filter/cpu_filter.cpp | 2 +- trace_streamer/src/filter/frame_filter.cpp | 14 ++-- trace_streamer/src/filter/frame_filter.h | 5 +- .../hi_sysevent_measure_filter.cpp | 19 +++--- .../filter/hook_filter/native_hook_filter.cpp | 67 +++++++++++++++---- trace_streamer/src/filter/slice_filter.cpp | 27 +++++--- trace_streamer/src/main.cpp | 19 +++++- .../ebpf_parser/bio_latency_data_parser.cpp | 5 +- .../ebpf_parser/bio_latency_data_parser.h | 2 +- .../src/parser/ebpf_parser/ebpf_base.cpp | 10 +-- .../src/parser/ebpf_parser/ebpf_base.h | 4 +- .../ebpf_parser/file_system_data_parser.cpp | 7 +- .../ebpf_parser/file_system_data_parser.h | 2 +- .../ebpf_parser/paged_memory_data_parser.cpp | 2 +- .../parser/hiperf_parser/perf_data_parser.cpp | 8 +-- .../hilog_parser/pbreader_hilog_parser.cpp | 2 +- .../pbreader_clock_detail_parser.cpp | 6 +- .../src/parser/print_event_parser.cpp | 9 +-- .../hilog_parser/ptreader_hilog_parser.cpp | 2 +- trace_streamer/src/rpc/ffrt_converter.cpp | 1 - trace_streamer/src/rpc/rpc_server.cpp | 11 +-- trace_streamer/src/rpc/rpc_server.h | 2 +- .../ftrace/callstack_stdtype.cpp | 36 ++++------ .../trace_stdtype/ftrace/callstack_stdtype.h | 18 +++-- .../ftrace/render_service_stdtype.cpp | 5 +- .../trace_stdtype/ftrace/sched_stdtype.h | 3 +- .../ftrace/template/app_startup_stdtype.h | 14 ++-- .../trace_stdtype/hilog/hilog_stdtype.h | 2 +- .../trace_stdtype/hiperf/hiperf_stdtype.h | 3 +- .../hisysevent/hisysevent_stdtype.h | 6 +- .../trace_stdtype/htrace/ebpf_stdtype.h | 14 ++-- .../htrace/native_memory_stdtype.cpp | 3 +- .../htrace/native_memory_stdtype.h | 9 +-- .../trace_streamer_selector.cpp | 14 ++-- trace_streamer/src/version.cpp | 4 +- .../unittest/filter/animation_filter_test.cpp | 14 ++-- .../test/unittest/table/table_test.cpp | 50 ++++++++------ 50 files changed, 274 insertions(+), 215 deletions(-) diff --git a/ide/src/hdc/HdcDeviceManager.ts b/ide/src/hdc/HdcDeviceManager.ts index 4d4aa0b7..5181ffaf 100644 --- a/ide/src/hdc/HdcDeviceManager.ts +++ b/ide/src/hdc/HdcDeviceManager.ts @@ -212,6 +212,7 @@ export class HdcDeviceManager { dataArray.length ); } + return; } else if (keyboardEvent.altKey) { return; } else { @@ -229,6 +230,7 @@ export class HdcDeviceManager { hdcShellStream.DoCommand(cmd); } } + return; } } else { hdcShellStream.DoCommand(HdcDeviceManager.processCommand(keyboardEvent)); diff --git a/ide/src/trace/SpApplicationPublicFunc.ts b/ide/src/trace/SpApplicationPublicFunc.ts index 01376bd3..1786b46b 100644 --- a/ide/src/trace/SpApplicationPublicFunc.ts +++ b/ide/src/trace/SpApplicationPublicFunc.ts @@ -314,6 +314,7 @@ export const applicationHtml: string = ` width: -webkit-fill-available; margin-right: 5.2em; align-items: center; + width: auto; } .page-number-list { display: flex; diff --git a/ide/src/trace/bean/BoxSelection.ts b/ide/src/trace/bean/BoxSelection.ts index 799501bc..36d28a86 100644 --- a/ide/src/trace/bean/BoxSelection.ts +++ b/ide/src/trace/bean/BoxSelection.ts @@ -679,19 +679,16 @@ export class SelectionParam { // @ts-ignore return isIntersect(frameSelectData, TraceRow.rangeSelectObject!); }); - let copyFrameSelectData = JSON.parse(JSON.stringify(frameSelectData)); + let copyFrameSelectData = JSON.parse(JSON.stringify(frameSelectData)) as Array; let frameSelectDataIdArr: Array = []; for (let data of copyFrameSelectData) { frameSelectDataIdArr.push(data.id); } - let jsCpuProfilerData = copyFrameSelectData.filter((item: unknown): unknown => { - // @ts-ignore + let jsCpuProfilerData = copyFrameSelectData.filter((item: JsCpuProfilerChartFrame): unknown => { if (item.depth !== 0) { return; } - // @ts-ignore setSelectState(item, frameSelectDataIdArr); - // @ts-ignore item.isSelect = true; return item; }); diff --git a/ide/src/trace/component/trace/TimerShaftElement.ts b/ide/src/trace/component/trace/TimerShaftElement.ts index 60a6edbf..a71d06c6 100644 --- a/ide/src/trace/component/trace/TimerShaftElement.ts +++ b/ide/src/trace/component/trace/TimerShaftElement.ts @@ -570,8 +570,11 @@ export class TimerShaftElement extends BaseElement { this._rangeRuler?.keyUp(ev); } - drawTriangle(time: number, type: string): unknown { - return this._sportRuler?.drawTriangle(time, type); + drawTriangle(time: number, type: string): number { + if (this._sportRuler) { + return this._sportRuler?.drawTriangle(time, type); + } + return 0; } removeTriangle(type: string): void { diff --git a/ide/src/trace/component/trace/base/TraceRow.ts b/ide/src/trace/component/trace/base/TraceRow.ts index 1c58dce0..a9a36309 100644 --- a/ide/src/trace/component/trace/base/TraceRow.ts +++ b/ide/src/trace/component/trace/base/TraceRow.ts @@ -559,7 +559,7 @@ export class TraceRow extends HTMLElement { }; //@ts-ignore - getHoverStruct(strict: boolean = true, offset: boolean = false, maxKey?: string): T { + getHoverStruct(strict: boolean = true, offset: boolean = false, maxKey?: string): T | undefined { if (this.isHover) { if (maxKey) { let arr = this.dataListCache @@ -569,7 +569,7 @@ export class TraceRow extends HTMLElement { } else { return this.dataListCache.find( (re) => re.frame && isFrameContainPoint(re.frame, this.hoverX, this.hoverY, strict, offset) - ) as T; + ); } } } diff --git a/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkSlice.ts b/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkSlice.ts index 2dd8e7d5..9cf58e32 100644 --- a/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkSlice.ts +++ b/ide/src/trace/component/trace/sheet/sdk/TabPaneSdkSlice.ts @@ -377,7 +377,7 @@ export class TabPaneSdkSlice extends BaseElement { if (typeof sliceValue === 'string') { return sliceValue.replace(//gi, '>'); } else { - return; + return ''; } } } diff --git a/ide/src/trace/component/trace/timer-shaft/SportRuler.ts b/ide/src/trace/component/trace/timer-shaft/SportRuler.ts index e31c5457..06118e24 100644 --- a/ide/src/trace/component/trace/timer-shaft/SportRuler.ts +++ b/ide/src/trace/component/trace/timer-shaft/SportRuler.ts @@ -373,7 +373,7 @@ export class SportRuler extends Graph { return inRange; } - drawTriangle(time: number, type: string): unknown { + drawTriangle(time: number, type: string): number { if (time !== null && typeof time !== undefined) { let i = this.flagList.findIndex((it) => it.time === time); if (type === 'triangle') { @@ -418,6 +418,7 @@ export class SportRuler extends Graph { this.flagList.find((it) => it.selected) || null ); } + return 0; } removeTriangle(type: string): void { diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCommon.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCommon.ts index c60ebc36..9c27f4bc 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCommon.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerCommon.ts @@ -129,7 +129,7 @@ class MerageBeanDataSplit { this.resetAllNode(data, currentTreeList, searchValue); } - splitPush(splitMapData: SplitMap, name: string, node: MerageBean) { + splitPush(splitMapData: SplitMap, name: string, node: MerageBean): void { if (!splitMapData.has(name)) { splitMapData.set(name, []); } diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts index bd0fff4c..25d5d140 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts @@ -806,7 +806,7 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { if (item.funcName && item.funcArgs) { //@ts-ignore let result = this.handleDataByFuncName(item.funcName, item.funcArgs); - if (result) { + if (result.length > 0) { //@ts-ignore return result; } @@ -838,7 +838,7 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { this.getCurrentDataFromDb(funcArgs[0]); } } - private handleDataByFuncName(funcName: string, funcArgs: unknown[]): unknown { + private handleDataByFuncName(funcName: string, funcArgs: unknown[]): unknown[] { switch (funcName) { case 'getCallChainsBySampleIds': this.freshPerfCallchains(this.samplesData, funcArgs[0] as boolean); @@ -887,10 +887,8 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { return this.combineCallChainForAnalysis(); case 'getBottomUp': return this.getBottomUp(); - default: - return; } - return; + return []; } combineCallChainForAnalysis(obj?: unknown): PerfAnalysisSample[] { diff --git a/trace_streamer/build/sync_base.sh b/trace_streamer/build/sync_base.sh index 371dcef8..05ef9861 100644 --- a/trace_streamer/build/sync_base.sh +++ b/trace_streamer/build/sync_base.sh @@ -12,16 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. set -e -TARGET_PATH="" -PROJ_PATH="" echo $SCRIPT_PATH -function help { +function help() { echo "Usage: $1 [-p ]" echo " -p , set the sync target path." echo " -h Show the help info." exit } -function parser_param { +function parser_param() { while [[ $# -gt 0 ]]; do case "$1" in -p) @@ -35,13 +33,13 @@ function parser_param { esac done } -function check_target_path { +function check_target_path() { if [ -z "$TARGET_PATH" ]; then echo "target path is empty!" help $0 exit fi } -function set_cur_proj_path { +function set_cur_proj_path() { PROJ_PATH=$(dirname "$(readlink -f "$0")") } \ No newline at end of file diff --git a/trace_streamer/src/base/filter_constraints.cpp b/trace_streamer/src/base/filter_constraints.cpp index 8d28174a..b6e0ad8d 100644 --- a/trace_streamer/src/base/filter_constraints.cpp +++ b/trace_streamer/src/base/filter_constraints.cpp @@ -68,8 +68,8 @@ void FilterConstraints::GetColAndOp(const char **p, char **pNext, int32_t &col, { *p = *pNext; errno = 0; - const uint32_t INTEGER_RADIX_TYPE_DEC = 10; - col = static_cast(strtol(*p, pNext, INTEGER_RADIX_TYPE_DEC)); + const uint32_t intergerRadixTypeDec = 10; + col = static_cast(strtol(*p, pNext, intergerRadixTypeDec)); if (errno != 0) { TS_LOGW("strtol failed!"); return; @@ -77,7 +77,7 @@ void FilterConstraints::GetColAndOp(const char **p, char **pNext, int32_t &col, TS_ASSERT(*p != *pNext); *p = *pNext; errno = 0; - op = static_cast(strtol(*p, pNext, INTEGER_RADIX_TYPE_DEC)); + op = static_cast(strtol(*p, pNext, intergerRadixTypeDec)); if (errno != 0) { TS_LOGW("strtol failed!"); return; diff --git a/trace_streamer/src/base/ts_common.h b/trace_streamer/src/base/ts_common.h index 502bfedf..2d13eec2 100644 --- a/trace_streamer/src/base/ts_common.h +++ b/trace_streamer/src/base/ts_common.h @@ -22,7 +22,7 @@ #include #include #include "log.h" -namespace { +namespace SysTuning { using ClockId = uint32_t; constexpr size_t G_CHUNK_SIZE = 1024 * 1024; constexpr size_t FLUSH_CHUNK_THRESHOLD = G_CHUNK_SIZE - 10000; @@ -102,7 +102,7 @@ const std::string TRACE_STATE_QUERY = "select event_name,stat_type,count,source, const std::string TRACE_TASK_NAME = "select P.id as id, P.pid as pid, P.name as process_name, group_concat(T.name,',') as thread_name from process as " "P left join thread as T where P.id = T.ipid group by pid;"; -} // namespace +} // namespace SysTuning enum BuiltinClocks { TS_CLOCK_UNKNOW = 0, TS_CLOCK_BOOTTIME = 1, @@ -210,7 +210,7 @@ enum DataSourceType { DATA_SOURCE_TYPE_MEM_CONFIG, DATA_SOURCE_TYPE_STREAM }; -enum class HookMemoryType { MALLOC = 0, MMAP = 1, FILE_PAGE_MSG = 2, MEMORY_USING_MSG = 3 }; +enum HookMemoryType { MALLOC = 0, MMAP = 1, FILE_PAGE_MSG = 2, MEMORY_USING_MSG = 3 }; using DataIndex = uint64_t; using TableRowId = int32_t; using InternalPid = uint32_t; diff --git a/trace_streamer/src/filter/app_start_filter.cpp b/trace_streamer/src/filter/app_start_filter.cpp index 01e3a670..505ac90b 100644 --- a/trace_streamer/src/filter/app_start_filter.cpp +++ b/trace_streamer/src/filter/app_start_filter.cpp @@ -114,9 +114,13 @@ void APPStartupFilter::AppendAssociatedData(DataIndex packedNameIndex, } else { endTime = itorSecond->second->endTime_; } - AppStartupRow appStartupRow = {itorSecond->second->ipid_, itorSecond->second->tid_, - itorSecond->second->callid_, itorSecond->second->startTime_, - endTime, itorSecond->first, packedNameIndex}; + AppStartupRow appStartupRow = {itorSecond->second->ipid_, + itorSecond->second->tid_, + itorSecond->second->callid_, + itorSecond->second->startTime_, + endTime, + itorSecond->first, + packedNameIndex}; traceDataCache_->GetAppStartupData()->AppendNewData(appStartupRow); } } diff --git a/trace_streamer/src/filter/cpu_filter.cpp b/trace_streamer/src/filter/cpu_filter.cpp index 8714824a..3a061190 100644 --- a/trace_streamer/src/filter/cpu_filter.cpp +++ b/trace_streamer/src/filter/cpu_filter.cpp @@ -108,7 +108,7 @@ void CpuFilter::InsertSwitchEvent(uint64_t ts, DataIndex nextInfo) { BinderTransactionInfo btInfo = {prevPid, nextPid, INVALID_UINT64, INVALID_UINT64}; - SchedSliceRow schedSliceRow = {ts,INVALID_UINT64,cpu,nextPid,0,nextPrio}; + SchedSliceRow schedSliceRow = {ts, INVALID_UINT64, cpu, nextPid, 0, nextPrio}; auto index = traceDataCache_->GetSchedSliceData()->AppendSchedSlice(schedSliceRow); auto prevTidOnCpu = cpuToRowSched_.find(cpu); if (prevTidOnCpu != cpuToRowSched_.end()) { diff --git a/trace_streamer/src/filter/frame_filter.cpp b/trace_streamer/src/filter/frame_filter.cpp index adef0c61..098c439b 100644 --- a/trace_streamer/src/filter/frame_filter.cpp +++ b/trace_streamer/src/filter/frame_filter.cpp @@ -15,6 +15,7 @@ #include "frame_filter.h" #include #include +#include "process_filter.h" namespace SysTuning { namespace TraceStreamer { @@ -23,24 +24,25 @@ FrameFilter::FrameFilter(TraceDataCache *dataCache, const TraceStreamerFilters * } FrameFilter::~FrameFilter() = default; -void FrameFilter::BeginVsyncEvent(uint64_t ts, - uint32_t ipid, - uint32_t itid, +void FrameFilter::BeginVsyncEvent(const BytraceLine &line, uint64_t expectStart, uint64_t expectEnd, uint32_t vsyncId, uint32_t callStackSliceId) { auto frame = std::make_shared(); - frame->startTs_ = ts; + frame->startTs_ = line.ts; frame->callStackSliceId_ = callStackSliceId; frame->expectedStartTs_ = expectStart; frame->expectedEndTs_ = expectEnd; frame->expectedDur_ = expectEnd - expectStart; frame->vsyncId_ = vsyncId; + auto itid = streamFilters_->processFilter_->GetInternalTid(line.pid); + auto ipid = streamFilters_->processFilter_->GetInternalPid(line.tgid); frame->frameSliceRow_ = - traceDataCache_->GetFrameSliceData()->AppendFrame(ts, ipid, itid, vsyncId, callStackSliceId); - FrameSliceRow frameSliceRow = {expectStart, ipid, itid, vsyncId, callStackSliceId, expectEnd, (uint8_t)TraceStdtype::FrameSlice::EXPECT_SLICE}; + traceDataCache_->GetFrameSliceData()->AppendFrame(line.ts, ipid, itid, vsyncId, callStackSliceId); + FrameSliceRow frameSliceRow = { + expectStart, ipid, itid, vsyncId, callStackSliceId, expectEnd, (uint8_t)TraceStdtype::FrameSlice::EXPECT_SLICE}; frame->frameExpectedSliceRow_ = traceDataCache_->GetFrameSliceData()->AppendFrame(frameSliceRow); if (vsyncRenderSlice_.count(itid)) { vsyncRenderSlice_[itid].push_back(frame); diff --git a/trace_streamer/src/filter/frame_filter.h b/trace_streamer/src/filter/frame_filter.h index a4a2cbc5..391d341c 100644 --- a/trace_streamer/src/filter/frame_filter.h +++ b/trace_streamer/src/filter/frame_filter.h @@ -16,6 +16,7 @@ #ifndef FRAME_FILTER_H #define FRAME_FILTER_H #include +#include "common_types.h" #include "double_map.h" #include "filter_base.h" #include "trace_data_cache.h" @@ -26,9 +27,7 @@ class FrameFilter : private FilterBase { public: FrameFilter(TraceDataCache *dataCache, const TraceStreamerFilters *filter); ~FrameFilter() override; - void BeginVsyncEvent(uint64_t ts, - uint32_t ipid, - uint32_t itid, + void BeginVsyncEvent(const BytraceLine &line, uint64_t expectStart, uint64_t expectEnd, uint32_t vsyncId, diff --git a/trace_streamer/src/filter/hi_sysevent_filter/hi_sysevent_measure_filter.cpp b/trace_streamer/src/filter/hi_sysevent_filter/hi_sysevent_measure_filter.cpp index 06ddb26d..7f256f00 100644 --- a/trace_streamer/src/filter/hi_sysevent_filter/hi_sysevent_measure_filter.cpp +++ b/trace_streamer/src/filter/hi_sysevent_filter/hi_sysevent_measure_filter.cpp @@ -38,8 +38,9 @@ DataIndex HiSysEventMeasureFilter::AppendNewValue(uint64_t serial, DataIndex strValue) { uint64_t appKeyId = GetOrCreateFilterIdInternal(appNameId, key); - HiSysEventMeasureDataRow hiSysEventMeasureDataRow = {serial, timeStamp, appNameId, appKeyId, type, numericValue, - strValue}; + HiSysEventMeasureDataRow hiSysEventMeasureDataRow = { + serial, timeStamp, static_cast(appNameId), static_cast(appKeyId), type, + numericValue, strValue}; traceDataCache_->GetHiSysEventMeasureData()->AppendData(hiSysEventMeasureDataRow); return appNameId; } @@ -70,9 +71,9 @@ void HiSysEventMeasureFilter::AppendNewValue(int32_t brightnessState, int32_t streamAll) { HiSysEventDeviceStateDataRow hiSysEventDeviceStateDataRow = { - brightnessState, btState, locationState, wifiState, streamDefault, voiceCall, music, streamRing, media, - voiceAssistant, system, alarm, notification, bluetoolthSco, enforcedAudible, streamDtmf, streamTts, - accessibility, recording, streamAll}; + brightnessState, btState, locationState, wifiState, streamDefault, voiceCall, music, + streamRing, media, voiceAssistant, system, alarm, notification, bluetoolthSco, + enforcedAudible, streamDtmf, streamTts, accessibility, recording, streamAll}; traceDataCache_->GetHiSysEventDeviceStateData()->AppendNewData(hiSysEventDeviceStateDataRow); return; } @@ -150,10 +151,10 @@ bool HiSysEventMeasureFilter::SaveAllHiSysEvent(json jMessage, bool &haveSplitSe } void HiSysEventMeasureFilter::UpdataAllHiSysEvent(const JsonMessage &jsMessage, uint64_t newTimeStamp) { - HiSysEventAllEventDataRow hiSysEventAllEventDataRow = {jsMessage.domainId, jsMessage.eventNameId, newTimeStamp, - jsMessage.type, jsMessage.timeZone, jsMessage.pid, - jsMessage.tid, jsMessage.uid, jsMessage.level, jsMessage.tag, - jsMessage.eventId, jsMessage.seq, jsMessage.info,jsMessage.content.dump()}; + HiSysEventAllEventDataRow hiSysEventAllEventDataRow = { + jsMessage.domainId, jsMessage.eventNameId, newTimeStamp, jsMessage.type, jsMessage.timeZone, + jsMessage.pid, jsMessage.tid, jsMessage.uid, jsMessage.level, jsMessage.tag, + jsMessage.eventId, jsMessage.seq, jsMessage.info, jsMessage.content.dump()}; traceDataCache_->GetHiSysEventAllEventData()->AppendHiSysEventData(hiSysEventAllEventDataRow); } bool HiSysEventMeasureFilter::JGetData(const json &jMessage, diff --git a/trace_streamer/src/filter/hook_filter/native_hook_filter.cpp b/trace_streamer/src/filter/hook_filter/native_hook_filter.cpp index 7db93bdb..237a95a2 100644 --- a/trace_streamer/src/filter/hook_filter/native_hook_filter.cpp +++ b/trace_streamer/src/filter/hook_filter/native_hook_filter.cpp @@ -225,8 +225,15 @@ void NativeHookFilter::ParseStatisticEvent(uint64_t timeStamp, const ProtoReader if (reader.has_tag_name()) { memSubType = traceDataCache_->GetDataIndex(reader.tag_name().ToStdString()); } - NativeHookStatisticRow nativeHookStatisticRow = {ipid, timeStamp, callChainId, static_cast(reader.type()), memSubType, reader.apply_count(), - reader.release_count(),reader.apply_size(), reader.release_size()}; + NativeHookStatisticRow nativeHookStatisticRow = {ipid, + timeStamp, + callChainId, + static_cast(reader.type()), + memSubType, + reader.apply_count(), + reader.release_count(), + reader.apply_size(), + reader.release_size()}; traceDataCache_->GetNativeHookStatisticsData()->AppendNewNativeHookStatistic(nativeHookStatisticRow); } void NativeHookFilter::ParseAllocEvent(uint64_t timeStamp, const ProtoReader::BytesView &bytesView) @@ -264,8 +271,16 @@ void NativeHookFilter::ParseAllocEvent(uint64_t timeStamp, const ProtoReader::By if (allocEventReader.has_thread_name_id()) { UpdateMap(itidToThreadNameId_, itid, ipidWithThreadNameIdIndex); } - NativeHookRow nativeHookRow = {callChainId, ipid, itid, "AllocEvent", INVALID_UINT64, timeStamp, 0, 0, allocEventReader.addr(), - allocEventReader.size()}; + NativeHookRow nativeHookRow = {callChainId, + ipid, + itid, + "AllocEvent", + INVALID_UINT64, + timeStamp, + 0, + 0, + allocEventReader.addr(), + allocEventReader.size()}; auto row = traceDataCache_->GetNativeHookData()->AppendNewNativeHookData(nativeHookRow); addrToAllocEventRow_->insert(std::make_pair(allocEventReader.addr(), static_cast(row))); if (allocEventReader.size() != 0) { @@ -332,7 +347,8 @@ void NativeHookFilter::ParseFreeEvent(uint64_t timeStamp, const ProtoReader::Byt streamFilters_->statFilter_->IncreaseStat(TRACE_NATIVE_HOOK_FREE, STAT_EVENT_DATA_INVALID); return; } - NativeHookRow nativeHookRow = {callChainId, ipid, itid, "FreeEvent", INVALID_UINT64, timeStamp, 0, 0, freeEventReader.addr(), freeHeapSize}; + NativeHookRow nativeHookRow = { + callChainId, ipid, itid, "FreeEvent", INVALID_UINT64, timeStamp, 0, 0, freeEventReader.addr(), freeHeapSize}; row = traceDataCache_->GetNativeHookData()->AppendNewNativeHookData(nativeHookRow); if (freeHeapSize != 0) { MaybeUpdateCurrentSizeDur(row, timeStamp, true); @@ -462,8 +478,16 @@ void NativeHookFilter::ParseMunmapEvent(uint64_t timeStamp, const ProtoReader::B streamFilters_->statFilter_->IncreaseStat(TRACE_NATIVE_HOOK_MUNMAP, STAT_EVENT_DATA_INVALID); return; } - NativeHookRow nativeHookRow = {callChainId, ipid, itid, "MunmapEvent", GetMemMapSubTypeWithAddr(mUnmapEventReader.addr()), timeStamp, 0, 0, - mUnmapEventReader.addr(), mUnmapEventReader.size()}; + NativeHookRow nativeHookRow = {callChainId, + ipid, + itid, + "MunmapEvent", + GetMemMapSubTypeWithAddr(mUnmapEventReader.addr()), + timeStamp, + 0, + 0, + mUnmapEventReader.addr(), + mUnmapEventReader.size()}; row = traceDataCache_->GetNativeHookData()->AppendNewNativeHookData(nativeHookRow); addrToMmapTag_.erase(mUnmapEventReader.addr()); // earse MemMapSubType with addr if (mUnmapEventReader.size() != 0) { @@ -684,9 +708,14 @@ void NativeHookFilter::FillOfflineSymbolizationFrames( auto frameInfo = itor->get(); filePathIndex = ipidToFilePathIdToFileIndex_.Find(curCacheIpid, frameInfo->filePathId_); std::string vaddr = base::Uint64ToHexText(frameInfo->symVaddr_); - NativeHookFrameVaddrRow nativeHookFrameVaddrRow = { - callChainId_, depth++, frameInfo->ip_, frameInfo->symbolIndex_, filePathIndex, frameInfo->offset_, - frameInfo->symbolOffset_, vaddr}; + NativeHookFrameVaddrRow nativeHookFrameVaddrRow = {callChainId_, + depth++, + frameInfo->ip_, + frameInfo->symbolIndex_, + filePathIndex, + frameInfo->offset_, + frameInfo->symbolOffset_, + vaddr}; auto row = traceDataCache_->GetNativeHookFrameData()->AppendNewNativeHookFrame(nativeHookFrameVaddrRow); UpdateFilePathIndexToCallStackRowMap(row, filePathIndex); } @@ -1016,8 +1045,13 @@ void NativeHookFilter::ParseFramesInCallStackCompressedMode() auto frameIp = reader.has_ip() ? reader.ip() : INVALID_UINT64; auto frameOffset = reader.has_offset() ? reader.offset() : INVALID_UINT64; auto frameSymbolOffset = reader.has_symbol_offset() ? reader.symbol_offset() : INVALID_UINT64; - NativeHookFrameRow nativeHookFrameRow = {stackIdToFramesItor->first, depth++, frameIp, symbolIndex, filePathIndex, frameOffset, - frameSymbolOffset}; + NativeHookFrameRow nativeHookFrameRow = {static_cast(stackIdToFramesItor->first), + depth++, + frameIp, + symbolIndex, + filePathIndex, + frameOffset, + frameSymbolOffset}; auto row = traceDataCache_->GetNativeHookFrameData()->AppendNewNativeHookFrame(nativeHookFrameRow); UpdateFilePathIndexToCallStackRowMap(row, filePathIndex); } @@ -1040,8 +1074,13 @@ void NativeHookFilter::ParseFramesWithOutCallStackCompressedMode() return; } auto &frameInfo = frameHashToFrameInfoMap_.at(*frameHashValueVectorItor); - NativeHookFrameRow nativeHookFrameRow = {callChainId, depth++, frameInfo->ip_, frameInfo->symbolIndex_, frameInfo->filePathIndex_, - frameInfo->offset_, frameInfo->symbolOffset_}; + NativeHookFrameRow nativeHookFrameRow = {callChainId, + depth++, + frameInfo->ip_, + frameInfo->symbolIndex_, + frameInfo->filePathIndex_, + frameInfo->offset_, + frameInfo->symbolOffset_}; auto row = traceDataCache_->GetNativeHookFrameData()->AppendNewNativeHookFrame(nativeHookFrameRow); UpdateFilePathIndexToCallStackRowMap(row, frameInfo->filePathIndex_); } diff --git a/trace_streamer/src/filter/slice_filter.cpp b/trace_streamer/src/filter/slice_filter.cpp index 11191541..f2dc1d38 100644 --- a/trace_streamer/src/filter/slice_filter.cpp +++ b/trace_streamer/src/filter/slice_filter.cpp @@ -61,9 +61,10 @@ void SliceFilter::IrqHandlerEntry(uint64_t timeStamp, uint32_t cpu, DataIndex ca irqDataLinker_.erase(cpu); SliceData sliceData = {timeStamp, 0, cpu, catalog, nameIndex}; auto slices = traceDataCache_->GetIrqData(); - CallStackInternalRow callStackInternalRow = {sliceData.timeStamp,static_cast(sliceData.duration), sliceData.internalTid, - sliceData.cat, sliceData.name, 0}; - size_t index = slices->AppendInternalSlice(callStackInternalRow,std::nullopt); + CallStackInternalRow callStackInternalRow = {sliceData.timeStamp, static_cast(sliceData.duration), + sliceData.internalTid, sliceData.cat, + sliceData.name, 0}; + size_t index = slices->AppendInternalSlice(callStackInternalRow, std::nullopt); if (irqEventMap_.count(cpu)) { // not match streamFilters_->statFilter_->IncreaseStat(TRACE_EVENT_IRQ_HANDLER_ENTRY, STAT_EVENT_DATA_LOST); @@ -102,8 +103,9 @@ void SliceFilter::IpiHandlerEntry(uint64_t timeStamp, uint32_t cpu, DataIndex ca irqDataLinker_.erase(cpu); SliceData sliceData = {timeStamp, 0, cpu, catalog, nameIndex}; auto slices = traceDataCache_->GetIrqData(); - CallStackInternalRow callStackInternalRow = {sliceData.timeStamp, static_cast(sliceData.duration), sliceData.internalTid, - sliceData.cat, sliceData.name, 0}; + CallStackInternalRow callStackInternalRow = {sliceData.timeStamp, static_cast(sliceData.duration), + sliceData.internalTid, sliceData.cat, + sliceData.name, 0}; size_t index = slices->AppendInternalSlice(callStackInternalRow, std::nullopt); if (ipiEventMap_.count(cpu)) { // not match @@ -130,8 +132,9 @@ void SliceFilter::SoftIrqEntry(uint64_t timeStamp, uint32_t cpu, DataIndex catal { SliceData sliceData = {timeStamp, 0, cpu, catalog, nameIndex}; auto slices = traceDataCache_->GetIrqData(); - CallStackInternalRow callStackInternalRow = {sliceData.timeStamp, static_cast(sliceData.duration), sliceData.internalTid, - sliceData.cat, sliceData.name, 0}; + CallStackInternalRow callStackInternalRow = {sliceData.timeStamp, static_cast(sliceData.duration), + sliceData.internalTid, sliceData.cat, + sliceData.name, 0}; size_t index = slices->AppendInternalSlice(callStackInternalRow, std::nullopt); if (softIrqEventMap_.count(cpu)) { // not match @@ -310,8 +313,9 @@ size_t SliceFilter::StartSlice(uint64_t timeStamp, uint32_t depth = stack.size(); auto slices = traceDataCache_->GetInternalSlicesData(); uint32_t parentId = depth == 0 ? INVALID_UINT32 : slices->IdsData()[stack.back().index]; - CallStackInternalRow callStackInternalRow = {sliceData.timeStamp, static_cast(sliceData.duration), sliceData.internalTid, - sliceData.cat, sliceData.name, 0}; + CallStackInternalRow callStackInternalRow = {sliceData.timeStamp, static_cast(sliceData.duration), + sliceData.internalTid, sliceData.cat, + sliceData.name, 0}; size_t index = slices->AppendInternalSlice(callStackInternalRow, std::nullopt); if (depth >= std::numeric_limits::max()) { return SIZE_MAX; @@ -443,8 +447,9 @@ uint64_t SliceFilter::StartAsyncSlice(uint64_t timeStamp, // the IDE need a depth to paint call slice in different position of the canvas, the depth of async call // do not mean the parent-to-child relationship, it is different from no-async call uint8_t depth = 0; - CallStackInternalRow callStackInternalRow = {timeStamp, static_cast(-1), internalTid, INVALID_UINT64, nameIndex, depth}; - size_t index = slices->AppendInternalAsyncSlice(callStackInternalRow,cookie, std::nullopt); + CallStackInternalRow callStackInternalRow = { + timeStamp, static_cast(-1), internalTid, INVALID_UINT64, nameIndex, depth}; + size_t index = slices->AppendInternalAsyncSlice(callStackInternalRow, cookie, std::nullopt); asyncEventFilterMap_.insert(std::make_pair(asyncEventSize_, AsyncEvent{timeStamp, index})); return index; } diff --git a/trace_streamer/src/main.cpp b/trace_streamer/src/main.cpp index ed04c2cf..21535637 100644 --- a/trace_streamer/src/main.cpp +++ b/trace_streamer/src/main.cpp @@ -461,57 +461,74 @@ bool ParseOtherArgs(int argc, char **argv, TraceExportOption &traceExportOption, { if (!strcmp(argv[i], "-i") || !strcmp(argv[i], "--info")) { PrintInformation(); + i++; } else if (!strcmp(argv[i], "-lnc")) { traceExportOption.needClearLongTraceCache = false; + i++; return true; } else if (!strcmp(argv[i], "-l") || !strcmp(argv[i], "--level")) { TS_CHECK_TRUE_RET(CheckAndSetLogLevel(argc, argv, i), false); + i++; return true; } else if (!strcmp(argv[i], "--list")) { PrintAbilityInfo(); + i++; return false; } else if (!strcmp(argv[i], "-s") || !strcmp(argv[i], "--s")) { traceExportOption.separateFile = true; return true; } else if (!strcmp(argv[i], "-tn") || !strcmp(argv[i], "--threadnum")) { TS_CHECK_TRUE_RET(CheckAndSetThreadNum(traceExportOption, argc, argv, i), false); + i++; return true; } else if (!strcmp(argv[i], "-nt") || !strcmp(argv[i], "--nothreads")) { traceExportOption.closeMutiThread = true; + i++; return true; } else if (!strcmp(argv[i], "-nm") || !strcmp(argv[i], "--nometa")) { traceExportOption.exportMetaTable = false; + i++; return true; } else if (!strcmp(argv[i], "-m") || !strcmp(argv[i], "--run-metrics")) { TS_CHECK_TRUE_RET(CheckAndSetMetrics(traceExportOption, argc, argv, i), false); + i++; return true; } else if (!strcmp(argv[i], "-v") || !strcmp(argv[i], "--version")) { PrintVersion(); + i++; return false; } traceExportOption.traceFilePath = std::string(argv[i]); + i++; return true; } bool ParseArgs(int argc, char **argv, TraceExportOption &traceExportOption) { - for (int i = 1; i < argc; i++) { + int i = 1; + while (i < argc) { if (!strcmp(argv[i], "-e")) { TS_CHECK_TRUE_RET(CheckAndSetSqlitePath(traceExportOption, argc, argv, i), false); + i++; continue; } else if (!strcmp(argv[i], "-c") || !strcmp(argv[i], "--command")) { traceExportOption.interactiveState = true; + i++; continue; } else if (!strcmp(argv[i], "-D") || !strcmp(argv[i], "--directory")) { TS_CHECK_TRUE_RET(CheckAndSetLongTraceDir(traceExportOption, argc, argv, i), false); + i++; continue; } else if (!strcmp(argv[i], "-d") || !strcmp(argv[i], "--dump")) { TS_CHECK_TRUE_RET(CheckAndSetDumpFileType(traceExportOption, argc, argv, i), false); + i++; continue; } else if (!strcmp(argv[i], "-q") || !strcmp(argv[i], "--query-file")) { TS_CHECK_TRUE_RET(CheckAndSetSqlQueryFilePath(traceExportOption, argc, argv, i), false); + i++; continue; } else if (!strcmp(argv[i], "-o") || !strcmp(argv[i], "--out")) { TS_CHECK_TRUE_RET(CheckAndSetOutputFilePath(traceExportOption, argc, argv, i), false); + i++; continue; } else if (!ParseOtherArgs(argc, argv, traceExportOption, i)) { return false; diff --git a/trace_streamer/src/parser/ebpf_parser/bio_latency_data_parser.cpp b/trace_streamer/src/parser/ebpf_parser/bio_latency_data_parser.cpp index ccbdd9a8..c5d1dcac 100644 --- a/trace_streamer/src/parser/ebpf_parser/bio_latency_data_parser.cpp +++ b/trace_streamer/src/parser/ebpf_parser/bio_latency_data_parser.cpp @@ -39,7 +39,7 @@ const uint64_t *BioLatencyDataParser::IPAndCallIdProcessing(const BIOFixedHeader std::string ipsToStr(reinterpret_cast(userIpsAddr), bioFixedHeadrAddr->nips * SINGLE_IP_SIZE); auto ipsHashValue = hashFun_(ipsToStr); auto value = pidAndipsToCallId_.Find(bioFixedHeadrAddr->pid, ipsHashValue); - if (value != INVALID_UINT64) { + if (value != INVALID_UINT32) { callIdExistFlag = true; currentCallId_ = value; } else { @@ -99,7 +99,8 @@ void BioLatencyDataParser::ParseBioLatencyEvent() if (pathId != INVALID_UINT64) { tracerEventToStrIndexMap.Erase(ITEM_EVENT_FS, type, itid, startTs); } - GetBioLatencySampleDataRow bioLatencySampleDataRow = {currentCallId_, type, ipid, itid, newStartTs, newEndTs, duration, prio, size, blkCount, pathId, durPer4K}; + BioLatencySampleDataRow bioLatencySampleDataRow = {currentCallId_, type, ipid, itid, newStartTs, newEndTs, + duration, prio, size, blkCount, pathId, durPer4K}; traceDataCache_->GetBioLatencySampleData()->AppendNewData(bioLatencySampleDataRow); if (!callIdExistFlag) { ParseCallStackData(userIpsAddr, bioFixedHeadrAddr->nips, bioFixedHeadrAddr->pid, currentCallId_); diff --git a/trace_streamer/src/parser/ebpf_parser/bio_latency_data_parser.h b/trace_streamer/src/parser/ebpf_parser/bio_latency_data_parser.h index 71afa0cf..2c8367ee 100644 --- a/trace_streamer/src/parser/ebpf_parser/bio_latency_data_parser.h +++ b/trace_streamer/src/parser/ebpf_parser/bio_latency_data_parser.h @@ -32,7 +32,7 @@ protected: std::unique_ptr timeParser_; private: - uint64_t currentCallId_ = 0; + uint32_t currentCallId_ = 0; }; } // namespace TraceStreamer } // namespace SysTuning diff --git a/trace_streamer/src/parser/ebpf_parser/ebpf_base.cpp b/trace_streamer/src/parser/ebpf_parser/ebpf_base.cpp index 7ab0ecdc..9483f83b 100644 --- a/trace_streamer/src/parser/ebpf_parser/ebpf_base.cpp +++ b/trace_streamer/src/parser/ebpf_parser/ebpf_base.cpp @@ -20,7 +20,7 @@ EbpfBase::EbpfBase(TraceDataCache *dataCache, const TraceStreamerFilters *ctx) : EventParserBase(dataCache, ctx), pidAndIpToEbpfSymbolInfo_(EbpfSymbolInfo(false)), filePathIndexAndStValueToSymAddr_(nullptr), - pidAndipsToCallId_(INVALID_UINT64) + pidAndipsToCallId_(INVALID_UINT32) { } EbpfBase::~EbpfBase() @@ -44,7 +44,7 @@ bool EbpfBase::InitEbpfDataParser(EbpfDataReader *reader) void EbpfBase::ParseCallStackData(const uint64_t *userIpsAddr, uint16_t count, uint32_t pid, uint32_t callId) { - uint64_t depth = 0; + uint32_t depth = 0; for (auto i = count - 1; i >= 0; i--) { if (userIpsAddr[i] <= MIN_USER_IP) { continue; @@ -52,9 +52,9 @@ void EbpfBase::ParseCallStackData(const uint64_t *userIpsAddr, uint16_t count, u auto ebpfSymbolInfo = GetEbpfSymbolInfo(pid, userIpsAddr[i]); auto ipIndex = ConvertToHexTextIndex(userIpsAddr[i]); ipStrIndexToIpMap_.insert(std::make_pair(ipIndex, userIpsAddr[i])); - EbpfCallStackDataRow ebpfCallStackDataRow = {callId, depth++, ipIndex, ebpfSymbolInfo.symbolIndex, - ebpfSymbolInfo.filePathIndex, ebpfSymbolInfo.vaddr}; - auto row = traceDataCache_->GetEbpfCallStack()->AppendNewData(ebpfCallStackDataRow); + EbpfCallStackDataRow ebpfCallStackDataRow = { + callId, depth++, ipIndex, ebpfSymbolInfo.symbolIndex, ebpfSymbolInfo.filePathIndex, ebpfSymbolInfo.vaddr}; + auto row = traceDataCache_->GetEbpfCallStack()->AppendNewData(ebpfCallStackDataRow); if (ebpfSymbolInfo.filePathIndex == INVALID_UINT64) { continue; } diff --git a/trace_streamer/src/parser/ebpf_parser/ebpf_base.h b/trace_streamer/src/parser/ebpf_parser/ebpf_base.h index a35631aa..7625cebc 100644 --- a/trace_streamer/src/parser/ebpf_parser/ebpf_base.h +++ b/trace_streamer/src/parser/ebpf_parser/ebpf_base.h @@ -60,8 +60,8 @@ protected: std::map callIdToPid_ = {}; DoubleMap filePathIndexAndStValueToSymAddr_; std::map> filePathIndexToImportSymbolTableMap_ = {}; - DoubleMap pidAndipsToCallId_; - uint64_t callChainId_ = 0; + DoubleMap pidAndipsToCallId_; + uint32_t callChainId_ = 0; private: std::unordered_map>> filePathIndexToCallStackRowMap_ = {}; diff --git a/trace_streamer/src/parser/ebpf_parser/file_system_data_parser.cpp b/trace_streamer/src/parser/ebpf_parser/file_system_data_parser.cpp index 2dd16d88..cd23c338 100644 --- a/trace_streamer/src/parser/ebpf_parser/file_system_data_parser.cpp +++ b/trace_streamer/src/parser/ebpf_parser/file_system_data_parser.cpp @@ -39,7 +39,7 @@ void FileSystemDataParser::IpAndCallidFind(const FsFixedHeader *fsFixedHeadrAddr std::string ipsToStr(reinterpret_cast(userIpsAddr), fsFixedHeadrAddr->nrUserIPs * SINGLE_IP_SIZE); auto ipsHashValue = hashFun_(ipsToStr); auto value = pidAndipsToCallId_.Find(fsFixedHeadrAddr->pid, ipsHashValue); - if (value != INVALID_UINT64) { + if (value != INVALID_UINT32) { callIdExistFlag = true; currentCallId_ = value; } else { @@ -144,8 +144,9 @@ void FileSystemDataParser::ParseFileSystemEvent() uint64_t filePathId = INVALID_UINT64; auto fd = GetFileDescriptor(fsFixedHeadrAddr, type); size_t size = FileWriteOperation(tracerEventToStrIndexMap, fsFixedHeadrAddr, itid, filePathId, type); - FileSystemSampleRow fileSystemSampleRow = {currentCallId_, type, ipid, itid, newStartTs, newEndTs, duration, returnValue, errorCode, size, fd, - filePathId, firstArgument, secondArgument, thirdArgument, fourthArgument}; + FileSystemSampleRow fileSystemSampleRow = { + currentCallId_, type, ipid, itid, newStartTs, newEndTs, duration, returnValue, + errorCode, size, fd, filePathId, firstArgument, secondArgument, thirdArgument, fourthArgument}; traceDataCache_->GetFileSystemSample()->AppendNewData(fileSystemSampleRow); if (!callIdExistFlag) { ParseCallStackData(userIpsAddr, fsFixedHeadrAddr->nrUserIPs, fsFixedHeadrAddr->pid, currentCallId_); diff --git a/trace_streamer/src/parser/ebpf_parser/file_system_data_parser.h b/trace_streamer/src/parser/ebpf_parser/file_system_data_parser.h index 5543b57c..eaa5fbd2 100644 --- a/trace_streamer/src/parser/ebpf_parser/file_system_data_parser.h +++ b/trace_streamer/src/parser/ebpf_parser/file_system_data_parser.h @@ -47,7 +47,7 @@ private: uint64_t newEndTs, DataIndex &returnValue, DataIndex &errorCode); - uint64_t currentCallId_ = 0; + uint32_t currentCallId_ = 0; }; } // namespace TraceStreamer } // namespace SysTuning diff --git a/trace_streamer/src/parser/ebpf_parser/paged_memory_data_parser.cpp b/trace_streamer/src/parser/ebpf_parser/paged_memory_data_parser.cpp index 88d407ee..9298676f 100644 --- a/trace_streamer/src/parser/ebpf_parser/paged_memory_data_parser.cpp +++ b/trace_streamer/src/parser/ebpf_parser/paged_memory_data_parser.cpp @@ -58,7 +58,7 @@ int32_t PagedMemoryDataParser::PagingData(const PagedMemoryFixedHeader *pagedMem auto addr = ConvertToHexTextIndex(pagedMemoryFixedHeadrAddr->addr); auto size = pagedMemoryFixedHeadrAddr->size; PagedMemorySampleDataRow pagedMemorySampleDataRow = {currentCallId_, type, ipid, newStartTs, newEndTs, - duration, size, addr, itid}; + duration, size, addr, itid}; traceDataCache_->GetPagedMemorySampleData()->AppendNewData(pagedMemorySampleDataRow); return 1; } diff --git a/trace_streamer/src/parser/hiperf_parser/perf_data_parser.cpp b/trace_streamer/src/parser/hiperf_parser/perf_data_parser.cpp index b52527f6..2489c601 100644 --- a/trace_streamer/src/parser/hiperf_parser/perf_data_parser.cpp +++ b/trace_streamer/src/parser/hiperf_parser/perf_data_parser.cpp @@ -622,15 +622,15 @@ uint32_t PerfDataParser::UpdateCallChainUnCompressed(const std::unique_ptrcallFrames_.rbegin(); frame != sample->callFrames_.rend(); ++frame) { uint64_t fileId = INVALID_UINT64; auto fileDataIndex = traceDataCache_->dataDict_.GetStringIndex(frame->mapName); if (fileDataDictIdToFileId_.count(fileDataIndex) != 0) { fileId = fileDataDictIdToFileId_.at(fileDataIndex); } - traceDataCache_->GetPerfCallChainData()->AppendNewPerfCallChain(callChainId, depth++, frame->pc, - frame->funcOffset, fileId, frame->index); + PerfCallChainRow perfCallChainRow = {callChainId, depth++, frame->pc, frame->funcOffset, fileId, frame->index}; + traceDataCache_->GetPerfCallChainData()->AppendNewPerfCallChain(perfCallChainRow); } return callChainId; } @@ -656,7 +656,7 @@ void PerfDataParser::UpdatePerfSampleData(uint32_t callChainId, std::unique_ptr< } auto configIndex = report_->GetConfigIndex(sample->data_.id); PerfSampleRow perfSampleRow = {callChainId, sample->data_.time, sample->data_.tid, sample->data_.period, - configIndex, newTimeStamp, sample->data_.cpu, threadStatIndex}; + configIndex, newTimeStamp, sample->data_.cpu, threadStatIndex}; perfSampleData->AppendNewPerfSample(perfSampleRow); } diff --git a/trace_streamer/src/parser/pbreader_parser/hilog_parser/pbreader_hilog_parser.cpp b/trace_streamer/src/parser/pbreader_parser/hilog_parser/pbreader_hilog_parser.cpp index 4d5e9a58..2ad88beb 100644 --- a/trace_streamer/src/parser/pbreader_parser/hilog_parser/pbreader_hilog_parser.cpp +++ b/trace_streamer/src/parser/pbreader_parser/hilog_parser/pbreader_hilog_parser.cpp @@ -69,7 +69,7 @@ void PbreaderHiLogParser::Parse(ProtoReader::BytesView tracePacket, bool &haveSp DataIndex levelData = traceDataCache_->dataDict_.GetStringIndex(iter->second.c_str()); DataIndex logTag = traceDataCache_->dataDict_.GetStringIndex(logDetails.tag().ToStdString()); LogInfoRow logInfoRow = {curLineSeq, newTimeStamp, logDetails.pid(), logDetails.tid(), - levelData, logTag, logData, timeStamp}; + levelData, logTag, logData, timeStamp}; traceDataCache_->GetHilogData()->AppendNewLogInfo(logInfoRow); } } diff --git a/trace_streamer/src/parser/pbreader_parser/pbreader_clock_detail_parser.cpp b/trace_streamer/src/parser/pbreader_parser/pbreader_clock_detail_parser.cpp index 08cfabae..76674e93 100644 --- a/trace_streamer/src/parser/pbreader_parser/pbreader_clock_detail_parser.cpp +++ b/trace_streamer/src/parser/pbreader_parser/pbreader_clock_detail_parser.cpp @@ -76,15 +76,15 @@ void PbreaderClockDetailParser::Parse(const ProfilerTraceFileHeader *profilerTra TS_LOGW("Profiler header has no clock snapshot!!!"); return; } - std::vector snapShot; TS_LOGI("got clock snapshot"); - TS_LOGI("clockid: TS_CLOCK_BOOTTIME, ts:%" PRIu64 "", profilerTraceFileHeader->data.boottime); if (profilerTraceFileHeader->data.boottime) { snapShot.push_back(SnapShot{TS_CLOCK_BOOTTIME, profilerTraceFileHeader->data.boottime}); } - + if (traceDataCache_->traceStartTime_ == std::numeric_limits::max()) { + traceDataCache_->traceStartTime_ = profilerTraceFileHeader->data.boottime; + } TS_LOGI("clockid: TS_CLOCK_REALTIME, ts:%" PRIu64 "", profilerTraceFileHeader->data.realtime); if (profilerTraceFileHeader->data.realtime) { snapShot.push_back(SnapShot{TS_CLOCK_REALTIME, profilerTraceFileHeader->data.realtime}); diff --git a/trace_streamer/src/parser/print_event_parser.cpp b/trace_streamer/src/parser/print_event_parser.cpp index 3b38dad4..0b31d123 100644 --- a/trace_streamer/src/parser/print_event_parser.cpp +++ b/trace_streamer/src/parser/print_event_parser.cpp @@ -92,9 +92,8 @@ void PrintEventParser::ParseBeginEvent(const std::string &comm, traceDataCache_->GetDataIndex(point.name_)); if (index != INVALID_UINT32) { // add distributed data - CallStackDistributeInfoRow callStackDistributeInfoRow = {point.chainId_, point.spanId_, - point.parentSpanId_, point.flag_, point.args_}; - traceDataCache_->GetInternalSlicesData()->SetDistributeInfo(index,callStackDistributeInfoRow); + traceDataCache_->GetInternalSlicesData()->SetDistributeInfo(index, point.chainId_, point.spanId_, + point.parentSpanId_, point.flag_); if (pid == point.tgid_) { if (HandleFrameSliceBeginEvent(point.funcPrefixId_, index, point.funcArgs_, line)) { return; @@ -308,9 +307,7 @@ bool PrintEventParser::ReciveVsync(size_t callStackRow, std::string &args, const expectEnd = streamFilters_->clockFilter_->ToPrimaryTraceTime(TS_MONOTONIC, expectEnd); } } - auto iTid = streamFilters_->processFilter_->GetInternalTid(line.pid); - auto iPid = streamFilters_->processFilter_->GetInternalPid(line.tgid); - streamFilters_->frameFilter_->BeginVsyncEvent(line.ts, iPid, iTid, now, expectEnd, vsyncId, callStackRow); + streamFilters_->frameFilter_->BeginVsyncEvent(line, now, expectEnd, vsyncId, callStackRow); vsyncSliceIds_.push_back(callStackRow); return true; } diff --git a/trace_streamer/src/parser/ptreader_parser/hilog_parser/ptreader_hilog_parser.cpp b/trace_streamer/src/parser/ptreader_parser/hilog_parser/ptreader_hilog_parser.cpp index b0ec9c7d..217b701b 100644 --- a/trace_streamer/src/parser/ptreader_parser/hilog_parser/ptreader_hilog_parser.cpp +++ b/trace_streamer/src/parser/ptreader_parser/hilog_parser/ptreader_hilog_parser.cpp @@ -153,7 +153,7 @@ void PtreaderHilogParser::BeginFilterHilogData(HilogLine *hilogData) auto logTag = traceDataCache_->dataDict_.GetStringIndex(hilogData->tag); auto logData = traceDataCache_->dataDict_.GetStringIndex(hilogData->context); LogInfoRow logInfoRow = {curLineSeq, newTimeStamp, hilogData->pid, hilogData->tid, - levelData, logTag, logData, hilogData->timeStamp}; + levelData, logTag, logData, hilogData->timeStamp}; traceDataCache_->GetHilogData()->AppendNewLogInfo(logInfoRow); return; } diff --git a/trace_streamer/src/rpc/ffrt_converter.cpp b/trace_streamer/src/rpc/ffrt_converter.cpp index b8e623f4..c228338d 100644 --- a/trace_streamer/src/rpc/ffrt_converter.cpp +++ b/trace_streamer/src/rpc/ffrt_converter.cpp @@ -354,7 +354,6 @@ void FfrtConverter::ConvertFfrtThreadToFfrtTask() threadInfo.pid = pid; threadInfo.tid = tid; threadInfo.name = ffrtContent.name; - // auto &threadName = ffrtContent.name; auto switchInFakeLog = false; auto switchOutFakeLog = false; auto ffbkMarkRemove = false; diff --git a/trace_streamer/src/rpc/rpc_server.cpp b/trace_streamer/src/rpc/rpc_server.cpp index 03721a56..34aa13d7 100644 --- a/trace_streamer/src/rpc/rpc_server.cpp +++ b/trace_streamer/src/rpc/rpc_server.cpp @@ -356,7 +356,7 @@ bool RpcServer::ParseSplitFileData(const uint8_t *data, } #endif if (ts_->GetFileType() == TRACE_FILETYPE_H_TRACE) { - ProcHtraceSplitResult(splitFileCallBack); + ProcPbreaderSplitResult(splitFileCallBack); } #ifdef ENABLE_HIPERF if (ts_->GetFileType() == TRACE_FILETYPE_PERF) { @@ -371,15 +371,18 @@ bool RpcServer::ParseSplitFileData(const uint8_t *data, ts_->GetTraceDataCache()->isSplitFile_ = false; return true; } -void RpcServer::ProcHtraceSplitResult(SplitFileCallBack splitFileCallBack) +void RpcServer::ProcPbreaderSplitResult(SplitFileCallBack splitFileCallBack) { uint64_t dataSize = 0; std::string result = VALUE_STR; #ifdef ENABLE_NATIVE_HOOK ts_->GetPbreaderParser()->ClearNativehookData(); #endif - for (const auto &itemHtrace : ts_->GetPbreaderParser()->GetPbreaderSplitData()) { - result += SIZE + std::to_string(itemHtrace.second); + for (const auto &itemPbreader : ts_->GetPbreaderParser()->GetPbreaderSplitData()) { + dataSize += itemPbreader.second; + result += OFFSET + std::to_string(itemPbreader.first); + result += SIZE + std::to_string(itemPbreader.second); + result += "},"; } auto dataSourceType = ts_->GetPbreaderParser()->GetDataSourceType(); auto profilerHeader = ts_->GetPbreaderParser()->GetProfilerHeader(); diff --git a/trace_streamer/src/rpc/rpc_server.h b/trace_streamer/src/rpc/rpc_server.h index 09b99f1c..645344f4 100644 --- a/trace_streamer/src/rpc/rpc_server.h +++ b/trace_streamer/src/rpc/rpc_server.h @@ -97,7 +97,7 @@ private: #ifdef ENABLE_HIPERF void ProcPerfSplitResult(SplitFileCallBack splitFileCallBack, bool isLast); #endif - void ProcHtraceSplitResult(SplitFileCallBack splitFileCallBack); + void ProcPbreaderSplitResult(SplitFileCallBack splitFileCallBack); bool SendBytraceSplitFileData(SplitFileCallBack splitFileCallBack, int32_t isFinish); private: diff --git a/trace_streamer/src/trace_data/trace_stdtype/ftrace/callstack_stdtype.cpp b/trace_streamer/src/trace_data/trace_stdtype/ftrace/callstack_stdtype.cpp index e5269933..47fd67ca 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/ftrace/callstack_stdtype.cpp +++ b/trace_streamer/src/trace_data/trace_stdtype/ftrace/callstack_stdtype.cpp @@ -16,27 +16,12 @@ namespace SysTuning { namespace TraceStdtype { -struct CallStackInternalRow { - uint64_t startT = INVALID_UINT64; - uint64_t durationNs = INVALID_UINT64; - InternalTid internalTid = INVALID_UINT32; - DataIndex cat = INVALID_UINT64; - DataIndex name = INVALID_UINT64; - uint8_t depth = INVALID_UINT8; -}; -struct CallStackDistributeInfoRow { - std::string chainId; - std::string spanId; - std::string parentSpanId; - std::string flag; - std::string args; -}; size_t CallStack::AppendInternalAsyncSlice(const CallStackInternalRow &callStackInternalRow, int64_t cookid, const std::optional &parentId) { - AppendCommonInfo(callStackInternalRow.startT, callStackInternalRow.durationNs,callStackInternalRow.internalTid); - AppendCallStack(callStackInternalRow.cat, callStackInternalRow.name,callStackInternalRow.depth, parentId); + AppendCommonInfo(callStackInternalRow.startT, callStackInternalRow.durationNs, callStackInternalRow.internalTid); + AppendCallStack(callStackInternalRow.cat, callStackInternalRow.name, callStackInternalRow.depth, parentId); AppendDistributeInfo(); cookies_.emplace_back(cookid); ids_.emplace_back(id_++); @@ -45,7 +30,7 @@ size_t CallStack::AppendInternalAsyncSlice(const CallStackInternalRow &callStack size_t CallStack::AppendInternalSlice(const CallStackInternalRow &callStackInternalRow, const std::optional &parentId) { - AppendCommonInfo(callStackInternalRow.startT,callStackInternalRow.durationNs, callStackInternalRow.internalTid); + AppendCommonInfo(callStackInternalRow.startT, callStackInternalRow.durationNs, callStackInternalRow.internalTid); AppendCallStack(callStackInternalRow.cat, callStackInternalRow.name, callStackInternalRow.depth, parentId); ids_.emplace_back(id_++); cookies_.emplace_back(INVALID_INT64); @@ -66,13 +51,16 @@ void CallStack::AppendCallStack(DataIndex cat, DataIndex name, uint8_t depth, st names_.emplace_back(name); depths_.emplace_back(depth); } -void CallStack::SetDistributeInfo(size_t index,const CallStackDistributeInfoRow &callStackDistributeInfoRow) +void CallStack::SetDistributeInfo(size_t index, + const std::string &chainId, + const std::string &spanId, + const std::string &parentSpanId, + const std::string &flag) { - chainIds_[index] = callStackDistributeInfoRow.chainId; - spanIds_[index] = callStackDistributeInfoRow.spanId; - parentSpanIds_[index] = callStackDistributeInfoRow.parentSpanId; - flags_[index] = callStackDistributeInfoRow.flag; - args_[index] = callStackDistributeInfoRow.args; + chainIds_[index] = chainId; + spanIds_[index] = spanId; + parentSpanIds_[index] = parentSpanId; + flags_[index] = flag; argSet_[index] = INVALID_UINT32; } void CallStack::AppendDistributeInfo() diff --git a/trace_streamer/src/trace_data/trace_stdtype/ftrace/callstack_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype/ftrace/callstack_stdtype.h index 7da86ea6..c0736c0c 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/ftrace/callstack_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype/ftrace/callstack_stdtype.h @@ -20,6 +20,14 @@ namespace SysTuning { namespace TraceStdtype { +struct CallStackInternalRow { + uint64_t startT = INVALID_UINT64; + uint64_t durationNs = INVALID_UINT64; + InternalTid internalTid = INVALID_UINT32; + DataIndex cat = INVALID_UINT64; + DataIndex name = INVALID_UINT64; + uint8_t depth = INVALID_UINT8; +}; class CallStack : public CacheBase, public CpuCacheBase, public BatchCacheBase { public: size_t AppendInternalAsyncSlice(const CallStackInternalRow &callStackInternalRow, @@ -28,12 +36,10 @@ public: size_t AppendInternalSlice(const CallStackInternalRow &callStackInternalRow, const std::optional &parentId); void SetDistributeInfo(size_t index, - const CallStackDistributeInfoRow &callStackDistributeInfoRow); - void AppendDistributeInfo(const std::string &chainId, - const std::string &spanId, - const std::string &parentSpanId, - const std::string &flag, - const std::string &args); + const std::string &chainId, + const std::string &spanId, + const std::string &parentSpanId, + const std::string &flag); void AppendDistributeInfo(); void SetDuration(size_t index, uint64_t timeStamp); void SetDurationWithFlag(size_t index, uint64_t timeStamp); diff --git a/trace_streamer/src/trace_data/trace_stdtype/ftrace/render_service_stdtype.cpp b/trace_streamer/src/trace_data/trace_stdtype/ftrace/render_service_stdtype.cpp index a42e103b..c8253ab2 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/ftrace/render_service_stdtype.cpp +++ b/trace_streamer/src/trace_data/trace_stdtype/ftrace/render_service_stdtype.cpp @@ -36,12 +36,13 @@ size_t FrameSlice::AppendFrame(uint64_t ts, uint32_t ipid, uint32_t itid, uint32 } size_t FrameSlice::AppendFrame(const FrameSliceRow &frameSliceRow) { - auto row = AppendFrame(frameSliceRow.ts, frameSliceRow.ipid, frameSliceRow.itid, frameSliceRow.vsyncId, frameSliceRow.callStackSliceId); + auto row = AppendFrame(frameSliceRow.ts, frameSliceRow.ipid, frameSliceRow.itid, frameSliceRow.vsyncId, + frameSliceRow.callStackSliceId); SetEndTime(row, frameSliceRow.end); SetType(row, frameSliceRow.type); depths_.emplace_back(0); frameNos_.emplace_back(0); - durs_[row] =frameSliceRow.end - frameSliceRow.ts; + durs_[row] = frameSliceRow.end - frameSliceRow.ts; return row; } diff --git a/trace_streamer/src/trace_data/trace_stdtype/ftrace/sched_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype/ftrace/sched_stdtype.h index 9136599c..4126e51f 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/ftrace/sched_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype/ftrace/sched_stdtype.h @@ -87,8 +87,7 @@ private: std::deque cpus_; std::deque argSetIds_; }; -struct SchedSliceRow -{ +struct SchedSliceRow { uint64_t ts = INVALID_UINT64; uint64_t dur = INVALID_UINT64; uint64_t cpu = INVALID_UINT64; diff --git a/trace_streamer/src/trace_data/trace_stdtype/ftrace/template/app_startup_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype/ftrace/template/app_startup_stdtype.h index 01d067e1..42b83df3 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/ftrace/template/app_startup_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype/ftrace/template/app_startup_stdtype.h @@ -61,13 +61,13 @@ private: std::deque packedNames_ = {}; }; struct SoStaticInitalizationRow { - uint32_t ipid = INVALID_UINT32; - uint32_t tid = INVALID_UINT32; - uint32_t callId = INVALID_UINT32; - uint64_t startTime = INVALID_UINT64; - uint64_t endTime = INVALID_UINT64; - DataIndex soName = INVALID_UINT64; - uint32_t depth = INVALID_UINT32; + uint32_t ipid = INVALID_UINT32; + uint32_t tid = INVALID_UINT32; + uint32_t callId = INVALID_UINT32; + uint64_t startTime = INVALID_UINT64; + uint64_t endTime = INVALID_UINT64; + DataIndex soName = INVALID_UINT64; + uint32_t depth = INVALID_UINT32; }; class SoStaticInitalization : public CacheBase { public: diff --git a/trace_streamer/src/trace_data/trace_stdtype/hilog/hilog_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype/hilog/hilog_stdtype.h index 559af2b4..d3ca9564 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/hilog/hilog_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype/hilog/hilog_stdtype.h @@ -19,7 +19,7 @@ namespace SysTuning { namespace TraceStdtype { - struct LogInfoRow { +struct LogInfoRow { uint64_t seq = INVALID_UINT64; uint64_t timeStamp = INVALID_UINT64; uint32_t pid = INVALID_UINT32; diff --git a/trace_streamer/src/trace_data/trace_stdtype/hiperf/hiperf_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype/hiperf/hiperf_stdtype.h index 5416ff76..115506a4 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/hiperf/hiperf_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype/hiperf/hiperf_stdtype.h @@ -20,8 +20,7 @@ namespace SysTuning { namespace TraceStdtype { -struct PerfCallChainRow -{ +struct PerfCallChainRow { /* data */ uint32_t callChainId = INVALID_UINT32; uint32_t depth = INVALID_UINT32; diff --git a/trace_streamer/src/trace_data/trace_stdtype/hisysevent/hisysevent_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype/hisysevent/hisysevent_stdtype.h index 100c69ee..3031bd15 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/hisysevent/hisysevent_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype/hisysevent/hisysevent_stdtype.h @@ -36,8 +36,7 @@ private: std::deque subkeyNameIds_ = {}; }; -struct HiSysEventMeasureDataRow -{ +struct HiSysEventMeasureDataRow { /* data */ uint64_t serial = INVALID_UINT64; uint64_t ts = INVALID_UINT64; @@ -81,8 +80,7 @@ private: uint32_t rowCount_ = 0; }; -struct HiSysEventDeviceStateDataRow -{ +struct HiSysEventDeviceStateDataRow { /* data */ int32_t brightness = INVALID_UINT32; int32_t btState = INVALID_UINT32; diff --git a/trace_streamer/src/trace_data/trace_stdtype/htrace/ebpf_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype/htrace/ebpf_stdtype.h index dd81e537..58fc5597 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/htrace/ebpf_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype/htrace/ebpf_stdtype.h @@ -20,8 +20,7 @@ namespace SysTuning { namespace TraceStdtype { -struct FileSystemSampleRow -{ +struct FileSystemSampleRow { /* data */ uint32_t callChainId = INVALID_UINT32; uint16_t type = INVALID_UINT16; @@ -99,8 +98,7 @@ private: std::deque fourthArguments_ = {}; }; -struct PagedMemorySampleDataRow -{ +struct PagedMemorySampleDataRow { /* data */ uint32_t callChainId = INVALID_UINT32; uint16_t type = INVALID_UINT16; @@ -151,8 +149,7 @@ private: std::deque itids_ = {}; }; -struct BioLatencySampleDataRow -{ +struct BioLatencySampleDataRow { /* data */ uint32_t callChainId = INVALID_UINT32; uint64_t type = INVALID_UINT64; @@ -216,15 +213,14 @@ private: uint32_t rowCount_ = 0; }; -struct EbpfCallStackDataRow -{ +struct EbpfCallStackDataRow { /* data */ uint32_t callChainId = INVALID_UINT32; uint32_t depth = INVALID_UINT32; DataIndex ip = INVALID_DATAINDEX; DataIndex symbolId = INVALID_DATAINDEX; DataIndex filePathId = INVALID_DATAINDEX; - uint64_t vaddr = INVALID_UINT64; + uint64_t vaddr = INVALID_UINT64; }; class EbpfCallStackData : public CacheBase { diff --git a/trace_streamer/src/trace_data/trace_stdtype/htrace/native_memory_stdtype.cpp b/trace_streamer/src/trace_data/trace_stdtype/htrace/native_memory_stdtype.cpp index 0cfee62e..7438e12c 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/htrace/native_memory_stdtype.cpp +++ b/trace_streamer/src/trace_data/trace_stdtype/htrace/native_memory_stdtype.cpp @@ -264,7 +264,8 @@ const std::deque &NativeHookFrame::Vaddrs() const size_t NativeHookStatistic::AppendNewNativeHookStatistic(const NativeHookStatisticRow &nativeHookStatisticRow) { - AppendNativeHookSampleBase(nativeHookStatisticRow.callChainId, nativeHookStatisticRow.ipid, nativeHookStatisticRow.timeStamp); + AppendNativeHookSampleBase(nativeHookStatisticRow.callChainId, nativeHookStatisticRow.ipid, + nativeHookStatisticRow.timeStamp); memoryTypes_.emplace_back(nativeHookStatisticRow.memoryType); applyCounts_.emplace_back(nativeHookStatisticRow.applyCount); memSubTypes_.emplace_back(nativeHookStatisticRow.subMemType); diff --git a/trace_streamer/src/trace_data/trace_stdtype/htrace/native_memory_stdtype.h b/trace_streamer/src/trace_data/trace_stdtype/htrace/native_memory_stdtype.h index e297385f..c2218b2b 100644 --- a/trace_streamer/src/trace_data/trace_stdtype/htrace/native_memory_stdtype.h +++ b/trace_streamer/src/trace_data/trace_stdtype/htrace/native_memory_stdtype.h @@ -46,8 +46,7 @@ public: std::deque lastSymbolIndexs_ = {}; }; - -struct NativeHookRow{ +struct NativeHookRow { uint32_t callChainId = INVALID_UINT32; uint32_t ipid = INVALID_UINT32; uint32_t itid = INVALID_UINT32; @@ -124,8 +123,7 @@ private: uint64_t lastMmapEventRaw_ = INVALID_UINT64; }; -struct NativeHookFrameRow -{ +struct NativeHookFrameRow { /* data */ uint32_t callChainId = INVALID_UINT32; uint16_t depth = INVALID_UINT16; @@ -136,8 +134,7 @@ struct NativeHookFrameRow uint64_t symbolOffset = INVALID_UINT64; }; -struct NativeHookFrameVaddrRow -{ +struct NativeHookFrameVaddrRow { /* data */ uint32_t callChainId = INVALID_UINT32; uint16_t depth = INVALID_UINT16; diff --git a/trace_streamer/src/trace_streamer/trace_streamer_selector.cpp b/trace_streamer/src/trace_streamer/trace_streamer_selector.cpp index 8d797b4e..fc5a1087 100644 --- a/trace_streamer/src/trace_streamer/trace_streamer_selector.cpp +++ b/trace_streamer/src/trace_streamer/trace_streamer_selector.cpp @@ -297,12 +297,11 @@ void TraceStreamerSelector::InitializeParser() #ifdef ENABLE_BYTRACE ptreaderParser_->EnableBytrace(fileType_ == TRACE_FILETYPE_BY_TRACE); #endif - } #ifdef ENABLE_RAWTRACE - else if (fileType_ == TRACE_FILETYPE_RAW_TRACE) { + } else if (fileType_ == TRACE_FILETYPE_RAW_TRACE) { rawTraceParser_ = std::make_unique(traceDataCache_.get(), streamFilters_.get()); - } #endif + } } void TraceStreamerSelector::ProcessTraceData(std::unique_ptr data, size_t size, int32_t isFinish) @@ -313,17 +312,16 @@ void TraceStreamerSelector::ProcessTraceData(std::unique_ptr data, si fileType_ == TRACE_FILETYPE_HILOG) { ptreaderParser_->ParseTraceDataSegment(std::move(data), size, isFinish); return; - } + } else if (fileType_ == TRACE_FILETYPE_PERF) { #ifdef ENABLE_HIPERF - else if (fileType_ == TRACE_FILETYPE_PERF) { pbreaderParser_->StoreTraceDataSegment(std::move(data), size, isFinish); - } #endif + } else if (fileType_ == TRACE_FILETYPE_RAW_TRACE) { #ifdef ENABLE_RAWTRACE - else if (fileType_ == TRACE_FILETYPE_RAW_TRACE) { rawTraceParser_->ParseTraceDataSegment(std::move(data), size, isFinish); - } #endif + } + SetAnalysisResult(TRACE_PARSER_NORMAL); } diff --git a/trace_streamer/src/version.cpp b/trace_streamer/src/version.cpp index 26280280..8643d6fb 100644 --- a/trace_streamer/src/version.cpp +++ b/trace_streamer/src/version.cpp @@ -17,7 +17,7 @@ namespace SysTuning { namespace TraceStreamer { size_t g_loadSize = 0; size_t g_fileSize = 0; -const std::string TRACE_STREAMER_VERSION = "4.1.1"; // version -const std::string TRACE_STREAMER_PUBLISH_VERSION = "2024/04/22"; // publish datetime +const std::string TRACE_STREAMER_VERSION = "4.1.2"; // version +const std::string TRACE_STREAMER_PUBLISH_VERSION = "2024/04/24"; // publish datetime } // namespace TraceStreamer } // namespace SysTuning diff --git a/trace_streamer/test/unittest/filter/animation_filter_test.cpp b/trace_streamer/test/unittest/filter/animation_filter_test.cpp index 53f3ff64..085407b6 100644 --- a/trace_streamer/test/unittest/filter/animation_filter_test.cpp +++ b/trace_streamer/test/unittest/filter/animation_filter_test.cpp @@ -92,8 +92,8 @@ HWTEST_F(AnimationFilterTest, InvalidCallStack, TestSize.Level1) // invalid parentId for (size_t i = 0, depth = 0; i < callStackNames.size(); i++) { std::optional parentId = 0; - CallStackInternalRow callStackInternalRow = {INVALID_TIME, INVALID_TIME, INVALID_UINT32, INVALID_UINT64, - callStackNames[i], ++depth}; + CallStackInternalRow callStackInternalRow = {INVALID_TIME, INVALID_TIME, INVALID_UINT32, + INVALID_UINT64, callStackNames[i], ++depth}; callStackSlice->AppendInternalSlice(callStackInternalRow, parentId); point.funcPrefix_ = funcPrefixs[1]; auto res = stream_.streamFilters_->animationFilter_->BeginDynamicFrameEvent(point, CALLSTACK_SLICE_ID); @@ -107,8 +107,8 @@ HWTEST_F(AnimationFilterTest, InvalidCallStack, TestSize.Level1) parentId = index; } depth = i + 1; - CallStackInternalRow callStackInternalRow1 = {INVALID_TIME, INVALID_TIME, INVALID_UINT32, INVALID_UINT64, - callStackNames[i], depth}; + CallStackInternalRow callStackInternalRow1 = {INVALID_TIME, INVALID_TIME, INVALID_UINT32, + INVALID_UINT64, callStackNames[i], depth}; index = callStackSlice->AppendInternalSlice(callStackInternalRow1, parentId); } point.funcPrefix_ = funcPrefixs[1]; @@ -239,7 +239,8 @@ HWTEST_F(AnimationFilterTest, UpdateDynamicFrameInfo, TestSize.Level1) parentId = index; } depth = i + 1; - CallStackInternalRow callStackInternalRow2 = {startTime, dur, INVALID_UINT32, INVALID_UINT64, callStackNames[i],depth}; + CallStackInternalRow callStackInternalRow2 = {startTime, dur, INVALID_UINT32, INVALID_UINT64, + callStackNames[i], depth}; index = callStackSlice->AppendInternalSlice(callStackInternalRow2, parentId); } point.funcPrefix_ = funcPrefix; @@ -269,8 +270,7 @@ HWTEST_F(AnimationFilterTest, AnimationStartAndEnd, TestSize.Level1) std::optional parentId; DataIndex callStackName = stream_.traceDataCache_->GetDataIndex( "H:RSUniRender::Process:[WindowScene_xxx] (0, 0, 1344, 2772) Alpha: 1.00"); - - CallStackInternalRow callStackInternalRow3 = {line.ts, dur, INVALID_UINT32, INVALID_UINT64, callStackName,depth}; + CallStackInternalRow callStackInternalRow3 = {line.ts, dur, INVALID_UINT32, INVALID_UINT64, callStackName, depth}; auto callStackRow = callStackSlice->AppendInternalSlice(callStackInternalRow3, parentId); TracePoint point; diff --git a/trace_streamer/test/unittest/table/table_test.cpp b/trace_streamer/test/unittest/table/table_test.cpp index a71b3cc3..ae8f8726 100644 --- a/trace_streamer/test/unittest/table/table_test.cpp +++ b/trace_streamer/test/unittest/table/table_test.cpp @@ -140,10 +140,11 @@ HWTEST_F(TableTest, CallstackTableTest, TestSize.Level1) const std::optional &parentId1 = 1; stream_.traceDataCache_->InitDB(); - CallStackInternalRow callStackInternalRow = {startT, durationNs, internalTid, cat,name, depth}; - CallStackInternalRow callStackInternalRow1 = {startT1, durationNs1, internalTid1, cat1,name1, depth1}; + CallStackInternalRow callStackInternalRow = {startT, durationNs, internalTid, cat, name, depth}; + CallStackInternalRow callStackInternalRow1 = {startT1, durationNs1, internalTid1, cat1, name1, depth1}; stream_.traceDataCache_->GetInternalSlicesData()->AppendInternalAsyncSlice(callStackInternalRow, cookid, parentId); - stream_.traceDataCache_->GetInternalSlicesData()->AppendInternalAsyncSlice(callStackInternalRow1, cookid1, parentId1); + stream_.traceDataCache_->GetInternalSlicesData()->AppendInternalAsyncSlice(callStackInternalRow1, cookid1, + parentId1); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect, false), 2); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect1, false), 1); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect2, false), 0); @@ -438,11 +439,13 @@ HWTEST_F(TableTest, FileSystemSampleTableTest, TestSize.Level1) EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect4, false), 1); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect5, false), 0); - FileSystemSampleRow fileSystemSampleRow = {CALLCHAIN_ID, TYPE, IPID, ITID, START_TS, END_TS, DUR, returnValue, errorCode, SIZE, FD, fileId, firstArgument, - secondArgument, thirdArgument, fourthArgument}; + FileSystemSampleRow fileSystemSampleRow = { + CALLCHAIN_ID, TYPE, IPID, ITID, START_TS, END_TS, DUR, returnValue, + errorCode, SIZE, FD, fileId, firstArgument, secondArgument, thirdArgument, fourthArgument}; stream_.traceDataCache_->GetFileSystemSample()->AppendNewData(fileSystemSampleRow); - fileSystemSampleRow = {CALLCHAIN_ID1, TYPE1, IPID1, ITID1, START_TS1, END_TS1, DUR1, returnValue1, errorCode1, SIZE1, FD1, fileId1, - firstArgument1, secondArgument1, thirdArgument1, fourthArgument1}; + fileSystemSampleRow = {CALLCHAIN_ID1, TYPE1, IPID1, ITID1, START_TS1, END_TS1, + DUR1, returnValue1, errorCode1, SIZE1, FD1, fileId1, + firstArgument1, secondArgument1, thirdArgument1, fourthArgument1}; stream_.traceDataCache_->GetFileSystemSample()->AppendNewData(fileSystemSampleRow); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect, false), 2); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect1, false), 1); @@ -479,8 +482,7 @@ HWTEST_F(TableTest, HisysEventMeasureTableTest, TestSize.Level1) int32_t type = 1; double numericValue = 0; DataIndex stringValue = stream_.traceDataCache_->GetDataIndex("stringValue"); - HiSysEventMeasureDataRow hiSysEventMeasureDataRow = {ts, nameId, keyId, type, numericValue, stringValue, - serial}; + HiSysEventMeasureDataRow hiSysEventMeasureDataRow = {ts, nameId, keyId, type, numericValue, stringValue, serial}; stream_.traceDataCache_->GetHiSysEventMeasureData()->AppendData(hiSysEventMeasureDataRow); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect, false), 1); } @@ -573,9 +575,11 @@ HWTEST_F(TableTest, IoLatencySampleTableTest, TestSize.Level1) stream_.traceDataCache_->GetHidumpData()->AppendNewHidumpInfo(timestamp1, fps1); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect1, false), 2); - GetBioLatencySampleDataRow bioLatencySampleDataRow = {CALLCHAIN_ID, TYPE, IPID, ITID, startTs, endTs, latencyDur, tier, size, blockNumber, filePathId, durPer4k}; + GetBioLatencySampleDataRow bioLatencySampleDataRow = {CALLCHAIN_ID, TYPE, IPID, ITID, startTs, endTs, + latencyDur, tier, size, blockNumber, filePathId, durPer4k}; stream_.traceDataCache_->GetBioLatencySampleData()->AppendNewData(bioLatencySampleDataRow); - bioLatencySampleDataRow = {callChainId1, type1, ipid1, itid1, startTs1, endTs1, latencyDur1, tier1, size1, blockNumber1, filePathId1, durPer4k1}; + bioLatencySampleDataRow = {callChainId1, type1, ipid1, itid1, startTs1, endTs1, + latencyDur1, tier1, size1, blockNumber1, filePathId1, durPer4k1}; stream_.traceDataCache_->GetBioLatencySampleData()->AppendNewData(bioLatencySampleDataRow); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect, false), 2); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect2, false), 1); @@ -608,8 +612,8 @@ HWTEST_F(TableTest, IrqTableTest, TestSize.Level1) CallStackInternalRow callStackInternalRow = {startT, durationNs, internalTid, cat, name, depth}; CallStackInternalRow callStackInternalRow1 = {startT1, durationNs1, internalTid1, cat1, name1, depth1}; - stream_.traceDataCache_->GetIrqData()->AppendInternalSlice(callStackInternalRow,parentId); - stream_.traceDataCache_->GetIrqData()->AppendInternalSlice(callStackInternalRow1,parentId1); + stream_.traceDataCache_->GetIrqData()->AppendInternalSlice(callStackInternalRow, parentId); + stream_.traceDataCache_->GetIrqData()->AppendInternalSlice(callStackInternalRow1, parentId1); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect, false), 2); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect1, false), 2); } @@ -754,9 +758,11 @@ HWTEST_F(TableTest, NativeHookTableTest, TestSize.Level1) int64_t memSize1 = 2; int64_t curMemSize1 = 2; - NativeHookRow nativeHookRow = {CALLCHAIN_ID, IPID, ITID, eventType, subType, timeStamp, endTimestamp, duration, addr, memSize}; + NativeHookRow nativeHookRow = {CALLCHAIN_ID, IPID, ITID, eventType, subType, + timeStamp, endTimestamp, duration, addr, memSize}; stream_.traceDataCache_->GetNativeHookData()->AppendNewNativeHookData(nativeHookRow); - nativeHookRow = {callChainId1, ipid1, itid1, eventType1, subType1, timestamp1, endTimestamp1, duration1, addr1, memSize1}; + nativeHookRow = {callChainId1, ipid1, itid1, eventType1, subType1, + timestamp1, endTimestamp1, duration1, addr1, memSize1}; stream_.traceDataCache_->GetNativeHookData()->AppendNewNativeHookData(nativeHookRow); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect, false), 2); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect1, false), 1); @@ -792,8 +798,8 @@ HWTEST_F(TableTest, NativeHookFrameTableTest, TestSize.Level1) uint64_t offset1 = 2; uint64_t symbolOffset1 = 2; const std::string vaddr1 = "addr1"; - NativeHookFrameVaddrRow nativeHookFrameVaddrRow = {CALLCHAIN_ID, depth, ip, symbolName, - filePath, offset, symbolOffset, vaddr}; + NativeHookFrameVaddrRow nativeHookFrameVaddrRow = {CALLCHAIN_ID, depth, ip, symbolName, + filePath, offset, symbolOffset, vaddr}; stream_.traceDataCache_->GetNativeHookFrameData()->AppendNewNativeHookFrame(nativeHookFrameVaddrRow); nativeHookFrameVaddrRow = {CALLCHAIN_ID1, depth1, ip1, symbolName1, filePath1, offset1, symbolOffset1, vaddr1}; stream_.traceDataCache_->GetNativeHookFrameData()->AppendNewNativeHookFrame(nativeHookFrameVaddrRow); @@ -941,8 +947,10 @@ HWTEST_F(TableTest, PerfSampleTableTest, TestSize.Level1) uint64_t cpuId1 = 2; uint64_t threadState1 = stream_.traceDataCache_->GetDataIndex("threadState1"); - PerfSampleRow perfSampleRow = {sampleId, timestamp, tid, eventCount, eventTypeId, timestampTrace, cpuId, threadState}; - PerfSampleRow perfSampleRow1 = {sampleId1, timestamp1, tid1, eventCount1, eventTypeId1, timestampTrace1, cpuId1, threadState1}; + PerfSampleRow perfSampleRow = {sampleId, timestamp, tid, eventCount, + eventTypeId, timestampTrace, cpuId, threadState}; + PerfSampleRow perfSampleRow1 = {sampleId1, timestamp1, tid1, eventCount1, + eventTypeId1, timestampTrace1, cpuId1, threadState1}; stream_.traceDataCache_->GetPerfSampleData()->AppendNewPerfSample(perfSampleRow); stream_.traceDataCache_->GetPerfSampleData()->AppendNewPerfSample(perfSampleRow1); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect, false), 2); @@ -1097,8 +1105,8 @@ HWTEST_F(TableTest, SchedSliceTest, TestSize.Level1) uint64_t endState1 = 2; uint64_t priority1 = 2; - SchedSliceRow schedSliceRow = {ts,dur,cpu,internalTid,endState,priority}; - SchedSliceRow schedSliceRow1 = {ts1,dur1,cpu1,internalTid1,endState1,priority1}; + SchedSliceRow schedSliceRow = {ts, dur, cpu, internalTid, endState, priority}; + SchedSliceRow schedSliceRow1 = {ts1, dur1, cpu1, internalTid1, endState1, priority1}; stream_.traceDataCache_->GetSchedSliceData()->AppendSchedSlice(schedSliceRow); stream_.traceDataCache_->GetSchedSliceData()->AppendSchedSlice(schedSliceRow1); EXPECT_EQ(stream_.traceDataCache_->SearchDatabase(sqlSelect, false), 2); -- Gitee