From 2b23bd61d28b17ef528dbbb10a6ebdbd106b5882 Mon Sep 17 00:00:00 2001 From: zhangzhuozhou Date: Sat, 29 Mar 2025 18:08:29 +0800 Subject: [PATCH 01/13] =?UTF-8?q?feat:=E9=80=82=E9=85=8D=E5=A4=A7=E6=A1=8C?= =?UTF-8?q?=E9=9D=A2=E5=B9=B6=E8=A1=8C=E5=8C=96trace=E6=B8=B2=E6=9F=93?= =?UTF-8?q?=E5=8F=98=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhangzhuozhou --- trace_streamer/src/filter/frame_filter.cpp | 9 ++++++-- trace_streamer/src/filter/frame_filter.h | 3 +-- .../src/parser/print_event_parser.cpp | 23 ++----------------- .../src/parser/print_event_parser.h | 1 - 4 files changed, 10 insertions(+), 26 deletions(-) diff --git a/trace_streamer/src/filter/frame_filter.cpp b/trace_streamer/src/filter/frame_filter.cpp index 751216890..e531cb6ff 100644 --- a/trace_streamer/src/filter/frame_filter.cpp +++ b/trace_streamer/src/filter/frame_filter.cpp @@ -62,14 +62,19 @@ void FrameFilter::BeginVsyncEvent(const BytraceLine &line, vsyncRenderSlice_[itid] = frameVec; } } -void FrameFilter::BeginUVTraceEvent(const BytraceLine &line, uint32_t callStackSliceId) +void FrameFilter::BeginParallelTraceEvent(const BytraceLine &line, uint32_t callStackSliceId) { auto frame = std::make_shared(); frame->startTs_ = line.ts; frame->callStackSliceId_ = callStackSliceId; - frame->isUVTrace_ = true; auto itid = streamFilters_->processFilter_->GetInternalTid(line.pid); auto ipid = streamFilters_->processFilter_->GetInternalPid(line.tgid); + auto process = traceDataCache_->GetProcessData(ipid); + auto mainThreadId = process->pid_; + if (mainThreadId == line.pid) { + TS_LOGI("Only deal with the events which are not on main thread."); + return; + } frame->frameSliceRow_ = traceDataCache_->GetFrameSliceData()->AppendFrame(line.ts, ipid, itid, INVALID_UINT32, callStackSliceId); diff --git a/trace_streamer/src/filter/frame_filter.h b/trace_streamer/src/filter/frame_filter.h index 3f259ab2c..128a94481 100644 --- a/trace_streamer/src/filter/frame_filter.h +++ b/trace_streamer/src/filter/frame_filter.h @@ -47,7 +47,7 @@ public: bool StartFrameQueue(uint64_t ts, uint32_t itid); bool EndFrameQueue(uint64_t ts, uint32_t itid); bool UpdateVsyncId(const BytraceLine &line, uint32_t vsyncId, uint64_t timeId); - void BeginUVTraceEvent(const BytraceLine &line, uint32_t callStackSliceId); + void BeginParallelTraceEvent(const BytraceLine &line, uint32_t callStackSliceId); void Clear(); void SetTraceType(TraceFileType traceType); void UpdateReadySize() @@ -86,7 +86,6 @@ private: std::vector sourceExpectedSlice_ = {}; uint64_t dstFrameSliceId_ = INVALID_UINT64; uint64_t dstExpectedFrameSliceId_ = INVALID_UINT64; - bool isUVTrace_ = false; bool isEnd_ = false; uint64_t nowId_ = INVALID_UINT64; }; diff --git a/trace_streamer/src/parser/print_event_parser.cpp b/trace_streamer/src/parser/print_event_parser.cpp index e98e6ffa4..a72718144 100644 --- a/trace_streamer/src/parser/print_event_parser.cpp +++ b/trace_streamer/src/parser/print_event_parser.cpp @@ -38,9 +38,7 @@ PrintEventParser::PrintEventParser(TraceDataCache *dataCache, const TraceStreame {marshRwTransactionData_, bind(&PrintEventParser::OnRwTransaction, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3)}, {rsMainThreadProcessCmd_, bind(&PrintEventParser::OnMainThreadProcessCmd, this, std::placeholders::_1, - std::placeholders::_2, std::placeholders::_3)}, - {uvTrace_, bind(&PrintEventParser::DealUvTraceEvent, this, std::placeholders::_1, std::placeholders::_2, - std::placeholders::_3)}}; + std::placeholders::_2, std::placeholders::_3)}}; } bool PrintEventParser::ParsePrintEvent(const std::string &comm, @@ -333,21 +331,6 @@ bool PrintEventParser::ReciveVsync(size_t callStackRow, std::string &args, const return true; } -bool PrintEventParser::DealUvTraceEvent(size_t callStackRow, std::string &args, const BytraceLine &line) -{ - Unused(args); - // deal H:UV_TRACE event, this event's thread is not main thread. - // this event do not has expect now and end. - streamFilters_->frameFilter_->BeginUVTraceEvent(line, callStackRow); - auto iTid = streamFilters_->processFilter_->GetInternalTid(line.pid); - if (vsyncSliceMap_.count(iTid)) { - vsyncSliceMap_[iTid].push_back(callStackRow); - } else { - vsyncSliceMap_[iTid] = {callStackRow}; - } - return true; -} - bool PrintEventParser::DealUIVsyncTaskEvent(DataIndex eventName, const BytraceLine &line) { auto eventNameStr = traceDataCache_->GetDataFromDict(eventName); @@ -372,10 +355,8 @@ bool PrintEventParser::DealUIVsyncTaskEvent(DataIndex eventName, const BytraceLi bool PrintEventParser::OnVsyncEvent(size_t callStackRow, std::string &args, const BytraceLine &line) { Unused(args); + streamFilters_->frameFilter_->BeginParallelTraceEvent(line, callStackRow); auto iTid = streamFilters_->processFilter_->GetInternalTid(line.pid); - if (!vsyncSliceMap_.count(iTid)) { - return false; - } // when there are mutiple nested OnVsyncEvent,only handle the OnvsyncEvent of the next layer under ReceiveVsync if (vsyncSliceMap_[iTid].size() >= maxVsyncEventSize_) { return false; diff --git a/trace_streamer/src/parser/print_event_parser.h b/trace_streamer/src/parser/print_event_parser.h index a8238f1da..2a6aab552 100644 --- a/trace_streamer/src/parser/print_event_parser.h +++ b/trace_streamer/src/parser/print_event_parser.h @@ -88,7 +88,6 @@ private: TraceStreamerConfig config_{}; const DataIndex recvievVsync_ = traceDataCache_->GetDataIndex("H:ReceiveVsync"); const DataIndex onVsyncEvent_ = traceDataCache_->GetDataIndex("H:OnVsyncEvent"); - const DataIndex uvTrace_ = traceDataCache_->GetDataIndex("H:UV_TRACE"); const std::string uiVsyncTaskStr_ = "H:UIVsyncTask"; const std::string rsOnDoCompositionStr_ = "H:RSMainThread::DoComposition"; DataIndex rsOnDoCompositionEvent_ = INVALID_DATAINDEX; -- Gitee From e78d84fd619797d1c3b12036e255a031044ab3f3 Mon Sep 17 00:00:00 2001 From: wangziyi Date: Wed, 2 Apr 2025 10:28:47 +0800 Subject: [PATCH 02/13] =?UTF-8?q?fix:=E4=BF=AE=E6=94=B9=E5=86=8D=E6=AC=A1?= =?UTF-8?q?=E5=AF=BC=E5=85=A5so=E9=A1=B5=E9=9D=A2=E4=B8=8D=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangziyi --- .../trace/component/trace/base/TraceSheet.ts | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/ide/src/trace/component/trace/base/TraceSheet.ts b/ide/src/trace/component/trace/base/TraceSheet.ts index 21bf2ec59..b883b1b33 100644 --- a/ide/src/trace/component/trace/base/TraceSheet.ts +++ b/ide/src/trace/component/trace/base/TraceSheet.ts @@ -104,8 +104,8 @@ import { XpowerThreadInfoStruct } from '../../../database/ui-worker/ProcedureWor import { TabPaneXpowerThreadInfoSelection } from '../sheet/xpower/TabPaneXpowerThreadInfoSelection'; import { TabPaneXpowerGpuFreqSelection } from '../sheet/xpower/TabPaneXpowerGpuFreqSelection'; import { XpowerGpuFreqStruct } from '../../../database/ui-worker/ProcedureWorkerXpowerGpuFreq'; -import { WebSocketManager} from '../../../../webSocket/WebSocketManager'; -import { Constants, TypeConstants} from '../../../../webSocket/Constants'; +import { WebSocketManager } from '../../../../webSocket/WebSocketManager'; +import { Constants, TypeConstants } from '../../../../webSocket/Constants'; import { PerfFunctionAsmParam } from '../../../bean/PerfAnalysis'; import { info, error } from '../../../../log/Log'; import { XpowerThreadCountStruct } from '../../../database/ui-worker/ProcedureWorkerXpowerThreadCount'; @@ -138,6 +138,7 @@ export class TraceSheet extends BaseElement { private spsystemTrace: SpSystemTrace | undefined; private isDragging = true; private REQ_BUF_SIZE = 1024 * 1024; + private loadSoComplete = false; static get observedAttributes(): string[] { return ['mode']; @@ -613,12 +614,13 @@ export class TraceSheet extends BaseElement { } if (fileList.length > 0) { importFileBt!.disabled = true; + this.loadSoComplete = false; window.publish(window.SmartEvent.UI.Loading, { loading: true, text: 'Import So File' }); this.uploadSoOrAN(fileList).then(r => { // @ts-ignore document.querySelector('body > sp-application').shadowRoot.querySelector('#sp-system-trace').shadowRoot.querySelector('div > trace-sheet').shadowRoot.querySelector('#box-perf-analysis > tabpane-perf-analysis').shadowRoot.querySelector('#SO-err-tips')?.innerHTML = ''; - let soFileList = fileList.filter(item => !item.name.includes('.an')); - if(soFileList.length === 0) { + let soFileList = fileList.filter(item => !item.name.includes('.an')); + if (soFileList.length === 0) { window.publish(window.SmartEvent.UI.UploadSOFile, {}); importFileBt!.disabled = false; return; @@ -631,6 +633,7 @@ export class TraceSheet extends BaseElement { importFileBt!.disabled = false; // @ts-ignore if (res.result === 'ok') { window.publish(window.SmartEvent.UI.UploadSOFile, {}); + this.loadSoComplete = true; } else { // @ts-ignore const failedList = res.failedArray.join(','); @@ -1183,6 +1186,12 @@ export class TraceSheet extends BaseElement { }); if (restore) { if (this.litTabs?.activekey) { + if (this.loadSoComplete) { + let analysisTabpane = this.shadowRoot!.querySelector('#box-perf-analysis') as LitTabpane; + if (analysisTabpane && this.litTabs) { + this.litTabs.activekey = analysisTabpane.key; + } + } this.loadTabPaneData(this.litTabs?.activekey); this.setMode('max'); return true; -- Gitee From 304c5dfbb98dc7b3e4ed3fe299a4c4d261b3330e Mon Sep 17 00:00:00 2001 From: wangyujie Date: Thu, 3 Apr 2025 14:49:25 +0800 Subject: [PATCH 03/13] =?UTF-8?q?fix:=E4=BF=AE=E5=A4=8Dhiperf=E9=BD=BF?= =?UTF-8?q?=E8=BD=AE=E6=93=8D=E4=BD=9C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangyujie --- ide/src/base-ui/popover/LitPopoverV.ts | 11 +++++++-- ide/src/trace/component/trace/SpChartList.ts | 23 +++++++++++++++++++ .../trace/component/trace/base/TraceRow.ts | 5 ++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/ide/src/base-ui/popover/LitPopoverV.ts b/ide/src/base-ui/popover/LitPopoverV.ts index adf8163c7..23669857e 100644 --- a/ide/src/base-ui/popover/LitPopoverV.ts +++ b/ide/src/base-ui/popover/LitPopoverV.ts @@ -17,6 +17,7 @@ import { BaseElement, element } from '../BaseElement'; import { replacePlaceholders } from '../utils/Template'; import { SpSystemTrace } from '../../trace/component/SpSystemTrace'; import { SpChartList } from '../../trace/component/trace/SpChartList'; +import { dpr } from '../../trace/component/trace/base/Extension'; let css = `