From daff73da60e2d61ae87dee98927b9f057d39fef3 Mon Sep 17 00:00:00 2001 From: "wupoli3@huawei.com" Date: Wed, 25 Oct 2023 16:39:52 +0800 Subject: [PATCH 1/4] =?UTF-8?q?Hiperf=20=E6=A8=A1=E5=9D=97=20transfer?= =?UTF-8?q?=E9=80=89=E4=B8=AD=E5=92=8C=E5=85=B6=E4=BB=96=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wupoli3@huawei.com --- .../trace/sheet/hiperf/TabPerfProfile.ts | 36 ++++++++++++------- 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts index db6f04e7..bdaa157d 100644 --- a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts +++ b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts @@ -53,6 +53,8 @@ export class TabpanePerfProfile extends BaseElement { private perfProfileLoadingPage: any; private currentSelection: SelectionParam | undefined; + private filterDate: any; + set data(perfProfilerSelection: SelectionParam | any) { if (perfProfilerSelection === this.currentSelection) { return; @@ -86,18 +88,17 @@ export class TabpanePerfProfile extends BaseElement { } initGetData(perfProfilerSelection: SelectionParam | any, initWidth: number): void { - this.getDataByWorker( - [ - { - funcName: 'setSearchValue', - funcArgs: [''], - }, - { - funcName: 'getCurrentDataFromDb', - funcArgs: [perfProfilerSelection], - }, - ], - (results: any[]) => { + console.log(this.filterDate) + let perfProfileArgs: any[] = []; + perfProfileArgs.push({ + funcName: 'setSearchValue', + funcArgs: [''], + }, + { + funcName: 'getCurrentDataFromDb', + funcArgs: [perfProfilerSelection], + },) + this.getDataByWorker(perfProfileArgs, (results: any[]) => { this.setPerfProfilerLeftTableData(results); this.perfProfilerList!.recycleDataSource = []; if(perfProfilerSelection.eventTypeId && perfProfilerSelection.eventTypeId !== 'count') { @@ -110,6 +111,9 @@ export class TabpanePerfProfile extends BaseElement { this.perfProfileFrameChart!.data = this.perfProfilerDataSource; this.switchFlameChart(); this.perfProfilerFilter!.icon = 'block'; + if(this.filterDate != undefined) { + this.refreshAllNode(this.filterDate); + } }) } @@ -377,6 +381,14 @@ export class TabpanePerfProfile extends BaseElement { this.perfProfilerFilter!.getDataLibrary(filterFunc); this.perfProfilerFilter!.getDataMining(filterFunc); this.perfProfilerFilter!.getCallTreeData((data: any) => { + if(data.checks[0] === false && data.checks[1] === false){ + this.filterDate = undefined; + } else { + this.filterDate = { + ...this.perfProfilerFilter!.getFilterTreeData(), + callTree: data.checks, + }; + } if (data.value === 0) { this.refreshAllNode({ ...this.perfProfilerFilter!.getFilterTreeData(), -- Gitee From 0b63effd8557f6946e02d4b93c4b28ebb8987bfd Mon Sep 17 00:00:00 2001 From: "wupoli3@huawei.com" Date: Wed, 25 Oct 2023 16:47:27 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wupoli3@huawei.com --- ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts index bdaa157d..08967d61 100644 --- a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts +++ b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts @@ -88,7 +88,6 @@ export class TabpanePerfProfile extends BaseElement { } initGetData(perfProfilerSelection: SelectionParam | any, initWidth: number): void { - console.log(this.filterDate) let perfProfileArgs: any[] = []; perfProfileArgs.push({ funcName: 'setSearchValue', -- Gitee From 2e96c157c7eb91dd8917305c8b043c4e1f6c2378 Mon Sep 17 00:00:00 2001 From: "wupoli3@huawei.com" Date: Fri, 27 Oct 2023 09:41:06 +0800 Subject: [PATCH 3/4] =?UTF-8?q?hiperf=20=E9=80=89=E4=B8=ADeventTypeid?= =?UTF-8?q?=E5=90=8E=E5=92=8C=E5=85=B6=E4=BB=96=E7=AD=9B=E9=80=89=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E8=81=94=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wupoli3@huawei.com --- .../component/trace/sheet/TabPaneFilter.ts | 29 ++++++--- .../trace/sheet/hiperf/TabPerfProfile.ts | 60 +++++++++---------- 2 files changed, 49 insertions(+), 40 deletions(-) diff --git a/ide/src/trace/component/trace/sheet/TabPaneFilter.ts b/ide/src/trace/component/trace/sheet/TabPaneFilter.ts index 55ff78b5..0ecd256f 100644 --- a/ide/src/trace/component/trace/sheet/TabPaneFilter.ts +++ b/ide/src/trace/component/trace/sheet/TabPaneFilter.ts @@ -118,7 +118,7 @@ export class TabPaneFilter extends BaseElement { if (this.getFilter) { this.getFilter(this.filterData('icon')); } - if(this.getAttribute('perf') == 'perf') { + if (this.getAttribute('perf') == 'perf') { this.disabledTransfer(true); } } @@ -431,10 +431,25 @@ export class TabPaneFilter extends BaseElement { initializeTreeTransfer() { let radioList = this.shadowRoot!.querySelectorAll('.radio'); let divElement = this.shadowRoot!.querySelectorAll('.tree-radio'); - radioList![radioList.length -1].checked = true; + radioList![radioList.length - 1].checked = true; divElement!.forEach((divEl, idx) => { divEl.addEventListener('click', () => { + let filterData = this.getFilterTreeData(); + if (filterData.callTree[0] === true || filterData.callTree[1] === true) { + let row = this.shadowRoot!.querySelectorAll('.tree-check lit-check-box'); + row[0].checked = false; + row[1].checked = false; + } + if (filterData.callTreeConstraints.checked === true) { + let check = this.shadowRoot!.querySelector('#constraints-check'); + let inputs = this.shadowRoot!.querySelectorAll('.constraints-input'); + check!.checked = false; + inputs[0].value = '0'; + inputs[1].value = '∞'; + } + this.filterInputEL!.value = '' + radioList![idx].checked = true; if (this.getCallTransfer) { this.getCallTransfer({ @@ -490,9 +505,8 @@ export class TabPaneFilter extends BaseElement { let html = ``; this.cutList!.forEach((a, b) => { html += `
- +
${a.name}
`; }); @@ -524,9 +538,8 @@ export class TabPaneFilter extends BaseElement { let html = ``; this.libraryList!.forEach((a, b) => { html += `
- +
${a.name}
`; }); diff --git a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts index 08967d61..98a48f76 100644 --- a/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts +++ b/ide/src/trace/component/trace/sheet/hiperf/TabPerfProfile.ts @@ -38,7 +38,7 @@ export class TabpanePerfProfile extends BaseElement { private perfProfilerList: LitTable | null | undefined; private perfProfileProgressEL: LitProgressBar | null | undefined; private perfProfilerRightSource: Array = []; - private perfProfilerFilter: TabPaneFilter| null| undefined; + private perfProfilerFilter: TabPaneFilter | null | undefined; private perfProfilerDataSource: any[] = []; private perfProfileSortKey = 'weight'; private perfProfileSortType = 0; @@ -53,8 +53,6 @@ export class TabpanePerfProfile extends BaseElement { private perfProfileLoadingPage: any; private currentSelection: SelectionParam | undefined; - private filterDate: any; - set data(perfProfilerSelection: SelectionParam | any) { if (perfProfilerSelection === this.currentSelection) { return; @@ -80,40 +78,46 @@ export class TabpanePerfProfile extends BaseElement { getDataByWorkAndUpDateCanvas(perfProfilerSelection: SelectionParam) { const initWidth = this.clientWidth; this.initGetData(perfProfilerSelection, initWidth); - + + this.perfProfilerFilter!.getCallTransferData((data: any) => { - perfProfilerSelection.eventTypeId = data.eventTypeId !== 'count' ? data.eventTypeId : undefined; - this.initGetData(perfProfilerSelection, initWidth); + this.initGetData(perfProfilerSelection, initWidth, data.eventTypeId); }); } - initGetData(perfProfilerSelection: SelectionParam | any, initWidth: number): void { + initGetData(perfProfilerSelection: SelectionParam | any, initWidth: number, eventTypeId?: string): void { let perfProfileArgs: any[] = []; + if (eventTypeId) { perfProfileArgs.push({ + funcName: 'setEventTypeId', + funcArgs: [eventTypeId !== 'count' ? eventTypeId : undefined], + }) + } + perfProfileArgs.push( + { funcName: 'setSearchValue', funcArgs: [''], }, { funcName: 'getCurrentDataFromDb', funcArgs: [perfProfilerSelection], - },) - this.getDataByWorker(perfProfileArgs, (results: any[]) => { - this.setPerfProfilerLeftTableData(results); - this.perfProfilerList!.recycleDataSource = []; - if(perfProfilerSelection.eventTypeId && perfProfilerSelection.eventTypeId !== 'count') { - this.perfProfileFrameChart!.mode = ChartMode.EventCount; - }else{ - this.perfProfileFrameChart!.mode = ChartMode.Count; - } - - this.perfProfileFrameChart?.updateCanvas(true, initWidth); - this.perfProfileFrameChart!.data = this.perfProfilerDataSource; - this.switchFlameChart(); - this.perfProfilerFilter!.icon = 'block'; - if(this.filterDate != undefined) { - this.refreshAllNode(this.filterDate); - } }) + + this.getDataByWorker(perfProfileArgs, (results: any[]) => { + this.setPerfProfilerLeftTableData(results); + this.perfProfilerList!.recycleDataSource = []; + if (eventTypeId && eventTypeId !== 'count') { + this.perfProfileFrameChart!.mode = ChartMode.EventCount; + } else { + this.perfProfileFrameChart!.mode = ChartMode.Count; + } + + this.perfProfileFrameChart?.updateCanvas(true, initWidth); + this.perfProfileFrameChart!.data = this.perfProfilerDataSource; + this.switchFlameChart(); + this.perfProfilerFilter!.icon = 'block'; + }) + } getParentTree( @@ -380,14 +384,6 @@ export class TabpanePerfProfile extends BaseElement { this.perfProfilerFilter!.getDataLibrary(filterFunc); this.perfProfilerFilter!.getDataMining(filterFunc); this.perfProfilerFilter!.getCallTreeData((data: any) => { - if(data.checks[0] === false && data.checks[1] === false){ - this.filterDate = undefined; - } else { - this.filterDate = { - ...this.perfProfilerFilter!.getFilterTreeData(), - callTree: data.checks, - }; - } if (data.value === 0) { this.refreshAllNode({ ...this.perfProfilerFilter!.getFilterTreeData(), -- Gitee From 4f7835f8e5fbd29512f12f86a5aa9a9f4b30025d Mon Sep 17 00:00:00 2001 From: "wupoli3@huawei.com" Date: Fri, 27 Oct 2023 10:13:13 +0800 Subject: [PATCH 4/4] =?UTF-8?q?hiperf=20=E9=80=89=E4=B8=ADevent=20TYpe=20?= =?UTF-8?q?=E5=92=8C=E5=85=B6=E4=BB=96=E7=AD=9B=E9=80=89=E9=A1=B9=E8=81=94?= =?UTF-8?q?=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wupoli3@huawei.com --- ide/src/trace/bean/BoxSelection.ts | 3 --- .../database/logic-worker/ProcedureLogicWorkerPerf.ts | 7 +++++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/ide/src/trace/bean/BoxSelection.ts b/ide/src/trace/bean/BoxSelection.ts index ef7af45f..3a95a14c 100644 --- a/ide/src/trace/bean/BoxSelection.ts +++ b/ide/src/trace/bean/BoxSelection.ts @@ -40,9 +40,6 @@ export class SelectionParam { isCurrentPane: boolean = false; startup: boolean = false; staticInit: boolean = false; - eventTypeId: string = ''; - - cpus: Array = []; cpuStateRowsId: Array = []; diff --git a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts index 7418a223..5aefb8e1 100644 --- a/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts +++ b/ide/src/trace/database/logic-worker/ProcedureLogicWorkerPerf.ts @@ -36,6 +36,7 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { currentEventId: string = ''; isAnalysis: boolean = false; isPerfBottomUp: boolean = false; + eventTypeId: string = ''; private dataCache = DataCache.getInstance(); @@ -194,8 +195,7 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { let arg = `${cpuFilter}${processFilter}${threadFilter}`.substring(3); filterSql = ` and (${arg})`; } - const eventTypeId = selectionParam.eventTypeId; - eventTypeFilter = eventTypeId ? ` and s.event_type_id = ${eventTypeId}` : ''; + eventTypeFilter = this.eventTypeId ? ` and s.event_type_id = ${this.eventTypeId}` : ''; filterSql += eventTypeFilter; this.queryData( this.currentEventId, @@ -753,6 +753,9 @@ export class ProcedureLogicWorkerPerf extends LogicHandler { case 'splitTree': this.splitPerfTree(this.allProcess, item.funcArgs[0], item.funcArgs[1], item.funcArgs[2]); break; + case 'setEventTypeId': + this.eventTypeId = item.funcArgs[0]; + break; case 'setSearchValue': this.searchValue = item.funcArgs[0]; break; -- Gitee