diff --git a/ide/src/base-ui/chart/pie/LitChartPie.ts b/ide/src/base-ui/chart/pie/LitChartPie.ts index ebca8cfee0e0886cda422c6bfb7ca5b2b1217804..560893146b932e392852f614dc61fb57d4416385 100644 --- a/ide/src/base-ui/chart/pie/LitChartPie.ts +++ b/ide/src/base-ui/chart/pie/LitChartPie.ts @@ -155,10 +155,10 @@ export class LitChartPie extends BaseElement { return; } this.litChartPieConfig = litChartPieCfg; - (this.shadowRoot!.querySelector('#root') as HTMLDivElement).className = - litChartPieCfg && litChartPieCfg.data.length > 0 ? 'bg_hasdata' : 'bg_nodata'; this.measure(); this.render(); + (this.shadowRoot!.querySelector('#root') as HTMLDivElement).className = + this.data.length > 0 ? 'bg_hasdata' : 'bg_nodata'; } set dataSource(litChartPieArr: unknown[]) { @@ -214,7 +214,7 @@ export class LitChartPie extends BaseElement { 0 ); let labelArray: string[] = []; - this.litChartPieConfig.data.forEach((pieItem, index) => { + sum && this.litChartPieConfig.data.forEach((pieItem, index) => { let item: Sector = { id: `id-${Utils.uuid()}`, color: this.litChartPieConfig!.label.color diff --git a/ide/src/base-ui/chart/scatter/LitChartScatter.ts b/ide/src/base-ui/chart/scatter/LitChartScatter.ts index a18416fb70b98b7164db4319081427af5a1c6ca4..b962e9f8009b20971b9d394cb2aa66ef2d2c3f65 100644 --- a/ide/src/base-ui/chart/scatter/LitChartScatter.ts +++ b/ide/src/base-ui/chart/scatter/LitChartScatter.ts @@ -411,6 +411,9 @@ export class LitChartScatter extends BaseElement { } else if (canvasHeight - data.y < miniHeight && canvasWidth - data.x > minWidth) { this.scatterTipEL!.style.top = `${data.y - miniHeight}px`; this.scatterTipEL!.style.left = `${data.x}px`; + } else if (canvasWidth - data.x < minWidth && canvasHeight - data.y < miniHeight) { + this.scatterTipEL!.style.top = `${data.y - miniHeight}px`; + this.scatterTipEL!.style.left = `${data.x - minWidth}px`; } else { this.scatterTipEL!.style.top = `${data.y}px`; this.scatterTipEL!.style.left = `${data.x}px`; diff --git a/ide/src/base-ui/menu/LitMainMenu.ts b/ide/src/base-ui/menu/LitMainMenu.ts index a89732b0e114c1d443862909abbfc85b892615e4..1410109dac9177b65d88a1d6a4cd6f488af3c08e 100644 --- a/ide/src/base-ui/menu/LitMainMenu.ts +++ b/ide/src/base-ui/menu/LitMainMenu.ts @@ -185,25 +185,22 @@ export class LitMainMenu extends BaseElement { } // @ts-ignore if (v.fileChoose) { th.setAttribute('file', ''); - th.addEventListener('file-change', (e) => { + th.addEventListener('file-change', (e): void => { // @ts-ignore - if (v.fileHandler && !th.disabled) { - // @ts-ignore + if (v.fileHandler && !th.disabled) { // @ts-ignore v.fileHandler(e); } }); } else { th.removeAttribute('file'); - th.addEventListener('click', (e) => { + th.addEventListener('click', (e): void => { // @ts-ignore - if (v.clickHandler && !th.disabled) { - // @ts-ignore + if (v.clickHandler && !th.disabled) { // @ts-ignore v.clickHandler(v); } }); } // @ts-ignore - if (v.disabled !== undefined) { - // @ts-ignore + if (v.disabled !== undefined) { // @ts-ignore th.disabled = v.disabled; } secondGroup.appendChild(th); @@ -246,7 +243,12 @@ export class LitMainMenu extends BaseElement { item.clickHandler(item); } }); - } // @ts-ignore + } + // @ts-ignore + if (item.multi) { + th.multi = true; + } + // @ts-ignore if (item.disabled !== undefined) { // @ts-ignore th.disabled = item.disabled; @@ -294,7 +296,7 @@ export interface MenuGroup { describe: string; second: boolean; collapsed: boolean; - children: unknown; + children: MenuItem[]; icon: string; } @@ -302,6 +304,7 @@ export interface MenuItem { icon: string; title: string; fileModel?: string; + multi?: boolean; disabled?: boolean; fileChoose?: boolean; clickHandler?: Function; diff --git a/ide/src/base-ui/menu/LitMainMenuGroup.ts b/ide/src/base-ui/menu/LitMainMenuGroup.ts index d2df1984f16a6ef93a8cada1b7644156ce3e2178..1b8c9fb9a4d1f23e38ae633ff420dd9cb9efccc2 100644 --- a/ide/src/base-ui/menu/LitMainMenuGroup.ts +++ b/ide/src/base-ui/menu/LitMainMenuGroup.ts @@ -71,7 +71,7 @@ const initHtmlStyle: string = ` :host([describe]) .group-describe{ padding: 4px 24px 0 24px; color: #999 !important; - font-size: 1rem; + font-size: 12px; } :host([describe]) .group-name{ margin-top: 10px; diff --git a/ide/src/base-ui/menu/LitMainMenuItem.ts b/ide/src/base-ui/menu/LitMainMenuItem.ts index a4c1d9088db4071a833769534889ae6c5b7c268a..813c3988ff8d420af5807f4ea400e8ea555eaf53 100644 --- a/ide/src/base-ui/menu/LitMainMenuItem.ts +++ b/ide/src/base-ui/menu/LitMainMenuItem.ts @@ -91,7 +91,7 @@ export class LitMainMenuItem extends BaseElement { private fileEL: HTMLInputElement | undefined | null; static get observedAttributes(): string[] { - return ['title', 'icon', 'file', 'disabled']; + return ['title', 'icon', 'file', 'multi', 'disabled']; } get title(): string { @@ -102,6 +102,18 @@ export class LitMainMenuItem extends BaseElement { this.setAttribute('title', val); } + get multi(): boolean { + return this.hasAttribute('multi'); + } + + set multi(val: boolean) { + if (val) { + this.setAttribute('multi', ''); + } else { + this.removeAttribute('multi'); + } + } + get disabled(): boolean { return this.hasAttribute('disabled'); } @@ -150,7 +162,7 @@ export class LitMainMenuItem extends BaseElement { this.fileEL!.addEventListener('change', (event) => { let files = this.fileEL!.files; if (files && files.length > 0) { - if (this.titleEl!.textContent!.includes('long trace')) { + if (this.titleEl!.textContent!.includes('long trace') || this.multi) { this.dispatchEvent( new CustomEvent('file-change', { // @ts-ignore @@ -212,6 +224,17 @@ export class LitMainMenuItem extends BaseElement { } } break; + case 'multi': + if (this.hasAttribute('multi')) { + this.fileEL!.setAttribute('multiple', ''); + this.fileEL!.setAttribute('webkitdirectory', ''); + this.fileEL!.setAttribute('directory', ''); + } else { + this.fileEL!.removeAttribute('multiple'); + this.fileEL!.removeAttribute('webkitdirectory'); + this.fileEL!.removeAttribute('directory'); + } + break; case 'icon': if (this.iconEl) { this.iconEl.setAttribute('name', newValue); diff --git a/ide/src/base-ui/radiobox/LitRadioBox.ts b/ide/src/base-ui/radiobox/LitRadioBox.ts index 93e003a7aaffc06694c7efc83c911d12c83a14f0..00e25dcf856d54417d4a3b61596788855a8fa3b3 100644 --- a/ide/src/base-ui/radiobox/LitRadioBox.ts +++ b/ide/src/base-ui/radiobox/LitRadioBox.ts @@ -228,7 +228,7 @@ export class LitRadioBox extends BaseElement { this.radio = this.shadowRoot?.getElementById('radio') as HTMLInputElement; this.checked = this.checked; this.radio.addEventListener('change', () => { - const selector = this.group ? 'lit-radio[checked]' : 'lit-radio[name="${this.name}"][checked]'; + const selector = this.group ? 'lit-radio[checked]' : `lit-radio[name='${this.name}'][checked]`; const siblingNode = this.parent?.querySelector(selector) as LitRadioBox; if (siblingNode) { siblingNode.checked = false; diff --git a/ide/src/base-ui/select/LitSelect.ts b/ide/src/base-ui/select/LitSelect.ts index 505c018625e32e6a7d892adc6a2b162b6b6227d2..2623052e730b968a689b6cd4d6c3c240182d478c 100644 --- a/ide/src/base-ui/select/LitSelect.ts +++ b/ide/src/base-ui/select/LitSelect.ts @@ -29,6 +29,7 @@ export class LitSelect extends BaseElement { private bodyEl: unknown; private selectSearchEl: unknown; private selectMultipleRootEl: unknown; + private currentSelectedValue: string = ''; static get observedAttributes(): string[] { return [ @@ -166,27 +167,27 @@ export class LitSelect extends BaseElement { if (selectDataSource.length > 0) { // @ts-ignore this.bodyEl!.style.display = 'flex'; - this.querySelectorAll('lit-select-option').forEach((a) => this.removeChild(a)); // @ts-ignore + this.querySelectorAll('lit-select-option').forEach((a) => { + this.removeChild(a) + }); + // @ts-ignore selectDataSource.forEach((dateSourceBean: unknown) => { - let selectOption = document.createElement('lit-select-option'); // @ts-ignore - if (dateSourceBean.name) { - // @ts-ignore - selectOption.textContent = dateSourceBean.name; // @ts-ignore - selectOption.setAttribute('value', dateSourceBean.name); - } else if (dateSourceBean) { - // @ts-ignore - selectOption.textContent = dateSourceBean; // @ts-ignore - selectOption.setAttribute('value', dateSourceBean); - if ( - this.selectItem !== '' && - this.selectItem === this.value && - this.selectItem === selectOption.textContent - ) { + if (dateSourceBean) { + let selectOption = document.createElement('lit-select-option'); + let optionData = { + // @ts-ignore + value: dateSourceBean.value ? dateSourceBean.value : dateSourceBean.name || dateSourceBean, // @ts-ignore + name: dateSourceBean.name ? dateSourceBean.name : dateSourceBean, + }; + selectOption.textContent = optionData.name; + selectOption.setAttribute('value', optionData.value); + if (this.currentSelectedValue === optionData.value) { selectOption.setAttribute('selected', ''); - } // @ts-ignore + } + // @ts-ignore this.selectInputEl!.value = ''; + this.append(selectOption); } - this.append(selectOption); }); this.initOptions(); } else { @@ -220,8 +221,8 @@ export class LitSelect extends BaseElement { ${selectHtmlStr(this.listHeight)}
- +
@@ -251,7 +252,7 @@ export class LitSelect extends BaseElement { icon.name = 'close'; let span = document.createElement('span'); // @ts-ignore tag.classList.add('tag'); // @ts-ignore - span.dataset.value = value; // @ts-ignore + span.dataset['value'] = value; // @ts-ignore span.textContent = text; // @ts-ignore tag.append(span); // @ts-ignore tag.append(icon); // @ts-ignore @@ -267,9 +268,9 @@ export class LitSelect extends BaseElement { ev.stopPropagation(); }; // @ts-ignore tag.value = value; // @ts-ignore - tag.dataset.value = value; // @ts-ignore + tag.dataset['value'] = value; // @ts-ignore tag.text = text; // @ts-ignore - tag.dataset.text = text; // @ts-ignore + tag.dataset['text'] = text; // @ts-ignore return tag; } @@ -555,21 +556,31 @@ export class LitSelect extends BaseElement { } // @ts-ignore this.selectInputEl.focus(); } else { - [...this.querySelectorAll('lit-select-option')].forEach((a) => a.removeAttribute('selected')); + [...this.querySelectorAll('lit-select-option')].forEach((item) => { + if (item.hasAttribute('selected')) { + this.currentSelectedValue = item.getAttribute('value') || ''; + } + item.removeAttribute('selected'); + }); this.blur(); // @ts-ignore this.bodyEl!.style.display = 'none'; // @ts-ignore this.selectInputEl.value = e.detail.text; } - if (a.hasAttribute('selected')) { + if (a.getAttribute('value') === this.currentSelectedValue) { a.removeAttribute('selected'); + this.currentSelectedValue = ''; + // @ts-ignore + this.selectInputEl.value = ''; + // @ts-ignore + this.selectInputEl.placeholder = this.defaultPlaceholder; } else { + this.currentSelectedValue = a.getAttribute('value') || ''; a.setAttribute('selected', ''); - this.selectItem = a.textContent!; } + this.value = this.currentSelectedValue; // @ts-ignore - this.value = e.detail.value; // @ts-ignore - this.dispatchEvent(new CustomEvent('change', { detail: e.detail })); //向外层派发change事件,返回当前选中项 + this.dispatchEvent(new CustomEvent('change', { detail: { selectValue: this.currentSelectedValue, text: e.detail.text } })); //向外层派发change事件,返回当前选中项 }); } @@ -590,15 +601,16 @@ export class LitSelect extends BaseElement { }); } - disconnectedCallback(): void { } + disconnectedCallback(): void {} - adoptedCallback(): void { } + adoptedCallback(): void {} attributeChangedCallback(name: unknown, oldValue: unknown, newValue: unknown): void { if (name === 'value' && this.selectInputEl) { if (newValue) { [...this.querySelectorAll('lit-select-option')].forEach((a) => { if (a.getAttribute('value') === newValue) { + this.currentSelectedValue = a.getAttribute('value') || ''; a.setAttribute('selected', ''); // @ts-ignore this.selectInputEl.value = a.textContent; } else { diff --git a/ide/src/base-ui/slicer/lit-slicer.ts b/ide/src/base-ui/slicer/lit-slicer.ts index 54c013635ef4df915e3ee5cd529a967d809d2c59..e9a1bc3875fcc3bbfadc31d03e72158269d2db74 100644 --- a/ide/src/base-ui/slicer/lit-slicer.ts +++ b/ide/src/base-ui/slicer/lit-slicer.ts @@ -70,6 +70,7 @@ export class LitSlicerTrack extends HTMLElement { private line: HTMLElement | null | undefined; private draging: boolean = false; private normalWidth: number = 0; + private rightWidth: number = 0; static get observedAttributes(): string[] { return ['range-left', 'range-right']; @@ -124,17 +125,22 @@ export class LitSlicerTrack extends HTMLElement { if (parentDirection.startsWith('h')) { this.line!.className = 'rootH'; let previousElementSibling = this.previousElementSibling as HTMLElement; + let nextElementSibling = this.nextElementSibling as HTMLElement; let preX: number; let preY: number; let preWidth: number; + let nextWidth: number; this.line!.onmousedown = (e): void => { this.draging = true; preX = e.pageX; preWidth = previousElementSibling!.clientWidth; + nextWidth = nextElementSibling!.clientWidth; if (this.normalWidth === 0) { this.normalWidth = previousElementSibling!.clientWidth; + this.rightWidth = nextElementSibling!.clientWidth; } previousElementSibling!.style.width = preWidth + 'px'; + nextElementSibling!.style.width = nextWidth + 'px'; document.body.style.userSelect = 'none'; document.body.style.webkitUserSelect = 'none'; // @ts-ignore @@ -146,6 +152,7 @@ export class LitSlicerTrack extends HTMLElement { preWidth + e1.pageX - preX <= this.normalWidth + this.rangeRight ) { previousElementSibling!.style.width = preWidth + e1.pageX - preX + 'px'; + nextElementSibling!.style.width = nextWidth + preX - e1.pageX + 'px'; } } }; diff --git a/ide/src/base-ui/table/LitPageTable.ts b/ide/src/base-ui/table/LitPageTable.ts index 0031990ba9df9c3de44848f2346f0be0212df84f..c9e0540f200900fd305fa67540fa828cb206654c 100644 --- a/ide/src/base-ui/table/LitPageTable.ts +++ b/ide/src/base-ui/table/LitPageTable.ts @@ -1341,7 +1341,10 @@ export class LitPageTable extends BaseElement { if (isSelected) { // @ts-ignore this.clearAllSelection(rowObject.data); - } // @ts-ignore + } + // @ts-ignore + rowObject.data.isSelected = true; + // @ts-ignore this.setSelectedRow(rowObject.data.isSelected, elements); }, }, diff --git a/ide/src/base-ui/table/lit-table.ts b/ide/src/base-ui/table/lit-table.ts index 330eb8a8212ace06fd76bdff46259edd67f8692d..8a3111ec6b5aae597674c4357abaf6574a9004ec 100644 --- a/ide/src/base-ui/table/lit-table.ts +++ b/ide/src/base-ui/table/lit-table.ts @@ -612,7 +612,7 @@ export class LitTable extends HTMLElement { totalWidth += parseInt(it); }); totalWidth = Math.max(totalWidth, this.shadowRoot!.querySelector('.table')!.scrollWidth); - this.gridTemplateColumns[this.gridTemplateColumns.length - 1] = `${totalWidth - lastNode.offsetLeft - 1}px`; + this.gridTemplateColumns[this.gridTemplateColumns.length - 1] = `${totalWidth - lastNode.offsetLeft}px`; header.style.gridTemplateColumns = this.gridTemplateColumns.join(' '); let preNode = header.childNodes.item(this.resizeColumnIndex - 1) as HTMLDivElement; preNode.style.width = `${preWidth}px`; @@ -634,17 +634,15 @@ export class LitTable extends HTMLElement { adoptedCallback(): void {} getCheckRows(): unknown[] { - return ( - [...this.shadowRoot!.querySelectorAll('div[class=tr][checked]')] - // @ts-ignore - .map((a) => (a as HTMLDivElement).data) - .map((a) => { - if ('children' in a) { - delete a.children; - } - return a; - }) - ); + // @ts-ignore + return [...this.shadowRoot!.querySelectorAll('div[class=tr][checked]')] // @ts-ignore + .map((a) => (a as unknown).data) + .map((a) => { + if ('children' in a) { + delete a['children']; + } + return a; + }); } deleteRowsCondition(fn: unknown): void { diff --git a/ide/src/base-ui/tabs/lit-tabs.ts b/ide/src/base-ui/tabs/lit-tabs.ts index 75935c8f16a7ac1aea3e34401dbeae8a3be5657b..b296b9ea0352d7ad8249e998caa7754b8692af71 100644 --- a/ide/src/base-ui/tabs/lit-tabs.ts +++ b/ide/src/base-ui/tabs/lit-tabs.ts @@ -167,6 +167,7 @@ export class LitTabs extends HTMLElement { } connectedCallback(): void { + let that = this; this.tabPos = {}; this.nav = this.shadowRoot?.querySelector('#nav'); this.line = this.shadowRoot?.querySelector('#tab-line'); diff --git a/ide/src/base-ui/tree/LitTree.ts b/ide/src/base-ui/tree/LitTree.ts index 257e3089de30cd3a841d5c1418d3357d486f16ee..a23c3c21f631871aaf0e28b7e996d0bbc39ed88a 100644 --- a/ide/src/base-ui/tree/LitTree.ts +++ b/ide/src/base-ui/tree/LitTree.ts @@ -336,21 +336,24 @@ export class LitTree extends BaseElement { onDrag(e: MouseEvent): void {} - onDragStart(ev: MouseEvent): void { + onDragStart(ev: MouseEvent): undefined { this.srcDragElement = ev.target; (ev.target! as LitTreeNode).open = 'true'; (ev.target! as LitTreeNode).autoExpand(); + return undefined; } - onDragEnd(ev: MouseEvent): void { + onDragEnd(ev: MouseEvent): undefined { this.srcDragElement = null; + return undefined; } - onDragEnter(ev: MouseEvent): void { + onDragEnter(ev: MouseEvent): undefined { (ev.target as LitTreeNode).style.backgroundColor = '#42b98333'; + return undefined; } - onDragOver(ev: MouseEvent): void { + onDragOver(ev: MouseEvent): undefined { let node = ev.target as LitTreeNode; //@ts-ignore if (this.srcDragElement.data.key === node.data!.key) { return; @@ -369,14 +372,16 @@ export class LitTree extends BaseElement { this.dragDirection = 'bottom'; node.drawLine('bottom'); } + return undefined; } - onDragLeave(ev: MouseEvent): void { + onDragLeave(ev: MouseEvent): undefined { (ev.target as LitTreeNode).style.backgroundColor = '#ffffff00'; (ev.target as LitTreeNode).drawLine(''); + return undefined; } - onDrop(ev: MouseEvent): void { + onDrop(ev: MouseEvent): undefined { (ev.target as LitTreeNode).style.backgroundColor = '#ffffff00'; (ev.target as LitTreeNode).drawLine(''); //移动的不是node节点 而是上层的li节点 @@ -428,6 +433,7 @@ export class LitTree extends BaseElement { }) ); ev.stopPropagation(); + return undefined; } //移除treeData中指定的节点 通过key匹配 @@ -483,13 +489,13 @@ export class LitTree extends BaseElement { }; //在拖动目标上触发事件 (源元素) insertNode.ondrag = (ev): void => this.onDrag(ev); //元素正在拖动时触发 - insertNode.ondragstart = (ev): void => this.onDragStart(ev); //用户开始拖动元素时触发 - insertNode.ondragend = (ev): void => this.onDragEnd(ev); // 用户完成元素拖动后触发 + insertNode.ondragstart = (ev): undefined => this.onDragStart(ev); //用户开始拖动元素时触发 + insertNode.ondragend = (ev): undefined => this.onDragEnd(ev); // 用户完成元素拖动后触发 //释放目标时触发的事件: - insertNode.ondragenter = (ev): void => this.onDragEnter(ev); //当被鼠标拖动的对象进入其容器范围内时触发此事件 - insertNode.ondragover = (ev): void => this.onDragOver(ev); //当某被拖动的对象在另一对象容器范围内拖动时触发此事件 - insertNode.ondragleave = (ev): void => this.onDragLeave(ev); //当被鼠标拖动的对象离开其容器范围内时触发此事件 - insertNode.ondrop = (ev): void => this.onDrop(ev); //在一个拖动过程中,释放鼠标键时触发此事件 + insertNode.ondragenter = (ev): undefined => this.onDragEnter(ev); //当被鼠标拖动的对象进入其容器范围内时触发此事件 + insertNode.ondragover = (ev): undefined => this.onDragOver(ev); //当某被拖动的对象在另一对象容器范围内拖动时触发此事件 + insertNode.ondragleave = (ev): undefined => this.onDragLeave(ev); //当被鼠标拖动的对象离开其容器范围内时触发此事件 + insertNode.ondrop = (ev): undefined => this.onDrop(ev); //在一个拖动过程中,释放鼠标键时触发此事件 } } _insertNode(parent: unknown, a: unknown): void { @@ -508,13 +514,13 @@ export class LitTree extends BaseElement { }; //在拖动目标上触发事件 (源元素) insertNode.ondrag = (ev): void => this.onDrag(ev); //元素正在拖动时触发 - insertNode.ondragstart = (ev): void => this.onDragStart(ev); //用户开始拖动元素时触发 - insertNode.ondragend = (ev): void => this.onDragEnd(ev); // 用户完成元素拖动后触发 + insertNode.ondragstart = (ev): undefined => this.onDragStart(ev); //用户开始拖动元素时触发 + insertNode.ondragend = (ev): undefined => this.onDragEnd(ev); // 用户完成元素拖动后触发 //释放目标时触发的事件: - insertNode.ondragenter = (ev): void => this.onDragEnter(ev); //当被鼠标拖动的对象进入其容器范围内时触发此事件 - insertNode.ondragover = (ev): void => this.onDragOver(ev); //当某被拖动的对象在另一对象容器范围内拖动时触发此事件 - insertNode.ondragleave = (ev): void => this.onDragLeave(ev); //当被鼠标拖动的对象离开其容器范围内时触发此事件 - insertNode.ondrop = (ev): void => this.onDrop(ev); //在一个拖动过程中,释放鼠标键时触发此事件 + insertNode.ondragenter = (ev): undefined => this.onDragEnter(ev); //当被鼠标拖动的对象进入其容器范围内时触发此事件 + insertNode.ondragover = (ev): undefined => this.onDragOver(ev); //当某被拖动的对象在另一对象容器范围内拖动时触发此事件 + insertNode.ondragleave = (ev): undefined => this.onDragLeave(ev); //当被鼠标拖动的对象离开其容器范围内时触发此事件 + insertNode.ondrop = (ev): undefined => this.onDrop(ev); //在一个拖动过程中,释放鼠标键时触发此事件 } //@ts-ignore insertNode.selected = a.selected || false; //是否选中行 //@ts-ignore @@ -566,13 +572,13 @@ export class LitTree extends BaseElement { }; //在拖动目标上触发事件 (源元素) insertNode.ondrag = (ev): void => this.onDrag(ev); //元素正在拖动时触发 - insertNode.ondragstart = (ev): void => this.onDragStart(ev); //用户开始拖动元素时触发 - insertNode.ondragend = (ev): void => this.onDragEnd(ev); // 用户完成元素拖动后触发 + insertNode.ondragstart = (ev): undefined => this.onDragStart(ev); //用户开始拖动元素时触发 + insertNode.ondragend = (ev): undefined => this.onDragEnd(ev); // 用户完成元素拖动后触发 //释放目标时触发的事件: - insertNode.ondragenter = (ev): void => this.onDragEnter(ev); //当被鼠标拖动的对象进入其容器范围内时触发此事件 - insertNode.ondragover = (ev): void => this.onDragOver(ev); //当某被拖动的对象在另一对象容器范围内拖动时触发此事件 - insertNode.ondragleave = (ev): void => this.onDragLeave(ev); //当被鼠标拖动的对象离开其容器范围内时触发此事件 - insertNode.ondrop = (ev): void => this.onDrop(ev); //在一个拖动过程中,释放鼠标键时触发此事件 + insertNode.ondragenter = (ev): undefined => this.onDragEnter(ev); //当被鼠标拖动的对象进入其容器范围内时触发此事件 + insertNode.ondragover = (ev): undefined => this.onDragOver(ev); //当某被拖动的对象在另一对象容器范围内拖动时触发此事件 + insertNode.ondragleave = (ev): undefined => this.onDragLeave(ev); //当被鼠标拖动的对象离开其容器范围内时触发此事件 + insertNode.ondrop = (ev): undefined => this.onDrop(ev); //在一个拖动过程中,释放鼠标键时触发此事件 } } diff --git a/ide/src/base-ui/tree/LitTreeNode.html.ts b/ide/src/base-ui/tree/LitTreeNode.html.ts index 13a9850624112bd99b2cdc1a0d1b96b34a2d8368..395ac3e209f915a91425b35b689ef46afae98131 100644 --- a/ide/src/base-ui/tree/LitTreeNode.html.ts +++ b/ide/src/base-ui/tree/LitTreeNode.html.ts @@ -33,6 +33,10 @@ export const LitTreeNodeHtmlStyle = ` margin-left: 15px; } + :host([arrow]) #checkbox{ + display: none; + } + :host([top-depth]) #item{ margin-left: 0; } diff --git a/ide/src/base-ui/tree/LitTreeNode.ts b/ide/src/base-ui/tree/LitTreeNode.ts index 76a48b22c31dc24027caba100cb02e69d044e008..f35699220756b1f660a006061f033b2f11e00f0d 100644 --- a/ide/src/base-ui/tree/LitTreeNode.ts +++ b/ide/src/base-ui/tree/LitTreeNode.ts @@ -337,6 +337,9 @@ export class LitTreeNode extends BaseElement { this.checkboxElement.checked = this.hasAttribute('checked'); } } + if (this.arrow) { + this.checkboxElement!.style.display = 'none'; + } } //在node top top-right bottom bottom-right 画线条 diff --git a/ide/src/base-ui/utils/CSVFormater.ts b/ide/src/base-ui/utils/CSVFormater.ts index a65a5ad0ceb4d8df255483721aee931c97fe0c29..2f7326e9a3ca8400348a9428fa5ab3113d0a2dbf 100644 --- a/ide/src/base-ui/utils/CSVFormater.ts +++ b/ide/src/base-ui/utils/CSVFormater.ts @@ -15,11 +15,6 @@ export class JSONToCSV { static setCsvData(obj: unknown): void { - let browserType = this.browserType(); - // @ts-ignore - if (browserType.ie < 9) { - return; - } // @ts-ignore let data = obj.data; // @ts-ignore @@ -77,7 +72,7 @@ export class JSONToCSV { static getCsvStr(columns: unknown, obj: unknown, n: unknown, row: string): string { // @ts-ignore - columns.key.map(function (m: unknown, idx: number) { + columns.key.map((m: unknown, idx: number) => { let strItem: unknown = ''; // @ts-ignore if (obj.exportFormatter && obj.exportFormatter.has(m)) { @@ -122,10 +117,8 @@ export class JSONToCSV { let alink: unknown = document.createElement('a'); // @ts-ignore alink.id = 'csvDownloadLink'; - - const href = this.getDownloadUrl(csvData); // @ts-ignore - alink.href = href === '' ? null : href; + alink.href = this.getDownloadUrl(csvData); // @ts-ignore document.body.appendChild(alink); let linkDom: unknown = document.getElementById('csvDownloadLink'); @@ -157,7 +150,7 @@ export class JSONToCSV { } } - static getDownloadUrl(csvData: unknown): string { + static getDownloadUrl(csvData: unknown): string | undefined { // @ts-ignore if (window.Blob && window.URL && (window.URL as unknown).createObjectURL) { return URL.createObjectURL( @@ -166,22 +159,20 @@ export class JSONToCSV { }) ); } - return ''; } - static browserType(): { edge: string; ie: string } { - const type: { edge: string; ie: string } = { edge: '', ie: '' }; + static browserType(): { edge: string; ie: string; firefox: string; chrome: string; opera: string; + safari: string} { + const type = { edge: '', ie: '', firefox: '', chrome: '', opera: '', safari: '' }; const agent = navigator.userAgent.toLowerCase(); - const edgeMatch = agent.match(/edge/); - if (edgeMatch) { - type.edge = 'edge'; - } else { - const ieMatch = agent.match(/rv:([\d.]+)\) like gecko/) || agent.match(/msie ([\d.]+)/); - if (ieMatch) { - type.ie = ieMatch[1]; - } - } - + let has; + (has = agent.indexOf('edge') !== -1 ? (type.edge = 'edge') : + agent.match(/rv:([\d.]+)\) like gecko/)) ? (type.ie = has[1]) : + (has = agent.match(/msie ([\d.]+)/)) ? (type.ie = has[1]) : + (has = agent.match(/firefox\/([\d.]+)/)) ? (type.firefox = has[1]) : + (has = agent.match(/chrome\/([\d.]+)/)) ? (type.chrome = has[1]) : + (has = agent.match(/opera.([\d.]+)/)) ? (type.opera = has[1]) : + (has = agent.match(/version\/([\d.]+).*safari/)) ? (type.safari = has[1]) : 0; return type; } diff --git a/ide/src/command/CmdConstant.ts b/ide/src/command/CmdConstant.ts index b4d63aef1541478e27225b3ed5b57b2b57f1dfa0..0dda8b6883a5251f500798452469424ee49a0c94 100644 --- a/ide/src/command/CmdConstant.ts +++ b/ide/src/command/CmdConstant.ts @@ -39,7 +39,8 @@ export class CmdConstant { static CMD_GET_VERSION_DEVICES = 'hdc_std -t {0} shell param get const.product.software.version'; static CMD_GET_DEBUG_PROCESS_DEVICES = `hdc_std -t {0} shell netstat -anp |grep Panda |grep -v grep | sed \'s/.* \\([0-9]*\\)\\/.*/\\1/\' |xargs -r ps -A -opid,cmd`; - static CMD_CLEAR_LONG_FOLD = 'hdc_std shell rm -rf '; + static CMD_CLEAR_LONG_FOLD = 'hdc_std shell rm -r '; static CMD_MKDIR_LONG_FOLD = 'hdc_std shell mkdir '; static CMD_GET_LONG_FILES = 'hdc_std shell ls '; + static CMD_SET_FOLD_AUTHORITY = 'hdc_std shell chmod -R 777 '; } diff --git a/ide/src/doc/des_tables.html b/ide/src/doc/des_tables.html index 3cf6ddbe7f4bdee97a97d9bf3ff37a7db7d473bf..008014e12180b2a31f74947dd33f8362469c5e88 100644 --- a/ide/src/doc/des_tables.html +++ b/ide/src/doc/des_tables.html @@ -1,254 +1,540 @@ - - - des_tables - - - - + + + +
+

TraceStreamer数据表概述

+ +

+ TraceStreamer可以将trace数据源转化为易于理解和使用的数据库。用户可以通过SmartPerf界面直观的研究系统跟踪数据,也可在理解TraceStreamer生成的数据库的基础上,在TraceStreamer的交互模式或者Smartperf的数据库查询模式下,使用SQL查询语句自由组装查看用户关心的数据。下文将对TraceStreamer生成的数据库进行详细描述,给用户使用SQL查询系统跟踪数据提供帮助。 +

+

TraceStreamer输出的数据表分类

+ +
    +
  • 常规泳道图数据表
    + GitHub Logo +
  • +
  • native memory数据源相关表
    + GitHub Logo +
  • +
  • perf相关数据表
    + GitHub Logo +
  • +
  • hisysevent相关数据表
    + GitHub Logo +
  • +
+

TraceStreamer输出数据库包含以下表格

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名称作用
animation记录动效的响应时延和完成时延
app_name记录HiSysEvent事件的事件名与IDE部分事件的字段名为APPNAME中存放的相关信息的映射关系
app_startup记录了应用启动相关数据
args记录方法参数集合
bio_latency_sample记录IO操作相关方法调用,及调用栈数据
callstack + 记录调用堆栈和异步调用信息,其中depth,stack_id和parent_stack_id仅在非异步调用中有效。当cookid不为空时,为异步调用,此时callid为进程唯一号,否则为线程唯一号 +
clk_event_filter记录时钟相关的信息
clock_event_filter此结构用来维护时钟事件,cpu与唯一的ID做关联
clock_snapshot时钟号和时间,时钟名的映射表
cpu_measure_filtercpu事件过滤器表
cpu_usage记录CPU使用率事件
datasource_clockid数据源和时钟号的映射表
data_dict记录常用的字符串,将字符串和索引关联,降低程序运行的内存占用,用作辅助数据
data_type记录数据类型和typeId的关联关系
device_info记录设备分辨率和帧率
device_state记录设备屏幕亮度,蓝牙,位置,wifi,音乐,媒体等信息
diskio记录磁盘读写数据事件
dynamic_frame记录动效帧的分辨率和结束时间等
ebpf_callstack记录了采样相关信息
file_system_sample记录了调用栈的相关信息
frame_maps记录应用到RS的帧的映射关系
frame_slice记录RS(RenderService)和应用的帧渲染
gpu_slice记录RS的帧对应的gpu渲染时长
hidump记录FPS(Frame Per Second)数据
hisys_all_event记录了所有HiSysEvent事件相关的原始数据
hisys_event_measure记录了HiSysEvent事件相关数据,目前HiSysEvent事件包括了异常事件,IDE事件,器件状态事件
instant记录Sched_waking, sched_wakeup事件, 用作ThreadState表的上下文使用
irq记录中断相关事件
js_config记录了arkTs数据采集的相关配置
js_cpu_profiler_node记录了cpu profiler中node节点的数据
js_cpu_profiler_sample记录了cpu profiler中sample节点的数据
js_heap_edges记录了js内存数据类对象对应的成员的信息
js_heap_files记录了js内存数据的名称和时间
js_heap_info记录了js内存数据类型,如nodes和edges的字段类型和数据总数
js_heap_location记录了js内存location节点相关数据
js_heap_nodes记录了js内存类对象和其成员的对应关系
js_heap_sample记录了timeline模式下的时间轴信息
js_heap_string记录了js内存数据中的字符串
js_heap_trace_function_info记录了timeline模式下的调用栈的每个函数信息
js_heap_trace_node记录了timeline模式下的调用栈信息
live_process记录了一些实时的进程中执行的一些数据
log记录hilog打印日志数据
measure记录所有的计量值
measure_filter + 记录一个递增的filterid队列,所有其他的filter类型在获取过程中,均从此数据列表中获取下一个可用的filter_id并做记录 +
memory_ashmem记录了进程所占用的ashmem相关信息
memory_dma记录了进程占用的DMA内存相关信息
memory_process_gpu记录进程占用GPU内存相关信息
memory_window_gpu记录窗口占用GPU内存相关信息
meta记录执行解析操作相关的基本信息
native_hook记录堆内存申请与释放相关的数据
native_hook_frame记录堆内存申请与释放相关的调用栈
native_hook_statistic记录堆内存申请与释放相关的统计信息
network抓取网络信息传输时产生的一些相关信息
paged_memory_sample记录内存操作相关方法调用,及调用栈数据
perf_callchain记录Hiperf采样数据的调用栈信息
perf_files记录Hiperf工具采集到的函数符号表和文件名
perf_report记录Hiperf工具采集数据时的配置信息。包括抓取的事件类型,抓取数据的命令, + 抓数据时指定的进程名称 +
perf_sample记录Hiperf工具的采样信息
perf_thread记录Hiperf工具采集到的进程和线程数据
process记录所有的进程信息
process_measure保存进程的所有计量值
process_measure_filter将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id
raw此数据结构主要作为ThreadState的上下文使用,这张表是sched_waking,sched_wakup, + cpu_idle事件的原始记录 +
sched_slice此数据结构主要作为ThreadState的上下文使用,这张表是sched_switch事件的原始记录
smaps记录进程的内存消耗的相关信息采样
stat + 此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解 +
static_initalize记录了so初始化相关数据
memory_cpu记录了cpu内存数据
memory_profile记录了sys/kernel/debug/mali0/ctx/$(pidof xxx)/mem_profile节点相关数据
memory_rs_image记录了hidumper抓取的界面的内存大小相关数据
symbols记录系统调用名称和其函数指针的对应关系,trace中用addr来映射function_name来节省存储空间
syscall记录用户空间函数与内核空间函数相互调用记录
sys_event_filter记录所有的filter
sys_mem_measure记录了所有的系统内存相关的测量信息
task_pool记录任务池相关数据,与callstack表相关联
thread记录所有的线程信息
thread_state记录线程状态信息
trace_config记录trace数据源,proto的事件-plugin与其process_name
trace_range记录ftrace数据与其他类型数据的时间交集,供前端展示数据时使用
+

表与事件来源

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
表名称事件源插件名备注
animation-ftrace-plugin记录动效的响应时延和完成时延
app_name-hisysevent-pluginJSON数据源
args-ftrace-plugin配合callstack使用
bio_latency_sample--IO操作相关方法调用,及调用栈数据
callstack-ftrace-plugin异步或非异步的调用
cpu_measure_filter-ftrace-plugincpu跟踪器,cpu频率等
cpu_usage-cpu-plugincpu使用率
data_dict通用的-所有字符串的记录
data_type通用的-辅助表
device_info-ftrace-plugin记录设备分辨率和帧率
device_state通用的hisysevent-plugin记录设备屏幕亮度,蓝牙,位置等信息
dynamic_frame-ftrace-plugin动效帧的分辨率和结束时间等
ebpf_callstack--磁盘读写相关的数据
file_system_callstack--ebpf文件系统
file_system_sample--ebpf文件系统
frame_maps-ftrace-plugin帧渲染数据,app到RS的映射
frame_slice-ftrace-plugin帧渲染数据
gpu_slice-ftrace-plugingpu渲染时长
hidump-hidump-pluginFPS数据
hisys_all_event-hisysevent-pluginJSON数据源
hisys_event_measure-hisysevent-pluginJSON数据源
instant-ftrace-pluginwaking和wakeup事件
irq-ftrace-plugin记录中断事件
js_config-arkts-pluginarkTs数据采集的配置
js_cpu_profiler_node-arkts-plugin记录了cpu profiler中node节点的数据
js_cpu_profiler_sample-arkts-plugin记录了cpu profiler中sample节点的数据
js_heap_edges-arkts-pluginjs内存数据
js_heap_files-arkts-pluginjs内存数据
js_heap_info-arkts-pluginjs内存数据
js_heap_location-arkts-pluginjs内存数据
js_heap_nodes-arkts-pluginjs内存数据
js_heap_sample-arkts-pluginjs内存数据
js_heap_string-arkts-pluginjs内存数据
js_heap_trace_function_info-arkts-pluginjs内存数据
js_heap_trace_node-arkts-pluginjs内存数据
app_startup-ftrace-plugin应用启动数据
static_initalize-ftrace-pluginso初始化数据
memory_cpu-hidumper-plugincpu内存数据
memory_profile-hidumper-plugin/sys/kernel/debug/mali0/ctx/$(pidof xxx)/mem_profile节点相关数据
memory_rs_image-hidumper-pluginhidumper抓取的界面内存大小数据
live_process-process-pluginMonitor数据
network-network-pluginMonitor数据
diskio-diskio-pluginMonitor数据
log-hilog-plugin系统日志
measure通用的-系统中的计量值(数值型)
measure_filter通用的-计量值的查询辅助表
memory_ashmem-memory-plugin进程所占用ashmem相关信息
memory_dma-memory-plugin进程占用的DMA内存相关信息
memory_process_gpu-memory-plugin进程占用GPU内存相关信息
memory_window_gpu-memory-plugin窗口占用GPU内存相关信息
meta通用的-记录解析现场数据(解析时间,数据类型,解析工具等)
native_hook-nativehook/hookdaemonmalloc && mmap内存数据
native_hook_frame-nativehook/hookdaemonnative_hook调用栈数据
native_hook_statistic-nativehook/hookdaemonmalloc && mmap统计数据
paged_memory_sample--网络数据传输相关的信息
perf_callchain-perf-pluginperf数据(非插件模式)
perf_files--perf数据(非插件模式)
perf_report--perf数据(非插件模式)
perf_sample--perf数据(非插件模式)
perf_thread--perf数据(非插件模式)
process-ftrace-plugin进程信息
process_measure-ftrace-plugin进程内存
process_measure_filter-ftrace-pluginprocess_measure的辅助表
raw-ftrace-plugin线程唤醒信息
sched_slice-ftrace-plugin配合线程状态表使用,sched_switch的原始数据
smaps-memory-plugin进程的内存消耗
stat通用的-记录不同种类数据的数据量
symbols-ftrace-plugin符号表(地址到字符串的映射)
syscall-ftrace-plugin系统调用 sys_enter/exit
sys_event_filter-ftrace-plugin
sys_mem_measure-memory-plugin系统内存
thread通用的-线程信息(常用)
thread_state通用的ftrace-plugin线程调度图(常用)
trace_config通用的hisysevent-plugin记录trace数据源
trace_range通用的-trace数据的时长
clock_snapshot通用的通用的时钟号和时间,时钟名的映射表
datasource_clockid通用的通用的数据源和时钟号的映射表
task_pool--任务池数据
+

表格关系图

+ +
+

进程表与线程表关系

+ +

当一个进程或者线程结束后,系统可能再次将该进程号或者线程号分配给其他进程或者线程,造成一个进程号或线程号代表多个进程或线程的情况。
+ Process和Thread表中的id字段可以唯一标识进程和线程。process表中的id在其他表中用作ipid字段。thread表中的id在其他表中用作itid字段。
+ thread表通过ipid字段关联process表的id字段,可以查询线程归属进程。
+ GitHub Logo +

+

查询举例

+ +
    +
  • 已知pid = 123,查看当前进程下的所有线程信息,可以使用如下SQL语句:
    + select thread.* from thread, process where process.pid = 123 and + thread.ipid = process.id +
  • +
+

线程表与线程运行状态表关系图

+

thread_state表记录所有线程的运行状态信息,包含ts(状态起始时间),dur(状态持续时间),cpu, + itid, state(线程状态)。 thread表的id字段与thread_state表的itid字段相关联。
+ GitHub Logo +

+

查询举例

+
    +
  • 已知tid = 123, 查看当前线程的所有运行状态信息,可以使用如下SQL语句:
    + select thread_state.* from thread, thread_state where thread.tid = 123 + and thread.id = thread_state.itid +
  • +
+

堆内存数据变化表关系图

+ +

+ native_hook表记录堆内存申请(AllocEvent)和释放(FreeEvent)数据。native_hook表通过ipid和itid字段分别与process和thread表的id字段关联,通过callchain_id与native_hook_frame表的callchain_id字段相关联。
+ native_hook表字段解释如下:

+
    +
  • callchain_id:唯一标识一次堆内存申请或释放, + 通过与native_hook_frame表关联可以拿到当前申请或释放的函数调用堆栈。 +
  • +
  • addr:堆内存申请/释放的地址。
  • +
  • native_hook_size:堆内存申请/释放的大小。
  • +
+

+ native_hook_frame表记录内存申请/释放的调用堆栈。通过callchain_id区分一组调用堆栈,depth为堆栈深度,depth为0时,表示当前行为栈顶数据。
+ GitHub Logo +

+

+ native_hook_statistic表记录内存申请/释放的统计信息。通过callchain_id区分一组调用堆栈。每个统计事件将记录当前事件的callchain_id,并统计当前调用栈内存分配/释放的总次数和总大小。
+ GitHub Logo +

+

查询举例

+ +
    +
  • 已知tid = 123,查看当前线程的所有堆内存变化信息,可以使用如下SQL语句:
    + select native_hook.* from thread, native_hook where thread.tid = 123 + and thread.id = native_hook.itid +
  • +
  • 已知callchain_id = 1, 查看当前内存变化调用堆栈
    + select * from native_hook_frame where callchain_id = 1 +
  • +
  • 已知callchain_id = 1, 查看当前内存变化调用堆栈对应的统计信息
    + select * from native_hook_statistic where callchain_id = 1 +
  • +
+

日志表与进程线程表关系图

+

log表记录日志信息。可以根据seq字段的连续性,来判断是否存在日志丢失的情况。
+ GitHub Logo +

+

查询举例

+
    +
  • 已知tid = 123,查看当前线程的所有error级别的日志,可以使用如下SQL语句:
    + select * from log where tid = 123 and level = "error" +
  • +
+

perf表之间关系图

+ +
    +
  • perf_report:此表记录Hiperf工具采集数据时的配置信息。
  • +
  • perf_thread:此表记录hiperf采集到的进程和线程数据。
  • +
  • + perf_sample:此表中记录Hiperf工具的采样信息。id唯一表示一次采样记录,通过callchain_id与perf_callchain表中的callchain_id字段相关联。thread_id为线程号,与perf_thread表中的thread_id字段相关联。event_type_id为当前采样的事件类型id,与perf_report表中的id字段相关联。 +
  • +
  • perf_callchain:此表格记录的是调用栈信息。
  • +
  • + Perf_files:此表格主要存放着获取到的函数符号表和文件信息。file_id唯一表示一个文件,与perf_callchain表中的file_id字段相关联。 +
  • +
+

GitHub Logo

+

查询举例

+ +
    +
  • +

    已知同步后的时间戳为28463134340470,查询采样数据
    + select * from perf_sample where timestamp_trace = + 28463134340470 +

    +
  • +
  • +

    已知同步后的时间戳为28463134340470,查询采样数据对应的的调用栈信息
    + select A.* from perf_callchain as A, perf_sample as B where + B.timestamp_trace = 28463134340470 and A.callchain_id = B.callchain_id +

    +
  • +
  • +

    已知同步后的时间戳为28463134277762,查询采样数据的函数名及文件路径
    + select A.*, B.name, C.path from perf_sample as A, perf_callchain as + B, perf_files as C where A.timestamp_trace = 28463134277762 and B.callchain_id = A.callchain_id + and B.callchain_id = 0 and B.file_id = C.file_id and C.serial_id = 0 +

    +
  • +
  • +

    已知线程号为6700,查询所有的采样记录
    + select * from perf_sample where thread_id = 6700 +

    +
  • +
  • +

    已知进程号为7863,查询所有的采样记录
    + select A.* from perf_sample as A, perf_thread as B where + B.process_id = 7863 and A.thread_id = B.thread_id +

    +
  • +
  • +

    查询所有采样对应的事件类型
    + select A.*, B.report_value from perf_sample as A, perf_report as B + where A.event_type_id = B.id +

    +
  • +
+

帧渲染表之间的关系图

+ +

frame_slice: 记录RS(RenderService)和应用的帧渲染。
+ gpu_slice: 记录RS的帧对应的gpu渲染时长。
+ frame_maps:记录应用到RS的帧的映射关系。
+ GitHub Logo +

+

查询示例

+ +
    +
  • +

    已知进程,查询进程对应的实际渲染帧
    + select * from frame_slice where ipid = 1 +

    +
  • +
  • +

    已知进程的实际渲染帧的dst为12,求其对应的RS进程的渲染帧
    + select * from frame_slice where id = 12 +

    +
  • +
  • +

    已知RS的渲染帧在frame_slice中所在行是14,求其对应的GPU渲染时长
    + select * from gpu_slice where frame_row = 14 +

    +
  • +
+

JS内存数据表关系图

+

js_heap_files:记录js内存数据的文件名和文件索引

+

1683163158954

+

js_heap_nodes:记录js内存类对象数据
+ js_heap_edges:记录js内存类对象的成员数据
+ js_heap_trace_node:记录timeline的调用栈信息
+ js_heap_sample:记录timeline的时间轴信息
+ 1683163373206 +

+

TraceStreamer输出数据库表格详细介绍

+

app_name表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
app_nameINT
app_keyINT
+

表描述

+

记录HiSysevent上报事件中的IDE相关事件中APPNAME的表关联信息。

+

字段详细描述

+
    +
  • id:用于与表hisys_event_measure表中的key_id字段做对应
  • +
  • app_name:对应的事件的信息ID
  • +
  • app_key:对应的事件的APPNAME字段的信息ID
  • +
+

args表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
keyINT
datatypeINT
valueINT
argsetINT
+

表描述

+

记录方法的参数集合。

+

字段详细描述

+
    +
  • id: 唯一标识
  • +
  • key:键
  • +
  • datatype:数据类型
  • +
  • value:取值
  • +
  • argset:参数集合
  • +
+

bio_latency_sample表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
callchain_idINT
typeINT
ipidINT
itidINT
start_tsINT
end_tsINT
latency_durINT
tierINT
sizeINT
block_numberTEXT
pathTEXT
dur_per_4kINT
+

表描述

+

记录IO操作相关方法调用,及调用栈数据。

+

字段详细描述

+
    +
  • id: 唯一标识
  • +
  • callchain_id:调用栈的唯一标识。与ebpf_callstack表中callchain_id字段关联
  • +
  • type:事件类型其取值为枚举类型(DATA_READ,DATA_WRITE,METADATA_READ, + METADATA_WRITE,PAGE_IN,PAGE_OUT) +
  • +
  • ipid:TS内部进程号
  • +
  • itid:TS内部线程号
  • +
  • start_ts:开始时间
  • +
  • end_ts:结束时间
  • +
  • latency_dur:总延迟
  • +
  • tier:优先级
  • +
  • size:文件大小
  • +
  • block_number:数据量大小(一般为4K)
  • +
  • path:路径id
  • +
  • dur_per_4k:每4k数据的平均延迟
  • +
+

callstack表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
durINT
callidINT
catTEXT
nameTEXT
depthINT
cookieINT
parent_idINT
argsetidINT
chainIdTEXT
spanIdTEXT
parentSpanIdTEXT
flagTEXT
+

表描述

+

+ 记录调用堆栈和异步调用信息,其中depth,stack_id和parent_stack_id仅在非异步的调用中有效。当cookid不为空时,为异步调用,此时callid为进程唯一号,否则为线程唯一号。

+

字段详细描述

+
    +
  • id: 唯一标识
  • +
  • ts: 数据事件上报时间戳
  • +
  • dur:调用时长
  • +
  • callid:调用者的ID,比如针对线程表里面的id
  • +
  • cat: 表示当前栈帧属于哪个业务(binder/workqueue/null)
  • +
  • name:调用名称
  • +
  • depth:调用深度
  • +
  • cookie: 异步调用的cookie值
  • +
  • parent_id:父调用的id
  • +
  • argsetid: 调用的参数列表,关联args表的id字段
  • +
  • chainId:分布式数据中的chainId,id相同则表示为同一个分布式的调用栈
  • +
  • spanId:分布式调用关联关系,当前帧的id
  • +
  • parentSpanId: 分布式调用关联关系,当前帧的parent的SpanId,对应当前表的spandId
  • +
  • flag:C表示分布式调用发送方,S表示接受方
  • +
+

clk_event_filter表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
cpuINT
+

表描述

+

记录时钟信息。

+

字段详细描述

+
    +
  • id: 与measure表的filterId字段关联
  • +
  • type:时钟事件类型
  • +
  • name:时钟事件名称
  • +
  • cpu: cpu编号
  • +
+

clock_event_filter表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
cpuINT
+

表描述

+

此结构用来维护时钟事件,cpu与唯一的ID做关联。

+

主要字段描述

+
    +
  • id: 与measure表的filterId字段关联
  • +
  • Type:时钟事件类型
  • +
  • Name:时钟事件名称
  • +
  • cpu: cpu编号
  • +
+

cpu_measure_filter表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
nameTEXT
cpuINT
+

表描述

+

将cpu号作为key1,cpu的频率,空闲等状态作为key2,唯一确定一个filter_id。

+

主要字段描述

+
    +
  • id: 与measure表的filterId字段关联
  • +
  • name: 事件名(cpu_idle/cpu_frequency/cpu_frequency_limits_max/cpu_frequency_limits_min)
  • +
  • cpu:cpu号
  • +
+

cpu_usage表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
tsINT
durINT
total_loadREAL
user_loadREAL
system_loadREAL
process_numINT
+

表描述

+

记录了/proc/pid/stat与CPU使用率相关的数据。

+

主要字段描述

+
    +
  • ts: 数据上报时间
  • +
  • dur: 持续时间
  • +
  • total_load:总负荷
  • +
  • user_load:用户负载
  • +
  • system_load:系统负载
  • +
  • process_num:线程数
  • +
+

data_dict表

+

表结构

+ + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
dataTEXT
+

表描述

+

此表记录了一个数据类型ID和字符串的映射。

+

主要字段描述

+
    +
  • id:索引值
  • +
  • data:字符串
  • +
+

data_type表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
typeIdINT
descTEXT
+

表描述

+

此表记录了一个数据类型ID和数据描述的映射。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • typeId::数据类型id
  • +
  • Desc:数据类型描述
  • +
+

diskio表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
tsINT
durINT
rdINT
wrINT
rd_speedREAL
wr_speedREAL
rd_countINT
wr_countINT
rd_count_speedREAL
wr_count_speedREAL
+

表描述

+

记录了与磁盘读写相关的数据。

+

主要字段描述

+
    +
  • ts:时间戳
  • +
  • dur: 持续时间
  • +
  • rd: 当前时间段的读取量
  • +
  • wr: 当前时间段的写入量
  • +
  • rd_speed:当前时间段的读取速度
  • +
  • wr_speed:当前时间段的写入速度
  • +
  • rd_count:读取的数据总量
  • +
  • wr_count:写入的数据总量
  • +
  • rd_count_speed:读数据的平均速度
  • +
  • wr_count_speed:写入数据的平均速度
  • +
+

ebpf_callstack表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
callchain_idINT
depthTEXT
ipTEXT
symbols_idINT
file_path_idINT
+

表描述

+

记录了与磁盘读写相关的数据。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • callchain_id:调用栈的唯一标识
  • +
  • depth:调用栈深度。取值为零时表示栈顶
  • +
  • ip:调用栈ip
  • +
  • symbols_id:调用栈函数名称, 与data_dict中的id字段关联
  • +
  • file_path_id:调用栈函数所属文件路径, 与data_dict中的id字段关联
  • +
+

file_system_sample表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
callchain_idINT
typeINT
ipidINT
itidINT
start_tsINT
end_tsINT
durINT
return_valueTEXT
error_codeTEXT
fdINT
file_idINT
sizeINT
first_argumentTEXT
second_argumentTEXT
third_argumentTEXT
fourth_argumentTEXT
+

表描述

+

记录了调用栈的相关信息。

+

主要字段描述

+
    +
  • callchain_id:调用栈信息ID与file_system_callstack表中call_chain_id字段相关联
  • +
  • type:对应文件操作open,close,read,write
  • +
  • ipid:样本所属的内部进程ID,关联process表id
  • +
  • itid: 样本所属的内部线程ID,关联thread表id
  • +
  • start_ts:开始时间
  • +
  • end_ts:结束时间
  • +
  • dur:耗时
  • +
  • return_value:文件操作的返回值
  • +
  • error_code:文件操作发生错误时的错误码
  • +
  • fd:文件描述符fd
  • +
  • file_id:当type为open,close时为其操作的文件路径,当type为read,write时为固定字段(null)
  • +
  • size:在type为read,write时对应的文件的读或者写的大小
  • +
  • first_argument:参数一
  • +
  • second_argument:参数二
  • +
  • third_argument:参数三
  • +
  • fourth_argument:参数四
  • +
+

hidump表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
fpsINT
+

表描述

+

此表记录了设备的帧率信息,fps。

+

相关字段描述

+
    +
  • id: 唯一标识
  • +
  • ts: 数据上报时间戳
  • +
  • fps:帧率值
  • +
+

hisys_event_measure表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
serialINT
tsINT
name_idINT
key_idINT
typeINT
int_valueREAL
string_valueTEXT
+

表描述

+

记录所有的system event事件的相关数据,及其相关表的映射信息。

+

相关字段描述

+
    +
  • serial:每条数据过来携带唯一一条id作为标识
  • +
  • ts: 数据上报时间戳
  • +
  • name_id:存放事件对应的ID,与data_dict表相关联可以取出对应的字段
  • +
  • key_id:存放事件包含的字段的ID,与表app_name的id字段相关联,找到app_name表的 + id字段对应行的app_key字段与表data_dict表相关联取出对应的字段 +
  • +
  • type:存放事件所包含的字段的值所属的类型为int型还是string(0为int,1为string)
  • +
  • int_value:存放本事件所包含的字段的int型的值
  • +
  • string_value:存放本事件所包含的字段的string型的值
  • +
+

instant表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
tsINT
nameTEXT
refINT
wakeup_fromINT
ref_typeTEXT
valueREAL
+

表描述

+

记录了系统中的waking和wakeup事件。

+

字段描述

+
    +
  • ts:唤醒时间
  • +
  • name:唤醒事件的名称
  • +
  • ref:索引号
  • +
  • wakeup_from:唤醒当前线程的内部线程号(itid)
  • +
  • ref_type:描述了value字段的类型(一般取值为itid)
  • +
  • value:一般为当前线程的内部线程号取值
  • +
+

irq表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
durINT
callidINT
catTEXT
nameTEXT
depthINT
cookieINT
parent_idINT
argsetidINT
flagTEXT
+

表描述

+

记录中断相关事件。

+

相关字段描述

+
    +
  • id: 唯一标识
  • +
  • ts: 数据上报时间戳
  • +
  • dur:调用中断时长
  • +
  • callid:调用中断者的ID,比如针对线程表里面的id
  • +
  • cat:调用栈数据类型(取值范围:irq,softirq, ipi)
  • +
  • name:调用中断的名称
  • +
  • depth:中断调用的深度
  • +
  • cookie: 异步调用的cookie值
  • +
  • parent_id:父调用中断的id
  • +
  • argsetid: 跟arg_view中的argset关联,保存irq的名字以及值(irq=5 name=IPI)
  • +
  • flag: 1表示硬中断
  • +
+

js_config表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
pidINT
typeINT
intervalINT
capture_numeric_valueINT
trace_allocationINT
enable_cpu_profilerINT
cpu_profiler_intervalINT
+

表描述

+

记录arkTs数据采集的相关配置。

+

相关字段描述

+
    +
  • pid:目标进程ID。
  • +
  • + type:JS数据类型,取值与枚举HeapType对应,0表示JS内存数据为snapshot类型,1表示JS内存数据为timeline类型,-1表示没有JS内存数据。 +
  • +
  • interval:当type=0时生效,单位是秒,表示一次snapshot事件和下一次snapshot事件之间的间隔。
  • +
  • capture_numeric_value:当type=0时生效,表示是否同时抓取numeric。
  • +
  • track_allocation:当type=1时生效,表示是否抓取allocations。
  • +
  • enable_cpu_profiler:表示是否存在cpuprofiler的数据。
  • +
  • cpu_profiler_interval:表示cpuprofiler数据的采集间隔。
  • +
+

js_cpu_profiler_node表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
function_idINT
function_indexINT
script_idINT
url_indexINT
line_numberINT
column_numberINT
hit_countINT
childrenINT
parent_idINT
+

表描述

+

记录cpu profiler中node节点的数据。

+

相关字段描述

+
    +
  • function_id: 函数的ID号。
  • +
  • function_index:函数名称在data_dict中的索引号。
  • +
  • script_id:关联到的类对象所在文件的绝对路径ID。
  • +
  • url_index:关联到的类对象所在文件的绝对路径名称在data_dict中的索引号。
  • +
  • line_number:类对象所在文件的行号。
  • +
  • column_number:类对象所在文件的列号。
  • +
  • hit_count:采样次数。
  • +
  • children:子节点的id号。
  • +
  • parent_id:父节点的id号。
  • +
+

js_cpu_profiler_sample表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
function_idINT
start_timeINT
end_timeINT
durINT
+

表描述

+

记录了cpu profiler 中sample节点的数据。

+

相关字段描述

+
    +
  • id: ts内部ID号。
  • +
  • function_id:函数的ID号。
  • +
  • start_time:数据上报的起始时间。
  • +
  • end_time:数据上报的终止时间。
  • +
  • dur:数据上报的间隔时间。
  • +
+

js_heap_edges表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
file_idINT
edge_indexINT
typeINT
name_or_indexINT
to_nodeINT
from_node_idINT
to_node_idINT
+

表描述

+

记录js内存数据类对象对应的成员的信息。

+

相关字段描述

+
    +
  • file_id:文件ID
  • +
  • edge_index:成员的索引号
  • +
  • type:成员的类型,取值范围为js_heap_info表中的edge_types
  • +
  • name_or_index:数据名称,取值为js_heap_string表中的下标索引
  • +
  • to_node:此成员指向的类对象在nodes数组中的索引
  • +
  • from_node_id:类对象ID,该类对象指向此成员数据
  • +
  • to_node_id:此成员指向到的类对象nodes数组中的ID
  • +
+

js_heap_files表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
file_nameTEXT
start_timeINT
end_timeINT
self_sizeINT
+

表描述

+

记录了js内存数据的文件名称和时间。

+

相关字段描述

+
    +
  • id:文件ID
  • +
  • file_name:文件名称
  • +
  • start_time:数据抓取的起始时间
  • +
  • end_time:数据抓取的终止时间
  • +
  • self_size: 当前snapshot中所有node的size之和
  • +
+

js_heap_info表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
file_idINT
keyTEXT
typeINT
int_valueINT
str_valueTEXT
+

表描述

+

记录了js内存数据类型,如nodes和edges的字段类型和数据总数。

+

相关字段描述

+
    +
  • file_id:文件ID
  • +
  • key:类型名称
  • +
  • type:数据类型索引
  • +
  • int_value:int类型的数据值,如count类型数据
  • +
  • str_value:string类型的数据值,如typename
  • +
+

js_heap_location表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
file_idINT
object_indexINT
script_idINT
lineINT
columnINT
+

表描述

+

记录了js内存location节点相关数据,此表目前无抓取到的数据。

+

相关字段描述

+
    +
  • file_id:文件ID
  • +
  • object_index:与location关联的类对象的索引,取值为js_heap_nodes的下标索引
  • +
  • script_id:关联到的类对象所在文件的绝对路径ID
  • +
  • line:在类对象所在的文件中的行号
  • +
  • column:在类对象所在的文件中的列号
  • +
+

js_heap_nodes表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
file_idINT
node_indexTEXT
typeINT
nameINT
idTEXT
self_sizeINT
edge_countINT
trace_node_idINT
detachednessINT
+

表描述

+

记录了js内存数据中类对象的数据。

+

相关字段描述

+
    +
  • file_id:文件ID
  • +
  • node_index:类对象的索引
  • +
  • type:类对象的类型
  • +
  • name:类对象的名称
  • +
  • id:类对象的唯一ID
  • +
  • self_size:该类对象所有成员的大小(以字节为单位)
  • +
  • edge_count:该类对象指向的类成员的个数
  • +
  • trace_node_id:该类对象关联到js_heap_trace_node表中的调用栈ID
  • +
  • detachedness:是否可以从window全局对象访问此节点,0表示是,1表示否
  • +
+

js_heap_sample表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
file_idINT
timestamp_usINT
last_assigned_idINT
+

表描述

+

记录了timeline模式下的时间轴信息。

+

相关字段描述

+
    +
  • file_id:文件ID
  • +
  • timestamp_us:时间信息
  • +
  • last_assigned_id:当前时间点的id
  • +
+

js_heap_string表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
file_idINT
file_indexINT
stringTEXT
+

表描述

+

记录了js内存数据中的字符串。

+

相关字段描述

+
    +
  • file_id:文件ID
  • +
  • file_index:索引
  • +
  • string:对应的字符串信息
  • +
+

js_heap_trace_function_info表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
file_idINT
function_indexINT
function_idINT
nameINT
script_nameINT
script_idINT
lineINT
columnINT
+

表描述

+

记录了timeline模式下的调用栈的每个函数信息。

+

相关字段描述

+
    +
  • file_id:文件ID
  • +
  • function_index:函数索引
  • +
  • function_id:函数ID
  • +
  • name:函数名称
  • +
  • script_name:关联到的类对象所在文件的绝对路径名称
  • +
  • script_id:关联到的类对象所在文件的绝对路径ID
  • +
  • line:在类对象所在的文件中的行号
  • +
  • column:在类对象所在的文件中的列号
  • +
+

js_heap_trace_node表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
file_idINT
idINT
function_info_indexINT
countINT
sizeINT
parent_idINT
+

表描述

+

记录了timeline模式下的调用栈的信息。

+

相关字段描述

+
    +
  • file_id:文件ID
  • +
  • id:调用栈节点索引
  • +
  • function_info_index:函数信息索引
  • +
  • count:调用栈个数
  • +
  • size:调用栈大小
  • +
  • parent_id:调用栈父节点
  • +
+

app_startup表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
call_idINT
ipidINT
tidINT
start_timeINT
end_timeINT
start_nameINT
packed_nameINT
+

表描述

+

记录了应用启动的相关信息。

+

相关字段描述

+
    +
  • call_id:调用者的ID,比如针对线程表里面的id
  • +
  • ipid:内部进程号
  • +
  • tid:内部线程号
  • +
  • start_time:阶段开始时间
  • +
  • end_time:阶段结束时间
  • +
  • start_name:阶段名称
  • +
  • packed_name:应用名称
  • +
+

static_intialize表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
call_idINT
ipidINT
tidINT
start_timeINT
end_timeINT
so_nameINT
depthINT
+

表描述

+

记录了so初始化的相关信息。

+

相关字段描述

+
    +
  • call_id:调用者的ID,比如针对线程表里面的id
  • +
  • ipid:内部进程号
  • +
  • tid:内部线程号
  • +
  • start_time:阶段开始时间
  • +
  • end_time:阶段结束时间
  • +
  • so_name:so文件名称
  • +
  • depth:泳道图的深度
  • +
+

live_process表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
tsINT
durINT
cpu_timeINT
process_idINT
process_nameTEXT
parent_process_idINT
uidINT
user_nameTEXT
cpu_usageREAL
pss_infoINT
thread_numINT
disk_writesINT
disk_readsINT
+

表描述

+

记录了一些实时的进程中(/proc/ + + + P + I + D + / + s + t + a + t + u + s + + / + p + r + o + c + / + + PID/status、/proc/ + + PID/stat、/proc/stat)执行的一些数据(Monitor)。 +

+

主要字段描述

+
    +
  • ts: 数据上报时间戳
  • +
  • dur: 事件持续时间
  • +
  • cpu_time: /proc/$PID/stat 中的cpu时间
  • +
  • process_id:进程id
  • +
  • process_name:进程名
  • +
  • parent_process_id:父进程的id
  • +
  • uid:用户id
  • +
  • user_name:用户名
  • +
  • cpu_usage:cpu使用率
  • +
  • pss_info:进程信息
  • +
  • thread_num:线程数量
  • +
  • disk_writes:磁盘写量
  • +
  • disk_reads:磁盘读量
  • +
+

log表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
seqINT
tsINT
pidINT
tidINT
levelTEXT
tagTEXT
contextTEXT
origintsINT
+

表描述

+

记录日志信息。

+

关键字段描述

+
    +
  • seq:日志序号,保证日志解析的准确性
  • +
  • ts:打印日志时间
  • +
  • pid:日志的进程号
  • +
  • tid:日志的线程号
  • +
  • level:日志级别
  • +
  • tag:日志标签
  • +
  • context:日志内容
  • +
  • origints:log中自带的时间
  • +
+

measure表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
typeTEXT
tsINT
durINT
valueINT
filter_idINT
+

表描述

+

记录所有的计量值。

+

关键字段描述

+
    +
  • type:固定字段(measure)
  • +
  • ts:事件时间
  • +
  • dur:该值持续的时长
  • +
  • value:数值
  • +
  • filter_id:对应filter表中的ID
  • +
+

measure_filter表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
source_arg_set_idINT
+

表描述

+

+ 记录一个递增的filterid队列,所有其他的filter类型在获取过程中,均从此数据列表中获取下一个可用的filter_id并做记录。

+

字段详细描述

+

过滤分类(type),过滤名称(key2),数据ID(key1)。
+ id: 唯一的filterId,与process_measure_filter, sys_event_filter中的id关联。
+ type:各种类型(cpu_measure_filter,clk_rate_filter,process_measure_filter...)
+ name: type的子类型。
+ source_arg_set_id: 同一个source_arg_set_id代表一组数据,一般取得是itid或者cpu编号。

+

meta表

+

表结构

+ + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
nameTEXT
valueTEXT
+

表描述

+

此表记录了数据解析或导出时的一些现场数据,比如使用的TraceStreamer版本, + 工具的发布时间,数据解析的时间,数据的持续时长,以及原始数据的格式。

+

主要字段描述

+
    +
  • Name:指定元数据的key
  • +
  • Value:指定元数据的value
  • +
+

native_hook表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
callchain_idINT
ipidINT
itidINT
event_typeTEXT
sub_type_idNUM
start_tsINT
end_tsINT
durINT
addrINT
heap_sizeINT
all_heap_sizeINT
current_size_durINT
last_lib_idINT
last_symbol_idINT
+

表描述

+

记录native_hook抓取的某个进程的堆内存,内存映射相关数据。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • callchain_id:唯一标识一条native_hook数据
  • +
  • ipid:所属的进程内部id, 关联process表中的id
  • +
  • itid:所属的线程内部id, 关联thread表中的id
  • +
  • event_type:事件类型取值范围(AllocEvent,FreeEvent,MmapEvent, MunmapEvent)
  • +
  • sub_type_id:子事件类型(只有event_type字段为MmapEvent时,该字段才会有值)
  • +
  • start_ts:申请内存开始时间
  • +
  • end_ts:释放内存时间
  • +
  • dur:申请内存活跃时间
  • +
  • addr:申请内存地址
  • +
  • heap_size: 申请的内存大小
  • +
  • all_heap_size:从采集数据开始到当前时刻,申请并活跃的内存总量。 + event_type为AllocEvent或者FreeEvent时,表示活跃的堆内存总量。当event_type为MmapEvent或者MunmapEvent时,表示活跃的映射内存总量 +
  • +
  • current_size_dur:表示当前活跃内存总量的持续时间
  • +
  • last_lib_id:函数调用栈最后一个函数所属的文件路径,除了文件名中带musl和libc++
  • +
  • last_symbol_id: 函数调用栈最后一个函数名,lib除了文件名中带musl和libc++
  • +
+

native_hook_frame表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
callchain_idINT
depthINT
ipINT
symbol_idINT
file_idINT
offsetINT
symbol_offsetINT
vaddrINT
+

表描述

+

记录了内存的申请和释放的堆栈。

+

相关字段描述

+
    +
  • id: 唯一标识
  • +
  • callchain_id:标识一组调用堆栈
  • +
  • depth:调用栈深度
  • +
  • ip: 函数ip
  • +
  • symbol_id:函数名id,对应data_dict中id
  • +
  • file_id:函数所属文件id,对应data_dict中id
  • +
  • offset: 取自Frame message的offset字段
  • +
  • symbol_offset: 取自Frame message的symbol_offset字段
  • +
  • vaddr: 一般取值为offset + symbol_offset
  • +
+

native_hook_statistic表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
callchain_idINT
ipidINT
tsINT
typeINT
sub_type_idINT
apply_countINT
release_countINT
apply_sizeINT
release_sizeINT
last_lib_idINT
last_symbol_idINT
+

表描述

+

该表记录了内存申请/释放的统计信息。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • callchain_id:内存分配的回调链id
  • +
  • ipid:进程id
  • +
  • ts:统计数据上报时间
  • +
  • type:事件类型,0代表malloc事件,1代表mmap事件
  • +
  • sub_type_id:事件子类型,关联data_dict表id
  • +
  • apply_count:当前调用栈内存分配总次数
  • +
  • release_count:当前调用栈内存释放总次数
  • +
  • apply_size:当前调用栈累计分配总大小
  • +
  • release_size:当前调用栈累计释放总大小
  • +
  • last_lib_id:函数调用栈最后一个函数所属的文件路径,除了文件名中带musl和libc++
  • +
  • last_symbol_id: 函数调用栈最后一个函数名,lib除了文件名中带musl和libc++
  • +
+

network表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
tsINT
durINT
txINT
rxINT
tx_speedREAL
rx_speedREAL
packet_inINT
packet_in_secREAL
packet_outINT
packet_out_secREAL
net_typeTEXT
+

表描述

+

记录了网络数据传输相关的信息。

+

主要字段描述

+
    +
  • ts:事件上报时间
  • +
  • dur: 持续时间
  • +
  • tx: 网络数据的写入次数
  • +
  • rx: 网络数据的读取次数
  • +
  • tx_speed: 网络数据的写入次数/s
  • +
  • rx_speed: 网络数据的读取次数/s
  • +
  • packet_in:网络数据申请的数据包个数
  • +
  • packet_in_sec: 网络数据申请的数据包个数/s
  • +
  • packet_out: 网络数据发送的数据包个数
  • +
  • packet_out_sec:网络数据发送的数据包个数/s
  • +
  • net_type:网络类型,wifi/蜂窝
  • +
+

paged_memory_sample表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
callchain_idINT
typeINT
ipidINT
start_tsINT
end_tsINT
durINT
sizeINT
addrTEXT
itidINT
+

表描述

+

记录了网络数据传输相关的信息。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • callchain_id: 取值相同的一组数据,表示一个完整的调用栈
  • +
  • type:事件类型
  • +
  • ipid:TS内部进程号
  • +
  • start_ts:开始时间
  • +
  • end_ts:结束时间
  • +
  • dur:持续时间
  • +
  • size:操作页数,1页=4kb
  • +
  • addr: 内存地址
  • +
  • itid:内部线程号
  • +
+

perf_callchain表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
callchain_idINT
depthINT
ipINT
vaddr_in_fileINT
file_idINT
symbol_idINT
nameTEXT
+

表描述

+

记录了Hiperf采样数据的调用栈信息。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • callchain_id:标识一组调用堆栈
  • +
  • depth:调用栈深度
  • +
  • ip: 函数ip
  • +
  • vaddr_in_file:函数在文件中的虚拟地址
  • +
  • file_id:与perf_files中的file_id字段相关联
  • +
  • symbol_id:与perf_files中的serial_id相关联
  • +
  • name:函数名
  • +
+

perf_files表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
file_idINT
serial_idINT
symbolTEXT
pathTEXT
+

表描述

+

记录Hiperf工具采集到的函数符号表和文件名。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • file_id:文件编号
  • +
  • serial_id:一个文件中可能有多个函数,serial_id表示函数的编号
  • +
  • symbol:函数名
  • +
  • path:文件路径
  • +
+

perf_report表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
report_typeTEXT
report_valueTEXT
+

表描述

+

记录Hiperf工具采集数据时的配置信息。包括:抓取的事件类型,抓取数据的命令, + 抓数据时指定的进程名称。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • report_type:数据类型。取值只有三种类型:config_name(事件类型), workload(抓取的进程名), + cmdline(抓取命令) +
  • +
  • report_value:对应类型的取值
  • +
+

perf_sample表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
callchain_idINT
timestampINT
thread_idINT
event_countINT
event_type_idINT
timestamp_traceINT
cpu_idINT
thread_stateTEXT
+

表描述

+

记录Hiperf工具的采样信息。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • callchain_id:关联perf_callchain表callchain_id
  • +
  • timestamp:未进行时钟源同步的时间戳
  • +
  • thread_id:线程号
  • +
  • event_count:采样统计
  • +
  • event_type_id:事件类型编号。与PerfReport表的id字段相关联
  • +
  • timestamp_trace:时钟源同步后的时间戳
  • +
  • cpu_id:cpu核编号
  • +
  • + thread_state:线程状态。采样对应Sched_Waking事件时,为Runing;对应Sched_Switch事件时,为Suspend。其余事件类型,为“-” +
  • +
+

perf_thread表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
thread_idINT
process_idINT
thread_nameTEXT
+

表描述

+

记录Hiperf工具采集到的进程和线程数据。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • thread_id:线程号
  • +
  • process_id:进程号
  • +
  • thread_name:线程名
  • +
+

process表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
ipidINT
pidINT
nameTEXT
start_tsINT
switch_countINT
thread_countINT
slice_countINT
mem_countINT
+

表描述

+

记录了进程相关数据。

+

关键字段描述

+
    +
  • id:进程在数据库重新重新定义的id,从0开始序列增长
  • +
  • ipid:TS内部进程id
  • +
  • pid:进程的真实id
  • +
  • name:进程名字
  • +
  • start_ts:开始时间
  • +
  • switch_count:统计内部有多少个线程有切换
  • +
  • thread_count:统计其线程个数
  • +
  • slice_count:进程内有多少个线程有slice数据
  • +
  • mem_count:进程是否有内存数据
  • +
+

process_measure表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
typeTEXT
tsINT
durINT
valueNUM
filter_idINT
+

表描述

+

保存进程的内存,堆栈值等所有计量值信息。

+

字段详细描述

+
    +
  • type: 固定为measure
  • +
  • ts:事件时间
  • +
  • dur: 持续时间
  • +
  • value:数值
  • +
  • filter_id:对应process_measure_filter表中的id
  • +
+

process_measure_filter表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
nameTEXT
ipidINT
+

表描述

+

将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id, + filter_id同时被记录在measure_filter表中。

+

字段详细描述

+
    +
  • id: 与measure表的filterId字段相关联
  • +
  • name:key名
  • +
  • ipid:进程内部编号
  • +
+

raw表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
nameTEXT
cpuINT
itidINT
+

表描述

+

记录了系统中的waking、wakup、cpu_idel、cpu_frequency数据。

+

相关字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:事件时间
  • +
  • name:调度名称(取值:cpu_idle,sched_wakeup,sched_waking)
  • +
  • cpu:事件发生在哪个CPU
  • +
  • itid:时间对应哪个itid,对应thread表中id
  • +
+

sched_slice表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
durINT
ts_endINT
cpuINT
itidINT
ipidINT
end_stateTEXT
priorityINT
arg_setidINT
+

表描述

+

+ 此数据结构主要作为ThreadState的上下文使用,这张表是sched_switch事件的原始记录。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:事件发生时间
  • +
  • dur:状态持续时长
  • +
  • ts_end:状态结束时长
  • +
  • cpu:事件发生在哪个cpu
  • +
  • itid:进程内部编号
  • +
  • ipid:进程内部编号
  • +
  • end_state:线程的终结状态
  • +
  • priority: 线程优先级
  • +
  • arg_setid:线程状态参数,对应args中argset
  • +
+

smaps表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
timestampINT
start_addrTEXT
end_addrTEXT
dirtyINT
swapperINT
resident_sizeINT
pssINT
virtaul_sizeINT
resideREAL
protection_idINT
path_idINT
shared_cleanINT
shared_dirtyINT
private_cleanINT
private_dirtyINT
swapINT
swap_pssINT
typeINT
+

表描述

+

记录进程的内存消耗的相关信息采样,读取/proc/${pid}/smaps节点。

+

主要字段描述

+
    +
  • id: 唯一标识
  • +
  • timestamp:事件发生事件
  • +
  • start_addr:内存段地址的起始位置
  • +
  • end_addr:内存段地址的结束位置
  • +
  • dirty:其他进程共享的被写的页的大小 + 已被改写的私有页面的大小
  • +
  • swapper:存在于交换分区的数据大小
  • +
  • resident_size:实际分配的内存大小
  • +
  • pss:平摊计算后的实际物理使用内存
  • +
  • virtaul_size:虚拟内存空间的大小
  • +
  • reside:实际分配的内存大小与虚拟内存空间的大小的比
  • +
  • protection_id:内存段的权限id与表data_dict的id字段相关联
  • +
  • path_id:如果区域是从文件映射的,则这是文件的名称对应的id序号与表data_dict的id字段相关联
  • +
  • shared_clean:smaps节点中Shared_clean
  • +
  • shared_dirty:smaps节点中Shared_dirty
  • +
  • private_clean:smaps节点中Private_clean
  • +
  • private_dirty:samps节点中Private_dirty
  • +
  • swap: smap节点中Swap
  • +
  • swap_pss:smap节点中SwapPss
  • +
  • type : 根据type分类信息
  • +
+

stat表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
event_nameTEXT
stat_typeTEXT
countINT
serverityTEXT
sourceTEXT
+

表描述

+

+ 此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解。

+

主要字段描述

+
    +
  • event_name:数据类型
  • +
  • stat_type:数据状态
  • +
  • count:数据条数
  • +
  • severity:严重级别
  • +
  • source:数据来源
  • +
+

symbols表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
funcnameTEXT
addrINT
+

表描述

+

此表记录了被调用函数与其地址的映射关系。

+

相关字段描述

+
    +
  • id: 唯一标识
  • +
  • funcname:系统调用名称
  • +
  • addr:系统调用地址
  • +
+

syscall表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
syscall_numINT
typeTEXT
ipidINT
tsINT
retINT
+

表描述

+

记录用户空间函数与内核空间函数相互调用记录。

+

相关字段描述

+
    +
  • syscall_num:系统调用的序号
  • +
  • type:固定取值:enter或者exit
  • +
  • ipid:线程所属的进程ID
  • +
  • ts:时间戳
  • +
  • ret:返回值,在type为exit时有效
  • +
+

sys_event_filter表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
+

表描述

+

记录所有的filter。

+

相关字段描述

+
    +
  • id: 与measure表的filterid字段关联
  • +
  • type:文件类型
  • +
  • name:文件名
  • +
+

sys_mem_measure表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
typeTEXT
tsINT
durINT
valueINT
filter_idINT
+

表描述

+

记录系统内存与系统虚拟内存。

+

相关字段描述

+
    +
  • type: 固定为measure
  • +
  • ts:事件时间
  • +
  • dur: 持续时间
  • +
  • value:数值
  • +
  • filter_id:对应filter表中的ID
  • +
+

thread表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
itidINT
tidINT
nameTEXT
start_tsINT
end_tsINT
ipidINT
is_main_threadINT
switch_countINT
+

表描述

+

记录了线程相关数据。

+

字段详细描述

+
    +
  • id: 唯一标识
  • +
  • itid:TS内部线程id
  • +
  • tid:线程号
  • +
  • name:线程名
  • +
  • start_ts:开始时间
  • +
  • end_ts:结束时间
  • +
  • ipid:线程所属的进程id, 关联process表中的ID
  • +
  • is_main_thread:是否主线程,主线程即该线程实际就是进程本身
  • +
  • switch_count:当前线程的切换次数
  • +
+

thread_state表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
durINT
cpuINT
itidINT
tidINT
pidINT
stateTEXT
argset_idINT
+

表描述

+

记录了线程状态相关的数据。

+

字段详细描述

+
    +
  • id: 唯一标识
  • +
  • ts:该线程状态的起始时间
  • +
  • dur:该线程状态的持续时间
  • +
  • cpu:该线程在哪个cpu上执行(针对running状态的线程)
  • +
  • itid:该状态所属的线程id, 关联线程表中的id
  • +
  • tid:线程号
  • +
  • pid:进程号
  • +
  • state:线程实际的的状态值
  • +
  • argset_id:线程状态参数,对应arg_view中arg_set
  • +
+
'R', Runnable状态
+  "S", interruptible sleep
+  "D", uninterruptible sleep
+  "D-IO", uninterruptible io
+  "D-NIO", uninterruptible nio
+  "Runing", Runing状态
+  "T", Task stoped.
+  "t"  Traced.
+  "X", ExitedDead
+  "Z", Zombie
+  "P", Parked
+  "I", Task_Dead
+  "DK",
+  "DK-IO",
+  "DK-NIO",
+  "TK", TracedKill
+  "R+", WakeKill
+  "R+", TaskNew
+  "R-B", Task runnable binder.
+  
+

clock_snapshot表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
clock_idINT
tsINT
clock_nameTEXT
+

表描述

+

时钟号和时间,时钟名的映射表。

+

关键字段描述

+
    +
  • clock_id:时钟号
  • +
  • ts:时钟快照报的时间
  • +
  • clock_name:时钟号对应的时钟名字
    + 时钟快照是用来对齐不同时钟号的时间
    + 比如,时钟号1的时间100,和时钟号2的时间200对齐
    + 则时钟号为2 的250,转换为时钟号1的时间后,为150 +
  • +
+

datasource_clockid表

+

表结构

+ + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
data_source_nameTEXT
clock_idINT
+

表描述

+

数据源和时钟号的映射表。

+

关键字段描述

+
    +
  • data_source_name:数据源的名称,和数据源的插件名保持一致
  • +
  • clock_id:时钟号,对应clock_snapshot中的时钟号
    + 这个表是用来告诉IDE,不同的事件源的事件,原始时钟号是多少,在数据库中保存的事件,通常是转换为boottime后的时间,但有些情况下,IDE仍然需要知道原始的时钟号是怎样的 +
  • +
+

frame_slice表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
tsINT
vsyncINT
ipidINT
itidINT
callstack_idINT
durINT
srcTEXT
dstINT
typeINT
type_descTEXT
flagINT
depthINT
frame_noINT
+

表描述

+

+ 应用的实际渲染帧和期望渲染帧的开始时间,持续时长,以及RenderService和App之间的关联关系。

+

关键字段描述

+
    +
  • ts: 数据上报时间戳
  • +
  • vsync: 一个id值,用于标识一组渲染帧的期望和实际数据。
  • +
  • ipid:所属的进程内部id, 关联process表中的id
  • +
  • itid:所属的线程id, 关联thread表中的id
  • +
  • callstack_id:该帧数据对应着callstack表的调用栈所在的行数
  • +
  • dur:该帧渲染时长(当数据不完整时,改行数据为空)
  • +
  • src:该帧是被哪一帧(该表中对应的行数)触发的,有多个值时,用逗号分割
  • +
  • dst:该帧对应的渲染帧是哪一行
  • +
  • type: 0 说明该行数据是实际渲染帧, 1 说明该行数据是期望渲染帧
  • +
  • type_desc: 当type值为0时,该字段为actural; 当type值为1时,该字段为expect;
  • +
  • flag: 空时,为不完整的数据;0 表示实际渲染帧不卡帧, 1 表示实际渲染帧卡帧(expectEndTime < + actualEndTime为异常), 2 表示数据不需要绘制(没有frameNum信息),3 + 表示rs进程与app进程起止异常(|expRsStartTime - expUiEndTime| < 1ms + 正常,否则异常。这里使用期待帧的时间差做判断,给实际帧打标签) +
  • +
  • depth:预留
  • +
  • frame_no:预留
  • +
+

frame_maps表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
tsINT
src_rowINT
dst_rowINT
+

表描述

+

+ 该表记录了app到RenderService的帧的映射关系,同frame_slice表中的src映射到dst的关系。

+

关键字段描述

+
    +
  • src_row:frame_slice表中app的帧所在的行
  • +
  • dst_row:frame_slice表中RenderService的帧所在的行
  • +
+

gpu_slice表

+

表结构

+ + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
frame_rowINT
durINT
+

表描述

+

该表记录了每一帧数据在GPU上的渲染时长。

+

关键字段描述

+
    +
  • frame_row:frame_slice表中渲染帧所在的行
  • +
  • dur:帧渲染时长
  • +
+

trace_range表

+

表结构

+ + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
start_tsINT
end_tsINT
+

表描述

+

该表记录了解析开始时间以及结束时间。

+

关键字段描述

+
    +
  • start_ts:trace的开始时间,纳秒为单位
  • +
  • end_ts:trace的结束时间,纳秒为单位
  • +
+

task_pool表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
allocation_task_rowINT
execute_task_rowINT
return_task_rowINT
allocation_itidINT
execute_itidINT
return_itidINT
task_idINT
priorityINT
execute_stateINT
return_stateINT
timeout_rowINT
+

表描述

+

该表记录了任务池相关数据,与callstack表关联。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • allocation_task_row:与callstack表id号相关联
  • +
  • execute_task_row:与callstack表id号相关联
  • +
  • return_task_row:与callstack表id号相关联
  • +
  • allocation_itid:任务分发的itid
  • +
  • execute_itid:任务执行的itid
  • +
  • return_itid:任务返回的itid
  • +
  • task_id:任务执行id
  • +
  • priority:任务分发独有的,优先级{HIGH : 0,MEDIUM : 1,LOW : 2}
  • +
  • execute_state:任务执行独有的执行状态{NOT_FOUND : 0,WAITING : 1,RUNNING : 2,CANCELED : 3} +
  • +
  • return_state:任务返回独有的任务返回状态[IsCanceled DeserializeFailed Successful + Unsuccessful] +
  • +
  • timeout_row:任务执行超时时更新此列,将对应的 callstack 表行号存于对应的任务行
  • +
+

animation表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
input_timeINT
start_pointINT
end_pointINT
frame_infoTEXT
nameTEXT
+

表描述

+

该表记录动效的响应时延和完成时延等信息。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • input_time:输入时间点
  • +
  • start_point:开始时间点
  • +
  • end_point:结束时间点
  • +
  • frame_info:动效帧信息,格式:实际帧个数:实际帧帧率
  • +
  • name: 当前动效名,eg:H:APP_LIST_FLING, com.taobao.taobao
  • +
+

dynamic_frame表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
xINT
yINT
widthINT
heightINT
alphaTEXT
nameINT
end_timeINT
+

表描述

+

该表记录动效帧的坐标、分辨率、结束时间等信息。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • x:坐标x
  • +
  • y:坐标y
  • +
  • width:宽
  • +
  • height:高
  • +
  • alpha:透明度
  • +
  • name:当前动效帧名字
  • +
  • end_time:结束时间
  • +
+

device_info表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
physical_widthINT
physical_heightINT
physical_frame_rateINT
+

表描述

+

该表记录设备分辨率和帧率等信息。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • physical_width:设备宽
  • +
  • physical_height:设备高
  • +
  • physical_frame_rate:设备帧率
  • +
+

device_state表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
brightnessINT
bt_stateINT
locationINT
wifiINT
stream_defaultINT
voice_callINT
musicINT
stream_ringINT
mediaINT
voice_assistantINT
systemINT
alarmINT
notificationINT
bt_scoINT
enforced_audibleINT
stream_dtmfINT
stream_ttsINT
accessibilityINT
recordingINT
stream_allINT
+

表描述

+

该表记录设备屏幕亮度,蓝牙,位置,wifi,音乐,媒体等信息。该表目前暂未被使用。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • brightness:屏幕亮度
  • +
  • bt_state:蓝牙状态
  • +
  • location:位置信息
  • +
  • wifi:无线网络状态
  • +
  • stream_default: 取自AudioVolumeInfo message的stream_default字段。
  • +
  • voice_call:语音通话
  • +
  • music:音乐播放
  • +
  • stream_ring: 取自AudioVolumeInfo message的stream_ring字段。
  • +
  • media:多媒体
  • +
  • voice_assistant:语音助手
  • +
  • system:系统
  • +
  • alarm:闹钟
  • +
  • notification:消息通知
  • +
  • bt_sco:蓝牙语音
  • +
  • enforced_audible: 取自AudioVolumeInfo message的enforced_audible字段
  • +
  • stream_dtmf: 取自AudioVolumeInfo message的stream_dtmf字段
  • +
  • stream_tts: 取自AudioVolumeInfo message的stream_tts字段
  • +
  • accessibility:访问权限
  • +
  • recording:录音
  • +
  • stream_all: 取自AudioVolumeInfo message的stream_all字段
  • +
+

trace_config表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
trace_sourceINT
keyINT
valueINT
+

表描述

+

+ 该表记录trace数据源,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • trace_source:事件源
  • +
  • key:事件需要关注的信息名
  • +
  • value:事件需要关注的信息名对应的信息值
  • +
+

memory_ashmem表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
ipidINT
adjINT
fdINT
ashmem_name_idINT
sizeINT
pssINT
ashmem_idINT
timeINT
ref_countINT
purgedINT
flagINT
+

表描述

+

+ 该表记录trace数据源/proc/purgeable_ashmem_trigger,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:时间戳
  • +
  • ipid:内部进程号
  • +
  • adj: purgeable_ashmem_trigger中adj
  • +
  • fd:共享内存文件描述符
  • +
  • ashmem_name_id:共享内存名
  • +
  • size:共享内存大小
  • +
  • pss:PSS内存大小
  • +
  • ashmem_id:共享内存ID
  • +
  • time: purgeable_ashmem_trigger中time
  • +
  • ref_count:引用计数
  • +
  • purged: purgeable_ashmem_trigger中purged
  • +
  • flag:去重标记,0表示正常,1表示进程内部重复数据,2表示进程间重复数据
  • +
+

memory_dma表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
ipidINT
fdINT
sizeINT
inoINT
exp_pidINT
exp_task_comm_idINT
buf_name_idINT
exp_name_idINT
flagINT
+

表描述

+

+ 该表记录trace数据源取/proc/process_dmabuf_info节点,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:时间戳
  • +
  • ipid:内部进程号
  • +
  • fd:dma内存文件描述符
  • +
  • size:dma内存大小
  • +
  • ino: process_dmabuf_info中ino列
  • +
  • exp_pid:申请者的进程号
  • +
  • exp_task_comm_id:申请者的的线程名,对应data_dict的id
  • +
  • buf_name_id:dma内存名
  • +
  • exp_name_id:申请者进程名
  • +
  • flag:去重标记,0表示正常,1表示进程内部重复数据,2表示进程间重复数据
  • +
+

memory_process_gpu表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
gpu_name_idINT
all_gpu_sizeINT
addrTEXT
ipidINT
itidINT
used_gpu_sizeINT
+

表描述

+

该表记录trace数据源读取/proc/gpu_memory节点

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:时间戳
  • +
  • gpu_name_id:gpu内存名称
  • +
  • all_gpu_size:进程占用gpu总大小
  • +
  • addr:gpu内存地址
  • +
  • ipid:内部进程号
  • +
  • itid:内部线程号
  • +
  • used_gpu_size:已使用的gpu大小
  • +
+

memory_window_gpu表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
window_name_idINT
window_idINT
module_name_idINT
category_name_idINT
sizeINT
countINT
purgeable_sizeINT
ipidINT
+

表描述

+

该表记录trace数据源/sys/kernel/debug/mali0/ctx/$(pidof xxx)_0/mem_profile

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:时间戳
  • +
  • window_name_id:窗口名
  • +
  • window_id:窗口id
  • +
  • module_name_id:模块名
  • +
  • category_name_id:目录名
  • +
  • size:内存大小 bytes
  • +
  • count:内存申请个数
  • +
  • purgeable_size: 取Total memory对应的字节大小
  • +
  • ipid: 内部进程号
  • +
+

static_initalize表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
ipidINT
tidINT
call_idINT
start_timeINT
end_timeINT
so_nameTEXT
depthINT
+

表描述

+

该表记录了so初始化相关数据。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • ipid:内部进程号
  • +
  • tid:内部线程号
  • +
  • call_id:调用者的ID,对应线程表里面的itid
  • +
  • start_time:阶段开始时间
  • +
  • end_time:阶段结束时间
  • +
  • so_name:so文件名称
  • +
  • depth:泳道图的深度
  • +
+

memory_cpu表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
total_sizeINT
+

表描述

+

该表记录了hidumper抓取的cpu的内存大小的相关数据。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:数据上报时间戳
  • +
  • total_size:hidumper取到的cpu内存大小
  • +
+

memory_profile表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
channel_idINT
total_sizeINT
+

表描述

+

该表记录了读取/sys/kernel/debug/mali0/ctx/$(pidof + xxx)_0/mem_profile节点相关数据。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:数据上报时间戳
  • +
  • channel_id: 取Channel对应的名称,对应data_dict的id
  • +
  • total_size:取Total memory对应的字节大小
  • +
+

memory_rs_image表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
tsINT
ipidINT
mem_sizeINT
type_idINT
surface_name_idINT
+

表描述

+

该表记录了hidumper抓取的界面的内存大小的相关数据。

+

关键字段描述

+
    +
  • id: 唯一标识
  • +
  • ts:数据上报时间戳
  • +
  • ipid:内部进程号
  • +
  • mem_size: 取hidumper的size列
  • +
  • type_id:取hidumper的type列,对于data_dict表中的id
  • +
  • surface_name_id: 取hidumper的surfaceName列
  • +
+

hisys_all_event表

+

表结构

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Columns NameSQL TYPE
idINT
domain_idINT
event_name_idINT
tsINT
typeINT
time_zoneTEXT
pidINT
tidINT
uidINT
levelTEXT
tagTEXT
event_idINT
seqINT
infoTEXT
contentsTEXT
+

表描述

+

该表记录所有hisysevent采集到的原始数据。

+

关键字段描述

+
    +
  • id: 唯一标识一条该表数据
  • +
  • domain_id: 对应原始数据中的domain_字段在data_dict表中的索引。
  • +
  • event_name_id: 对应原始数据中name_字段在data_dict表中的索引。
  • +
  • ts: 对应原始数据中time_(ms)字段转化成ns
  • +
  • type: 对应原始数据中type_字段
  • +
  • time_zone: 对应原始数据中tz_字段
  • +
  • pid: 进程号,对应原始数据中的pid_
  • +
  • tid: 线程号, 对应原始数据中tid_
  • +
  • uid: 对应原始数据中uid_
  • +
  • level: 对应原始数据中level_
  • +
  • tag: 对应原始数据中tag_
  • +
  • event_id: 对应原始数据id_
  • +
  • seq: 对应原始数据中seq_
  • +
  • info: 对应原数据中info_字段
  • +
  • contents: 取源数据中除了以上字段外的其他字段,组成新的json数据。
  • +
+
+ + + - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { - display: none; - } - - - -
-

TraceStreamer数据表概述

- -

- TraceStreamer可以将trace数据源转化为易于理解和使用的数据库。用户可以通过SmartPerf界面直观的研究系统跟踪数据,也可在理解TraceStreamer生成的数据库的基础上,在TraceStreamer的交互模式或者Smartperf的数据库查询模式下,使用SQL查询语句自由组装查看用户关心的数据。下文将对TraceStreamer生成的数据库进行详细描述,给用户使用SQL查询系统跟踪数据提供帮助。 -

-

TraceStreamer输出的数据表分类

- -
    -
  • - 常规泳道图数据表 -
    - GitHub Logo -
  • -
  • - native memory数据源相关表 -
    - GitHub Logo -
  • -
  • - perf相关数据表 -
    - GitHub Logo -
  • -
  • - hisysevent相关数据表 -
    - GitHub Logo -
  • -
-

TraceStreamer输出数据库包含以下表格

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
表名称作用
animation记录动效的响应时延和完成时延
app_name记录HiSysEvent事件的事件名与IDE部分事件的字段名为APPNAME中存放的相关信息的映射关系
app_startup记录了应用启动相关数据
args记录方法参数集合
bio_latency_sample记录IO操作相关方法调用,及调用栈数据
callstack - 记录调用堆栈和异步调用信息,其中depth,stack_id和parent_stack_id仅在非异步调用中有效。当cookid不为空时,为异步调用,此时callid为进程唯一号,否则为线程唯一号 -
clk_event_filter记录时钟相关的信息
clock_event_filter此结构用来维护时钟事件,cpu与唯一的ID做关联
clock_snapshot时钟号和时间,时钟名的映射表
cpu_measure_filtercpu事件过滤器表
cpu_usage记录CPU使用率事件
datasource_clockid数据源和时钟号的映射表
data_dict记录常用的字符串,将字符串和索引关联,降低程序运行的内存占用,用作辅助数据
data_type记录数据类型和typeId的关联关系
device_info记录设备分辨率和帧率
device_state记录设备屏幕亮度,蓝牙,位置,wifi,音乐,媒体等信息
diskio记录磁盘读写数据事件
dynamic_frame记录动效帧的分辨率和结束时间等
ebpf_callstack记录了采样相关信息
file_system_sample记录了调用栈的相关信息
frame_maps记录应用到RS的帧的映射关系
frame_slice记录RS(RenderService)和应用的帧渲染
gpu_slice记录RS的帧对应的gpu渲染时长
hidump记录FPS(Frame Per Second)数据
hisys_event_measure记录了HiSysEvent事件相关数据,目前HiSysEvent事件包括了异常事件,IDE事件,器件状态事件
instant记录Sched_waking, sched_wakeup事件, 用作ThreadState表的上下文使用
irq记录中断相关事件
js_config记录了arkTs数据采集的相关配置
js_cpu_profiler_node记录了cpu profiler中node节点的数据
js_cpu_profiler_sample记录了cpu profiler中sample节点的数据
js_heap_edges记录了js内存数据类对象对应的成员的信息
js_heap_files记录了js内存数据的名称和时间
js_heap_info记录了js内存数据类型,如nodes和edges的字段类型和数据总数
js_heap_location记录了js内存location节点相关数据
js_heap_nodes记录了js内存类对象和其成员的对应关系
js_heap_sample记录了timeline模式下的时间轴信息
js_heap_string记录了js内存数据中的字符串
js_heap_trace_function_info记录了timeline模式下的调用栈的每个函数信息
js_heap_trace_node记录了timeline模式下的调用栈信息
live_process记录了一些实时的进程中执行的一些数据
log记录hilog打印日志数据
measure记录所有的计量值
measure_filter - 记录一个递增的filterid队列,所有其他的filter类型在获取过程中,均从此数据列表中获取下一个可用的filter_id并做记录 -
memory_ashmem记录了进程所占用的ashmem相关信息
memory_dma记录了进程占用的DMA内存相关信息
memory_process_gpu记录进程占用GPU内存相关信息
memory_window_gpu记录窗口占用GPU内存相关信息
meta记录执行解析操作相关的基本信息
native_hook记录堆内存申请与释放相关的数据
native_hook_frame记录堆内存申请与释放相关的调用栈
native_hook_statistic记录堆内存申请与释放相关的统计信息
network抓取网络信息传输时产生的一些相关信息
paged_memory_sample记录内存操作相关方法调用,及调用栈数据
perf_callchain记录Hiperf采样数据的调用栈信息
perf_files记录Hiperf工具采集到的函数符号表和文件名
perf_report记录Hiperf工具采集数据时的配置信息。包括
perf_sample记录Hiperf工具的采样信息
perf_thread记录Hiperf工具采集到的进程和线程数据
process记录所有的进程信息
process_filter过滤进程
process_measure保存进程的所有计量值
process_measure_filter将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id
raw此数据结构主要作为ThreadState的上下文使用,这张表是sched_waking,sched_wakup, cpu_idle事件的原始记录
sched_slice此数据结构主要作为ThreadState的上下文使用,这张表是sched_switch事件的原始记录
smaps记录进程的内存消耗的相关信息采样
stat - 此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解 -
static_initalize记录了so初始化相关数据
symbols记录系统调用名称和其函数指针的对应关系,trace中用addr来映射function_name来节省存储空间
syscall记录用户空间函数与内核空间函数相互调用记录
sys_event_filter记录所有的filter
sys_mem_measure记录了所有的系统内存相关的测量信息
task_pool记录任务池相关数据,与callstack表相关联
thread记录所有的线程信息
thread_filter过滤线程
thread_state记录线程状态信息
trace_config记录trace数据源,proto的事件-plugin与其process_name
trace_range记录ftrace数据与其他类型数据的时间交集,供前端展示数据时使用
-

表与事件来源

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
表名称事件源插件名备注
animation-ftrace-plugin记录动效的响应时延和完成时延
app_name-hisysevent-pluginJSON数据源
args-ftrace-plugin配合callstack使用
bio_latency_sample--IO操作相关方法调用,及调用栈数据
callstack-ftrace-plugin异步或非异步的调用
cpu_measure_filter-ftrace-plugincpu跟踪器,cpu频率等
cpu_usage-cpu-plugincpu使用率
data_dict通用的-所有字符串的记录
data_type通用的-辅助表
device_info-ftrace-plugin记录设备分辨率和帧率
device_state通用的hisysevent-plugin记录设备屏幕亮度,蓝牙,位置等信息
dynamic_frame-ftrace-plugin动效帧的分辨率和结束时间等
ebpf_callstack--磁盘读写相关的数据
file_system_callstack--ebpf文件系统
file_system_sample--ebpf文件系统
frame_maps-ftrace-plugin帧渲染数据,app到RS的映射
frame_slice-ftrace-plugin帧渲染数据
gpu_slice-ftrace-plugingpu渲染时长
hidump-hidump-pluginFPS数据
hisys_event_measure-hisysevent-pluginJSON数据源
instant-ftrace-pluginwaking和wakeup事件
irq-ftrace-plugin记录中断事件
js_config-arkts-pluginarkTs数据采集的配置
js_cpu_profiler_node-arkts-plugin记录了cpu profiler中node节点的数据
js_cpu_profiler_sample-arkts-plugin记录了cpu profiler中sample节点的数据
js_heap_edges-arkts-pluginjs内存数据
js_heap_files-arkts-pluginjs内存数据
js_heap_info-arkts-pluginjs内存数据
js_heap_location-arkts-pluginjs内存数据
js_heap_nodes-arkts-pluginjs内存数据
js_heap_sample-arkts-pluginjs内存数据
js_heap_string-arkts-pluginjs内存数据
js_heap_trace_function_info-arkts-pluginjs内存数据
js_heap_trace_node-arkts-pluginjs内存数据
app_startup-ftrace-plugin应用启动数据
static_initalize-ftrace-pluginso初始化数据
live_process-process-pluginMonitor数据
network-network-pluginMonitor数据
diskio-diskio-pluginMonitor数据
log-hilog-plugin系统日志
measure通用的-系统中的计量值(数值型)
measure_filter通用的-计量值的查询辅助表
memory_ashmem-memory-plugin进程所占用ashmem相关信息
memory_dma-memory-plugin进程占用的DMA内存相关信息
memory_process_gpu-memory-plugin进程占用GPU内存相关信息
memory_window_gpu-memory-plugin窗口占用GPU内存相关信息
meta通用的-记录解析现场数据(解析时间,数据类型,解析工具等)
native_hook-nativehook/hookdaemonmalloc && mmap内存数据
native_hook_frame-nativehook/hookdaemonnative_hook调用栈数据
native_hook_statistic-nativehook/hookdaemonmalloc && mmap统计数据
paged_memory_sample--网络数据传输相关的信息
perf_callchain-perf-pluginperf数据(非插件模式)
perf_files--perf数据(非插件模式)
perf_report--perf数据(非插件模式)
perf_sample--perf数据(非插件模式)
perf_thread--perf数据(非插件模式)
process-ftrace-plugin进程信息
process_filter-ftrace-plugin进程计量表的辅助表
process_measure-ftrace-plugin进程内存
process_measure_filter-ftrace-pluginprocess_measure的辅助表
raw-ftrace-plugin线程唤醒信息
sched_slice-ftrace-plugin配合现场状态表使用,dsched_switch的原始数据
smaps-memory-plugin进程的内存消耗
stat通用的-记录不同种类数据的数据量
symbols-ftrace-plugin符号表(地址到字符串的映射)
syscall-ftrace-plugin系统调用 sys_enter/exit
sys_event_filter-ftrace-plugin
sys_mem_measure-memory-plugin系统内存
thread通用的-线程信息(常用)
thread_state通用的ftrace-plugin线程调度图(常用)
trace_config通用的hisysevent-plugin记录trace数据源
trace_range通用的-trace数据的时长
thread_filter通用的ftrace-plugin线程计量跟踪表(比较少用)
clock_snapshot通用的通用的时钟号和时间,时钟名的映射表
datasource_clockid通用的通用的数据源和时钟号的映射表
task_pool--任务池数据
-

- 表格关系图 -

- -
-

进程表与线程表关系

- -

- 当一个进程或者线程结束后,系统可能再次将该进程号或者线程号分配给其他进程或者线程,造成一个进程号或线程号代表多个进程或线程的情况。 -
- Process和Thread表中的id字段可以唯一标识进程和线程。process表中的id在其他表中用作ipid字段。thread表中的id在其他表中用作itid字段。 -
- thread表通过ipid字段关联process表的id字段,可以查询线程归属进程。 -
- GitHub Logo -

-

查询举例

- -
    -
  • - 已知pid = 123,查看当前进程下的所有线程信息,可以使用如下SQL语句: -
    - - select thread.* from thread, process where process.pid = 123 and thread.ipid = process.id - -
  • -
-

线程表与线程运行状态表关系图

-

- thread_state表记录所有线程的运行状态信息,包含ts(状态起始时间),dur(状态持续时间),cpu, itid, - state(线程状态)。 thread表的id字段与thread_state表的itid字段相关联。 -
- GitHub Logo -

-

查询举例

-
    -
  • - 已知tid = 123, 查看当前线程的所有运行状态信息,可以使用如下SQL语句: -
    - - select thread_state.* from thread, thread_state where thread.tid = 123 and thread.id = thread_state.itid - -
  • -
-

堆内存数据变化表关系图

- -

- native_hook表记录堆内存申请(AllocEvent)和释放(FreeEvent)数据。native_hook表通过ipid和itid字段分别与process和thread表的id字段关联,通过callChainId与native_hook_frame表的callChainId字段相关联。 -
- native_hook表字段解释如下: -

-
    -
  • - callChainId:唯一标识一次堆内存申请或释放, - 通过与native_hook_frame表关联可以拿到当前申请或释放的函数调用堆栈。 -
  • -
  • addr:堆内存申请/释放的地址。
  • -
  • native_hook_size:堆内存申请/释放的大小。
  • -
-

- native_hook_frame表记录内存申请/释放的调用堆栈。通过callChainId区分一组调用堆栈,depth为堆栈深度,depth为0时,表示当前行为栈顶数据。 -
- GitHub Logo -

-

- native_hook_statistic表记录内存申请/释放的统计信息。通过callChainId区分一组调用堆栈。每个统计事件将记录当前事件的callChainId,并统计当前调用栈内存分配/释放的总次数和总大小。 -
- GitHub Logo -

-

查询举例

- -
    -
  • - 已知tid = 123,查看当前线程的所有堆内存变化信息,可以使用如下SQL语句: -
    - - select native_hook.* from thread, native_hook where thread.tid = 123 and thread.id = native_hook.itid - -
  • -
  • - 已知callchainid = 1, 查看当前内存变化调用堆栈 -
    - select * from native_hook_frame where callchain_id = 1 -
  • -
  • - 已知callchainid = 1, 查看当前内存变化调用堆栈对应的统计信息 -
    - select * from native_hook_statistic where callchain_id = 1 -
  • -
-

日志表与进程线程表关系图

-

- log表记录日志信息。可以根据seq字段的连续性,来判断是否存在日志丢失的情况。 -
- GitHub Logo -

-

查询举例

-
    -
  • - 已知tid = 123,查看当前线程的所有error级别的日志,可以使用如下SQL语句: -
    - select * from log where tid = 123 and level = "error" -
  • -
-

perf表之间关系图

- -
    -
  • perf_report:此表记录Hiperf工具采集数据时的配置信息。
  • -
  • perf_thread:此表记录hiperf采集到的进程和线程数据。
  • -
  • - perf_sample:此表中记录Hiperf工具的采样信息。sample_id唯一表识一次采样记录,与perf_callchain表中的sample_id字段相关联。thread_id为线程号。与perf_thread表中的thread_id字段相关联。event_type_id为当前采样的事件类型id,与perf_report表中的id字段相关联。 -
  • -
  • perf_callchain:此表格记录的是调用栈信息。
  • -
  • - Perf_files:此表格主要存放着获取到的函数符号表和文件信息。file_id唯一表识一个文件,与perf_callchain表中的file_id字段相关联。 -
  • -
-

GitHub Logo

-

查询举例

- -
    -
  • -

    - 已知同步后的时间戳为28463134340470,查询采样数据 -
    - select * from perf_sample where timestamp_trace = 28463134340470 -

    -
  • -
  • -

    - 已知同步后的时间戳为28463134340470,查询采样数据对应的的调用栈信息 -
    - - select A.* from perf_callchain as A, perf_sample as B where B.timestamp_trace = 28463134340470 and - A.sample_id = B.sample_id - -

    -
  • -
  • -

    - 已知同步后的时间戳为28463134277762,查询采样数据的函数名及文件路径 -
    - - select A.*, B.name, C.path from perf_sample as A, perf_callchain as B, perf_files as C where - A.timestamp_trace = 28463134277762 and B.sample_id = A.sample_id and B.callchain_id = 0 and B.file_id = - C.file_id and C.serial_id = 0 - -

    -
  • -
  • -

    - 已知线程号为6700,查询所有的采样记录 -
    - select * from perf_sample where thread_id = 6700 -

    -
  • -
  • -

    - 已知进程号为7863,查询所有的采样记录 -
    - - select A.* from perf_sample as A, perf_thread as B where B.process_id = 7863 and A.thread_id = B.thread_id - -

    -
  • -
  • -

    - 查询所有采样对应的事件类型 -
    - - select A.*, B.report_value from perf_sample as A, perf_report as B where A.event_type_id = B.id - -

    -
  • -
-

帧渲染表之间的关系图

- -

- frame_slice: 记录RS(RenderService)和应用的帧渲染。 -
- gpu_slice: 记录RS的帧对应的gpu渲染时长。 -
- frame_maps:记录应用到RS的帧的映射关系。 -
- GitHub Logo -

-

查询示例

- -
    -
  • -

    - 已知进程,查询进程对应的实际渲染帧 -
    - select * from frame_slice where ipid = 1 -

    -
  • -
  • -

    - 已知进程的实际渲染帧的dst为12,求其对应的RS进程的渲染帧 -
    - select * from frame_slice where id = 12 -

    -
  • -
  • -

    - 已知RS的渲染帧在frame_slice中所在行是14,求其对应的GPU渲染时长 -
    - select * from gpu_slice where frame_row = 14 -

    -
  • -
-

JS内存数据表关系图

-

js_heap_files:记录js内存数据的文件名和文件索引

-

-

- js_heap_nodes:记录js内存类对象数据 -
- js_heap_edges:记录js内存类对象的成员数据 -
- js_heap_trace_node:记录timeline的调用栈信息 -
- js_heap_sample:记录timeline的时间轴信息 -
- -

-

TraceStreamer输出数据库表格详细介绍

-

app_name表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
flagINT
app_nameINT
app_keyINT
-

表描述

-

记录HiSysevent上报事件中的IDE相关事件中APPNAME的表关联信息。

-

字段详细描述

-
    -
  • id:用于与表hisys_event_measure表中的key_id字段做对应
  • -
  • app_name:对应的事件的信息ID
  • -
  • app_key:对应的事件的APPNAME字段的信息ID
  • -
-

args表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
keyINT
datatypeINT
valueINT
argsetINT
-

表描述

-

记录方法的参数集合。

-

字段详细描述

-
    -
  • key:键
  • -
  • datatype:数据类型
  • -
  • value:取值
  • -
  • argset:参数集合
  • -
-

bio_latency_sample表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
callchain_idINT
datatypeINT
typeINT
ipidINT
itidINT
start_tsINT
end_tsINT
latency_durINT
tierINT
sizeINT
block_numberTEXT
pathTEXT
dur_per_4kINT
-

表描述

-

记录IO操作相关方法调用,及调用栈数据。

-

字段详细描述

-
    -
  • callchain_id:调用栈的唯一标识。与ebpf_callstack表中Callchain_id字段关联
  • -
  • - type:事件类型其取值为枚举类型(DATA_READ,DATA_WRITE,METADATA_READ,- METADATA_WRITE,PAGE_IN,PAGE_OUT) -
  • -
  • ipid:TS内部进程号
  • -
  • itid:TS内部线程号
  • -
  • start_ts:开始时间
  • -
  • end_ts:结束时间
  • -
  • latency_dur:总延迟
  • -
  • tier:优先级
  • -
  • size:文件大小
  • -
  • block_number:数据量大小(一般为4K)
  • -
  • path:路径id
  • -
  • dur_per_4k:每4k数据的平均延迟
  • -
-

callstack表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
tsINT
durINT
callidINT
catTEXT
identifyINT
nameTEXT
depthINT
cookieINT
parent_idINT
argsetidINT
chainIdTEXT
spanIdTEXT
parentSpanIdTEXT
flagTEXT
argsTEXT
-

表描述

-

- 记录调用堆栈和异步调用信息,其中depth,stack_id和parent_stack_id仅在非异步的调用中有效。当cookid不为空时,为异步调用,此时callid为进程唯一号,否则为线程唯一号。 -

-

字段详细描述

-
    -
  • dur:调用时长
  • -
  • callid:调用者的ID,比如针对线程表里面的id
  • -
  • identify:调用栈的名字,与表dataDict相关联能够取出其string值
  • -
  • name:调用名称
  • -
  • depth:调用深度
  • -
  • parent_id:父调用的id
  • -
  • spanId:分布式调用关联关系
  • -
  • flag:C表示分布式调用发送方,S表示接受方
  • -
  • args:分布式调用函数参数
  • -
-

clk_event_filter表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
cpuINT
-

表描述

-

记录时钟信息。

-

字段详细描述

-
    -
  • Type:时钟事件类型
  • -
  • Name:时钟事件名称
  • -
-

clock_event_filter表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
cpuINT
-

表描述

-

此结构用来维护时钟事件,cpu与唯一的ID做关联。

-

主要字段描述

-
    -
  • Type:时钟事件类型
  • -
  • Name:时钟事件名称
  • -
-

cpu_measure_filter表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
cpuINT
-

表描述

-

将cpu号作为key1,cpu的频率,空闲等状态作为key2,唯一确定一个filter_id。

-

主要字段描述

-
    -
  • Id(filterid), cpu:事件名称,cpu号
  • -
-

cpu_usage表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
tsINT
durINT
total_loadREAL
user_loadREAL
system_loadREAL
process_numINT
-

表描述

-

记录了与CPU使用率相关的数据。

-

主要字段描述

-
    -
  • total_load:总负荷
  • -
  • user_load:用户负载
  • -
  • system_load:系统负载
  • -
  • process_num:线程数
  • -
-

data_dict表

-

表结构

- - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
dataTEXT
-

表描述

-

此表记录了一个数据类型ID和字符串的映射。

-

主要字段描述

-
    -
  • id:索引值
  • -
  • data:字符串
  • -
-

data_type表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeIdINT
descTEXT
-

表描述

-

此表记录了一个数据类型ID和数据描述的映射。

-

主要字段描述

-
    -
  • typeId::数据类型id
  • -
  • Desc:数据类型描述
  • -
-

diskio表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
tsINT
durINT
rdINT
wrINT
rd_speedREAL
wr_speedREAL
rd_countINT
wr_countINT
rd_count_speedREAL
wr_count_speedREAL
-

表描述

-

记录了与磁盘读写相关的数据。

-

主要字段描述

-
    -
  • rd_sectors_kb:读数据的速度
  • -
  • wr_sectors_kb:写入数据的速度
  • -
  • ts:时间戳
  • -
-

ebpf_callstack表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
callchain_idINT
depthTEXT
ipTEXT
symbols_idINT
file_path_idINT
-

表描述

-

记录了与磁盘读写相关的数据。

-

主要字段描述

-
    -
  • callchain_id:调用栈的唯一标识
  • -
  • depth:调用栈深度。取值为零时表示栈顶
  • -
  • ip:调用栈ip
  • -
  • symbols_id:调用栈函数名称, 与data_dict中的id字段关联
  • -
  • file_path_id:调用栈函数所属文件路径, 与data_dict中的id字段关联
  • -
-

file_system_sample表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
callchain_idINT
typeINT
ipidINT
itidINT
start_tsINT
end_tsINT
durINT
return_valueTEXT
error_codeTEXT
fdINT
file_idINT
sizeINT
first_argumentTEXT
second_argumentTEXT
third_argumentTEXT
fourth_argumentTEXT
-

表描述

-

记录了调用栈的相关信息。

-

主要字段描述

-
    -
  • callchain_id:调用栈信息ID与file_system_callstack表中call_chain_id字段相关联
  • -
  • type:对应文件操作open,close,read,write
  • -
  • ipid:线程所属的进程ID
  • -
  • start_ts:开始时间
  • -
  • end_ts:结束时间
  • -
  • dur:耗时
  • -
  • return_value:文件操作的返回值
  • -
  • error_code:文件操作发生错误时的错误码
  • -
  • fd:文件描述符fd
  • -
  • file_id:当type为open,close时为其操作的文件路径,当type为read,write时为固定字段(null)
  • -
  • size:在type为read,write时对应的文件的读或者写的大小
  • -
  • first_argument:参数一
  • -
  • second_argument:参数二
  • -
  • third_argument:参数三
  • -
  • fourth_argument:参数四
  • -
-

hidump表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
tsINT
fpsINT
-

表描述

-

此表记录了设备的帧率信息,fps。

-

相关字段描述

-
    -
  • fps:帧率值
  • -
-

hisys_event_measure表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
serialINT
tsINT
name_idINT
key_idINT
typeINT
int_valueREAL
string_valueTEXT
-

表描述

-

记录所有的system event事件的相关数据,及其相关表的映射信息。

-

相关字段描述

-
    -
  • serial:每条数据过来携带唯一一条id作为标识
  • -
  • name_id:存放事件对应的ID,与data_dict表相关联可以取出对应的字段
  • -
  • - key_id:存放事件包含的字段的ID,与表app_name的id字段相关联,找到app_name表的 - id字段对应行的app_key字段与表data_dict表相关联取出对应的字段 -
  • -
  • type:存放事件所包含的字段的值所属的类型为int型还是string(0为int,1为string)
  • -
  • int_value:存放本事件所包含的字段的int型的值
  • -
  • string_value:存放本事件所包含的字段的string型的值
  • -
-

instant表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
tsINT
nameTEXT
refINT
wakeup_fromINT
ref_typeTEXT
valueREAL
-

表描述

-

记录了系统中的waking和wakeup事件。

-

字段描述

-
    -
  • ts:唤醒时间
  • -
  • name:唤醒事件的名称
  • -
  • ref:索引号
  • -
  • wakeup_from:唤醒当前线程的内部线程号(itid)
  • -
  • ref_type:描述了value字段的类型(一般取值为itid)
  • -
  • value:一般为当前线程的内部线程号取值
  • -
-

irq表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
tsINT
durINT
callidINT
catTEXT
nameTEXT
depthINT
cookieINT
parent_idINT
argsetidINT
chainIdTEXT
spanIdTEXT
parentSpanIdTEXT
flagTEXT
argsTEXT
-

表描述

-

记录中断相关事件。

-

相关字段描述

-
    -
  • dur:调用中断时长
  • -
  • callid:调用中断者的ID,比如针对线程表里面的id
  • -
  • cat:调用栈数据类型(取值范围:irq,softirq...)
  • -
  • name:调用中断的名称
  • -
  • depth:中断调用的深度
  • -
  • parent_id:父调用中断的id
  • -
  • spanId:分布式调用中断关联关系
  • -
-

js_config表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
pidINT
typeINT
intervalINT
capture_numeric_valueINT
trace_allocationINT
enable_cpu_profilerINT
cpu_profiler_intervalINT
-

表描述

-

记录arkTs数据采集的相关配置。

-

相关字段描述

-
    -
  • pid:目标进程ID。
  • -
  • - type:JS数据类型,取值与枚举HeapType对应,0表示JS内存数据为snapshot类型,1表示JS内存数据为timeline类型,-1表示没有JS内存数据。 -
  • -
  • interval:当type=0时生效,单位是秒,表示一次snapshot事件和下一次snapshot事件之间的间隔。
  • -
  • capture_numeric_value:当type=0时生效,表示是否同时抓取numeric。
  • -
  • track_allocation:当type=1时生效,表示是否抓取allocations。
  • -
  • enable_cpu_profiler:表示是否存在cpuprofiler的数据。
  • -
  • cpu_profiler_interval:表示cpuprofiler数据的采集间隔。
  • -
-

js_cpu_profiler_node表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
function_idINT
function_indexINT
script_idINT
url_indexINT
line_numberINT
column_numberINT
hit_countINT
childrenINT
parent_idINT
-

表描述

-

记录cpu profiler中node节点的数据。

-

相关字段描述

-
    -
  • function_id: 函数的ID号。
  • -
  • function_index:函数名称在data_dict中的索引号。
  • -
  • script_id:关联到的类对象所在文件的绝对路径ID。
  • -
  • url_index:关联到的类对象所在文件的绝对路径名称在data_dict中的索引号。
  • -
  • line_number:类对象所在文件的行号。
  • -
  • column_number:类对象所在文件的列号。
  • -
  • hit_count:采样次数。
  • -
  • children:子节点的id号。
  • -
  • parent_id:父节点的id号。
  • -
-

js_cpu_profiler_sample表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
function_idINT
start_timeINT
end_timeINT
durINT
-

表描述

-

记录了cpu profiler 中sample节点的数据。

-

相关字段描述

-
    -
  • id: ts内部ID号。
  • -
  • function_id:函数的ID号。
  • -
  • start_time:数据上报的起始时间。
  • -
  • end_time:数据上报的终止时间。
  • -
  • dur:数据上报的间隔时间。
  • -
-

js_heap_edges表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
file_idINT
edge_indexINT
typeINT
name_or_indexINT
to_nodeINT
from_node_idINT
to_node_idINT
-

表描述

-

记录js内存数据类对象对应的成员的信息。

-

相关字段描述

-
    -
  • file_id:文件ID
  • -
  • edge_index:成员的索引号
  • -
  • type:成员的类型,取值范围为js_heap_info表中的edge_types
  • -
  • name_or_index:数据名称,取值为js_heap_string表中的下标索引
  • -
  • to_node:此成员指向的类对象在nodes数组中的索引
  • -
  • from_node_id:类对象ID,该类对象指向此成员数据
  • -
  • to_node_id:此成员指向到的类对象nodes数组中的ID
  • -
-

js_heap_files表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
file_nameTEXT
start_timeINT
end_timeINT
pidINT
-

表描述

-

记录了js内存数据的文件名称和时间。

-

相关字段描述

-
    -
  • id:文件ID
  • -
  • file_name:文件名称
  • -
  • start_time:数据抓取的起始时间
  • -
  • end_time:数据抓取的终止时间
  • -
  • pid:进程号
  • -
-

js_heap_info表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
file_idINT
keyTEXT
typeINT
int_valueINT
str_valueTEXT
-

表描述

-

记录了js内存数据类型,如nodes和edges的字段类型和数据总数。

-

相关字段描述

-
    -
  • file_id:文件ID
  • -
  • key:类型名称
  • -
  • type:数据类型索引
  • -
  • int_value:int类型的数据值,如count类型数据
  • -
  • str_value:string类型的数据值,如typename
  • -
-

js_heap_location表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
file_idINT
object_indexINT
script_idINT
lineINT
columnINT
-

表描述

-

记录了js内存location节点相关数据,此表目前无抓取到的数据。

-

相关字段描述

-
    -
  • file_id:文件ID
  • -
  • object_index:与location关联的类对象的索引,取值为js_heap_nodes的下标索引
  • -
  • script_id:关联到的类对象所在文件的绝对路径ID
  • -
  • line:在类对象所在的文件中的行号
  • -
  • column:在类对象所在的文件中的列号
  • -
-

js_heap_nodes表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
file_idINT
node_indexTEXT
typeINT
nameINT
idTEXT
self_sizeINT
edge_countINT
trace_node_idINT
detachednessINT
-

表描述

-

记录了js内存数据中类对象的数据。

-

相关字段描述

-
    -
  • file_id:文件ID
  • -
  • node_index:类对象的索引
  • -
  • type:类对象的类型
  • -
  • name:类对象的名称
  • -
  • id:类对象的唯一ID
  • -
  • self_size:该类对象所有成员的大小(以字节为单位)
  • -
  • edge_count:该类对象指向的类成员的个数
  • -
  • trace_node_id:该类对象关联到js_heap_trace_node表中的调用栈ID
  • -
  • detachedness:是否可以从window全局对象访问此节点,0表示是,1表示否
  • -
-

js_heap_sample表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
file_idINT
timestamp_usINT
last_assigned_idINT
-

表描述

-

记录了timeline模式下的时间轴信息。

-

相关字段描述

-
    -
  • file_id:文件ID
  • -
  • timestamp_us:时间信息
  • -
  • last_assigned_id:当前时间点的id
  • -
-

js_heap_string表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
file_idINT
file_indexINT
stringTEXT
-

表描述

-

记录了js内存数据中的字符串。

-

相关字段描述

-
    -
  • file_id:文件ID
  • -
  • file_index:索引
  • -
  • string:对应的字符串信息
  • -
-

js_heap_trace_function_info表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
file_idINT
function_indexINT
function_idINT
nameINT
script_nameINT
script_idINT
lineINT
columnINT
-

表描述

-

记录了timeline模式下的调用栈的每个函数信息。

-

相关字段描述

-
    -
  • file_id:文件ID
  • -
  • function_index:函数索引
  • -
  • function_id:函数ID
  • -
  • name:函数名称
  • -
  • script_name:关联到的类对象所在文件的绝对路径名称
  • -
  • script_id:关联到的类对象所在文件的绝对路径ID
  • -
  • line:在类对象所在的文件中的行号
  • -
  • column:在类对象所在的文件中的列号
  • -
-

js_heap_trace_node表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
file_idINT
idINT
function_info_indexINT
countINT
sizeINT
parent_idINT
-

表描述

-

记录了timeline模式下的调用栈的信息。

-

相关字段描述

-
    -
  • file_id:文件ID
  • -
  • id:调用栈节点索引
  • -
  • function_info_index:函数信息索引
  • -
  • count:调用栈个数
  • -
  • size:调用栈大小
  • -
  • parent_id:调用栈父节点
  • -
-

app_startup表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
call_idINT
ipidINT
tidINT
start_timeINT
end_timeINT
start_nameINT
packed_nameINT
-

表描述

-

记录了应用启动的相关信息。

-

相关字段描述

-
    -
  • call_id:调用者的ID,比如针对线程表里面的id
  • -
  • ipid:内部进程号
  • -
  • tid:内部线程号
  • -
  • start_time:阶段开始时间
  • -
  • end_time:阶段结束时间
  • -
  • start_name:阶段名称
  • -
  • packed_name:应用名称
  • -
-

static_intialize表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
call_idINT
ipidINT
tidINT
start_timeINT
end_timeINT
so_nameINT
depthINT
-

表描述

-

记录了so初始化的相关信息。

-

相关字段描述

-
    -
  • call_id:调用者的ID,比如针对线程表里面的id
  • -
  • ipid:内部进程号
  • -
  • tid:内部线程号
  • -
  • start_time:阶段开始时间
  • -
  • end_time:阶段结束时间
  • -
  • so_name:so文件名称
  • -
  • depth:泳道图的深度
  • -
-

live_process表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
tsINT
durINT
cpu_timeINT
process_idINT
process_nameTEXT
parent_process_idINT
uidINT
user_nameTEXT
cpu_usageREAL
pss_infoINT
thread_numINT
disk_writesINT
disk_readsINT
-

表描述

-

记录了一些实时的进程中执行的一些数据(Monitor)。

-

主要字段描述

-
    -
  • process_id:进程id
  • -
  • process_name:进程名
  • -
  • parent_process_id:父进程的id
  • -
  • uid:用户id
  • -
  • user_name:用户名
  • -
  • cpu_usage:cpu使用率
  • -
  • pss_info:进程信息
  • -
  • thread_num:线程数量
  • -
  • disk_writes:磁盘写量
  • -
  • disk_reads:磁盘读量
  • -
-

log表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
seqINT
tsINT
pidINT
tidINT
levelTEXT
tagTEXT
contextTEXT
origintsINT
-

表描述

-

记录日志信息。

-

关键字段描述

-
    -
  • Seq:日志序号,保证日志解析的准确性
  • -
  • Ts:打印日志时间
  • -
  • Pid:日志的进程号
  • -
  • Tid:日志的线程号
  • -
  • Level:日志级别
  • -
  • Tag:日志标签
  • -
  • Context:日志内容
  • -
-

measure表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
typeTEXT
tsINT
durINT
valueINT
filter_idINT
-

表描述

-

记录所有的计量值。

-

关键字段描述

-
    -
  • type:固定字段(measure)
  • -
  • ts:事件时间
  • -
  • dur:该值持续的时长
  • -
  • value:数值
  • -
  • filter_id:对应filter表中的ID
  • -
-

measure_filter表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
source_arg_set_idINT
-

表描述

-

- 记录一个递增的filterid队列,所有其他的filter类型在获取过程中,均从此数据列表中获取下一个可用的filter_id并做记录。 -

-

字段详细描述

-

- 过滤分类(type),过滤名称(key2),数据ID(key1)。 -
- 数据ID在process_measure_filter, sys_event_filter中作为id。 -

-

meta表

-

表结构

- - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
nameTEXT
valueTEXT
-

表描述

-

- 此表记录了数据解析或导出时的一些现场数据,比如使用的TraceStreamer版本, - 工具的发布时间,数据解析的时间,数据的持续时长,以及原始数据的格式。 -

-

主要字段描述

-
    -
  • Name:指定元数据的key
  • -
  • Value:指定元数据的value
  • -
-

native_hook表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
callChainIdINT
ipidINT
itidINT
event_typeTEXT
sub_type_idNUM
start_tsINT
end_tsINT
durINT
addrINT
heap_sizeINT
all_heap_sizeINT
current_size_durINT
last_lib_idINT
-

表描述

-

记录native_hook抓取的某个进程的堆内存,内存映射相关数据。

-

关键字段描述

-
    -
  • callChainId:唯一标识一条native_hook数据
  • -
  • event_type:事件类型取值范围(AllocEvent,FreeEvent,MmapEvent, MunmapEvent)
  • -
  • sub_type_id:子事件类型(只有sub_type字段为MmapEvent时,该字段才会有值)
  • -
  • start_ts:申请内存开始时间
  • -
  • end_ts:释放内存时间
  • -
  • Dur:申请内存活跃时间
  • -
  • Addr:申请内存地址
  • -
  • mem_size:申请或释放内存大小
  • -
  • - all_mem_size:从采集数据开始到当前时刻,申请并活跃的内存总量。 - event_type为AllocEvent或者FreeEvent时,表示活跃的堆内存总量。当event_type为MmapEvent或者MunmapEvent时,表示活跃的映射内存总量 -
  • -
  • current_size_dur:表示当前活跃内存总量的持续时间
  • -
  • last_lib_id:函数调用栈他最后一个函数所属的文件路径,除了文件名中带musl和libc++
  • -
-

native_hook_frame表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
callchain_idINT
depthINT
symbol_idINT
file_idINT
offsetINT
symbol_offsetINT
-

表描述

-

记录了内存的申请和释放的堆栈。

-

相关字段描述

-
    -
  • callchain_id:标识一组调用堆栈
  • -
  • depth:调用栈深度
  • -
  • symbol_id:函数名
  • -
  • file_id:函数所属文件
  • -
-

native_hook_statistic表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
callchain_idINT
ipidINT
tsINT
typeINT
apply_countINT
release_countINT
apply_sizeINT
release_sizeINT
-

表描述

-

该表记录了内存申请/释放的统计信息。

-

关键字段描述

-
    -
  • callchain_id:内存分配的回调链id
  • -
  • ipid:进程id
  • -
  • ts:统计数据上报时间
  • -
  • type:事件类型,0代表malloc事件,1代表mmap事件
  • -
  • apply_count:当前调用栈内存分配总次数
  • -
  • release_count:当前调用栈内存释放总次数
  • -
  • apply_size:当前调用栈累计分配总大小
  • -
  • release_size:当前调用栈累计释放总大小
  • -
-

network表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
tsINT
durINT
txINT
rxINT
tx_speedREAL
rx_speedREAL
packet_inINT
packet_in_secREAL
packet_outINT
packet_out_secREAL
net_typeTEXT
-

表描述

-

记录了网络数据传输相关的信息。

-

主要字段描述

-
    -
  • tv_sec:时间,秒为单位
  • -
  • tv_nsec:时间,纳秒为单位
  • -
  • tx_bytes:网络数据的写入量
  • -
  • rx_bytes:网络数据的读取量
  • -
-

paged_memory_sample表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
callchain_idINT
typeINT
ipidINT
start_tsINT
end_tsINT
durINT
sizeINT
addrTEXT
itidINT
-

表描述

-

记录了网络数据传输相关的信息。

-

主要字段描述

-
    -
  • callchain_id: 取值相同的一组数据,表示一个完整的调用栈
  • -
  • type:事件类型
  • -
  • ipid:TS内部进程号
  • -
  • start_ts:开始时间
  • -
  • end_ts:结束时间
  • -
  • dur:持续时间
  • -
  • size:操作页数
  • -
  • itid:TS内部线程号
  • -
-

perf_callchain表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
callchain_idINT
depthINT
vaddr_in_fileINT
file_idINT
symbol_idINT
nameTEXT
-

表描述

-

记录了Hiperf采样数据的调用栈信息。

-

主要字段描述

-
    -
  • callchain_id:标识一组调用堆栈
  • -
  • depth:调用栈深度
  • -
  • vaddr_in_file:函数在文件中的虚拟地址
  • -
  • file_id:与PerfFiles中的file_id字段相关联
  • -
  • symbol_id:与PerfFiles中的symbol_id相关联
  • -
  • name:函数名
  • -
-

perf_files表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
file_idINT
serial_idINT
symbolTEXT
pathTEXT
-

表描述

-

记录Hiperf工具采集到的函数符号表和文件名。

-

主要字段描述

-
    -
  • file_id:文件编号
  • -
  • serial_id:一个文件中可能有多个函数,serial_id表示函数的编号
  • -
  • symbol:函数名
  • -
  • path:文件路径
  • -
-

perf_report表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
report_typeTEXT
report_valueTEXT
-

表描述

-

- 记录Hiperf工具采集数据时的配置信息。包括:抓取的事件类型,抓取数据的命令, 抓数据时指定的进程名称。 -

-

主要字段描述

-
    -
  • - report_type:数据类型。取值只有三种类型:config_name(事件类型), workload(抓取的进程名), - cmdline(抓取命令) -
  • -
  • report_value:对应类型的取值
  • -
-

perf_sample表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
callchain_idINT
timestampINT
thread_idINT
event_countINT
event_type_idINT
timestamp_traceINT
cpu_idINT
thread_stateTEXT
-

表描述

-

记录Hiperf工具的采样信息。

-

主要字段描述

-
    -
  • timestamp:未进行时钟源同步的时间戳
  • -
  • thread_id:线程号
  • -
  • event_count:采样统计
  • -
  • event_type_id:事件类型编号。与PerfReport表的id字段相关联
  • -
  • timestamp_trace:时钟源同步后的时间戳
  • -
  • cpu_id:cpu核编号
  • -
  • - thread_state:线程状态。采样对应Sched_Waking事件时,为Runing;对应Sched_Switch事件时,为Suspend。其余事件类型,为“-” -
  • -
-

perf_thread表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
thread_idINT
process_idINT
thread_nameTEXT
-

表描述

-

记录Hiperf工具采集到的进程和线程数据。

-

主要字段描述

-
    -
  • thread_id:线程号
  • -
  • process_id:进程号
  • -
  • thread_name:线程名
  • -
-

process表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
ipidINT
typeTEXT
pidINT
nameTEXT
start_tsINT
switch_countINT
thread_countINT
slice_countINT
mem_countINT
-

表描述

-

记录了进程相关数据。

-

关键字段描述

-
    -
  • id:进程在数据库重新重新定义的id,从0开始序列增长
  • -
  • ipid:TS内部进程id
  • -
  • type:固定取值:process
  • -
  • pid:进程的真实id
  • -
  • name:进程名字
  • -
  • start_ts:开始时间
  • -
  • switch_count:统计内部有多少个线程有切换
  • -
  • thread_count:统计其线程个数
  • -
  • slice_count:进程内有多个线程有slice数据
  • -
  • mem_count:进程是否有内存数据
  • -
-

process_filter表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
ipidINT
-

表描述

-

- 将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id, - filter_id同时被记录在filter表中。 -

-

主要字段描述

-
    -
  • id:进程id
  • -
  • type:固定取值:process_filter
  • -
  • name:进程名
  • -
  • ipid:该进程表中的id与process表中的id相关联
  • -
-

process_measure表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
typeTEXT
tsINT
valueNUM
filter_idINT
-

表描述

-

保存进程的内存,堆栈值等所有计量值信息。

-

字段详细描述

-
    -
  • ts:事件时间
  • -
  • value:数值
  • -
  • filter_id:对应process_measure_filter表中的ID
  • -
-

process_measure_filter表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
ipidINT
-

表描述

-

- 将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id, - filter_id同时被记录在measure_filter表中。 -

-

字段详细描述

-
    -
  • type:固定取值:process_measure_filter
  • -
  • name:cpu状态名
  • -
  • ipid:进程内部编号
  • -
-

raw表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
tsINT
nameTEXT
cpuINT
itidINT
-

表描述

-

记录了系统中的waking、wakup、cpu_idel、cpu_frequency数据。

-

相关字段描述

-
    -
  • type:固定字段(raw)
  • -
  • name:调度名称(取值:cpu_idle,sched_wakeup,sched_waking)
  • -
  • cpu:事件发生在哪个CPU
  • -
  • itid:时间对应哪个utid
  • -
-

sched_slice表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
tsINT
durINT
ts_endINT
cpuINT
itidINT
end_stateTEXT
priorityINT
-

表描述

-

此数据结构主要作为ThreadState的上下文使用,这张表是sched_switch事件的原始记录。

-

主要字段描述

-
    -
  • ts:事件发生事件
  • -
  • type:固定字段(sched_slice)
  • -
  • dur:状态持续时长
  • -
  • ts_end:状态结束时长
  • -
  • cpu:事件发生在哪个cpu
  • -
  • itid:事件对应哪个utid
  • -
  • end_state:线程的终结状态
  • -
-

smaps表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
timestampINT
start_addrTEXT
end_addrTEXT
dirtyINT
swapperINT
resident_sizeINT
pssINT
virtaul_sizeINT
resideREAL
protection_idINT
path_idINT
-

表描述

-

记录进程的内存消耗的相关信息采样。

-

主要字段描述

-
    -
  • id:状态持续时长
  • -
  • timestamp:事件发生事件
  • -
  • start_addr:内存段地址的起始位置
  • -
  • end_addr:内存段地址的结束位置
  • -
  • dirty:其他进程共享的被写的页的大小 + 已被改写的私有页面的大小
  • -
  • swapper:存在于交换分区的数据大小
  • -
  • resident_size:实际分配的内存大小
  • -
  • pss:平摊计算后的实际物理使用内存
  • -
  • virtaul_size:虚拟内存空间的大小
  • -
  • reside:实际分配的内存大小与虚拟内存空间的大小的比
  • -
  • protection_id:内存段的权限id与表data_dict的id字段相关联
  • -
  • path_id:如果区域是从文件映射的,则这是文件的名称对应的id序号与表data_dict的id字段相关联
  • -
-

stat表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
event_nameTEXT
stat_typeTEXT
countINT
serverityTEXT
sourceTEXT
-

表描述

-

- 此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解。 -

-

主要字段描述

-
    -
  • event_name:数据类型
  • -
  • stat_type:数据状态
  • -
  • count:数据条数
  • -
  • severity:严重级别
  • -
  • source:数据来源
  • -
-

symbols表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
funcnameTEXT
addrINT
-

表描述

-

此表记录了被调用函数与其地址的映射关系。

-

相关字段描述

-
    -
  • funcname:系统调用名称
  • -
  • adr:系统调用地址
  • -
-

syscall表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
syscall_numINT
typeTEXT
ipidINT
tsINT
retINT
-

表描述

-

记录用户空间函数与内核空间函数相互调用记录。

-

相关字段描述

-
    -
  • syscall_num:系统调用的序号
  • -
  • type:固定取值:enter或者exit
  • -
  • ipid:线程所属的进程ID
  • -
  • ts:时间戳
  • -
  • ret:返回值,在type为exit时有效
  • -
-

sys_event_filter表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
-

表描述

-

记录所有的filter。

-

相关字段描述

-
    -
  • type:文件类型
  • -
  • name:文件名
  • -
-

sys_mem_measure表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
typeTEXT
tsINT
valueINT
filter_idINT
-

表描述

-

记录系统内存与系统虚拟内存。

-

相关字段描述

-
    -
  • ts:事件时间
  • -
  • value:数值
  • -
  • filter_id:对应filter表中的ID
  • -
-

thread表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
itidINT
typeTEXT
tidINT
nameTEXT
start_tsINT
end_tsINT
ipidINT
is_main_threadINT
switch_countINT
-

表描述

-

记录了线程相关数据。

-

字段详细描述

-
    -
  • id:线程在数据库重新重新定义的id,从0开始序列增长
  • -
  • itid:TS内部线程id
  • -
  • type:固定字段(thread)
  • -
  • tid:线程号
  • -
  • name:线程名
  • -
  • start_ts:开始时间
  • -
  • end_ts:结束时间
  • -
  • ipid:线程所属的进程id, 关联process表中的ID
  • -
  • is_main_thread:是否主线程,主线程即该线程实际就是进程本身
  • -
  • switch_count:当前线程的切换次数
  • -
-

thread_filter表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
nameTEXT
itidINT
-

表描述

-

- 将线程ID作为key1,线程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id, - filter_id同时被记录在filter表中。 -

-

主要字段描述

-
    -
  • id:线程id
  • -
  • type:线程类型
  • -
  • name:线程名称
  • -
  • itid:该表中的tid与thread表中的tid相关联
  • -
-

thread_state表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
typeTEXT
tsINT
durINT
cpuINT
itidINT
tidINT
pidINT
stateTEXT
-

表描述

-

记录了线程状态相关的数据。

-

字段详细描述

-
    -
  • id:线程状态在数据库中的id,从0开始序列增长
  • -
  • ts:该线程状态的起始时间
  • -
  • dur:该线程状态的持续时间
  • -
  • cpu:该线程在哪个cpu上执行(针对running状态的线程)
  • -
  • itid:该状态所属的线程id, 关联线程表中的id
  • -
  • tid:线程号
  • -
  • pid:进程号
  • -
  • state:线程实际的的状态值
  • -
-
'R', Runnable状态
-"S", interruptible sleep
-"D", uninterruptible sleep
-"D-IO", uninterruptible io
-"D-NIO", uninterruptible nio
-"Runing", Runing状态
-"T", Task stoped.
-"t"  Traced.
-"X", ExitedDead
-"Z", Zombie
-"P", Parked
-"I", Task_Dead
-"DK",
-"DK-IO",
-"DK-NIO",
-"TK", TracedKill
-"R+", WakeKill
-"R+", TaskNew
-"R-B", Task runnable binder.
-
-

clock_snapshot表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
clock_idINT
tsINT
clock_nameTEXT
-

表描述

-

时钟号和时间,时钟名的映射表。

-

关键字段描述

-
    -
  • clock_id:时钟号
  • -
  • ts:时钟快照报的时间
  • -
  • - clock_name:时钟号对应的时钟名字 -
    - 时钟快照是用来对齐不同时钟号的时间 -
    - 比如,时钟号1的时间100,和时钟号2的时间200对齐 -
    - 则时钟号为2 的250,转换为时钟号1的时间后,为150 -
  • -
-

datasource_clockid表

-

表结构

- - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
data_source_nameTEXT
clock_idINT
-

表描述

-

数据源和时钟号的映射表。

-

关键字段描述

-
    -
  • data_source_name:数据源的名称,和数据源的插件名保持一致
  • -
  • - clock_id:时钟号,对应clock_snapshot中的时钟号 -
    - 这个表是用来告诉IDE,不同的事件源的事件,原始时钟号是多少,在数据库中保存的事件,通常是转换为boottime后的时间,但有些情况下,IDE仍然需要知道原始的时钟号是怎样的 -
  • -
-

frame_slice表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
tsINT
vsyncINT
ipidINT
itidINT
callstack_idINT
durINT
srcTEXT
dstINT
typeINT
flagINT
depthINT
frame_noINT
-

表描述

-

应用的实际渲染帧和期望渲染帧的开始时间,持续时长,以及RenderService和App之间的关联关系。

-

关键字段描述

-
    -
  • callstack_id:该帧数据对应着callstack表的调用栈所在的行数
  • -
  • dur:该帧渲染时长(当数据不完整时,改行数据为空)
  • -
  • src:该帧是被哪一帧(该表中对应的行数)触发的,有多个值时,用逗号分割
  • -
  • dst:该帧对应的渲染帧是哪一行
  • -
  • type: 0 说明该行数据是实际渲染帧, 1 说明该行数据是期望渲染帧
  • -
  • - flag: 空时,为不完整的数据;0 表示实际渲染帧不卡帧, 1 表示实际渲染帧卡帧(expectEndTime < - actualEndTime为异常), 2 表示数据不需要绘制(没有frameNum信息),3 表示rs进程与app进程起止异常(|expRsStartTime - - expUiEndTime| < 1ms 正常,否则异常。这里使用期待帧的时间差做判断,给实际帧打标签) -
  • -
  • depth:预留
  • -
  • frame_no:预留
  • -
-

frame_maps表

-

表结构

- - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
tsINT
src_rowINT
dst_rowINT
-

表描述

-

该表记录了app到RenderService的帧的映射关系,同frame_slice表中的src映射到dst的关系。

-

关键字段描述

-
    -
  • src_row:frame_slice表中app的帧所在的行
  • -
  • dst_row:frame_slice表中RenderService的帧所在的行
  • -
-

gpu_slice表

-

表结构

- - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
frame_rowINT
durINT
-

表描述

-

该表记录了每一帧数据在GPU上的渲染时长。

-

关键字段描述

-
    -
  • frame_row:frame_slice表中渲染帧所在的行
  • -
  • dur:帧渲染时长
  • -
-

trace_range表

-

表结构

- - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
start_tsINT
end_tsINT
-

表描述

-

该表记录了解析开始时间以及结束时间。

-

关键字段描述

-
    -
  • start_ts:trace的开始时间,纳秒为单位
  • -
  • end_ts:trace的结束时间,纳秒为单位
  • -
-

task_pool表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
allocation_task_rowINT
execute_task_rowINT
return_task_rowINT
allocation_itidINT
execute_itidINT
return_itidINT
execute_idINT
priorityINT
execute_stateINT
return_stateINT
timeout_rowINT
-

表描述

-

该表记录了任务池相关数据,与callstack表关联。

-

关键字段描述

-
    -
  • allocation_task_row:与callstack表id号相关联
  • -
  • execute_task_row:与callstack表id号相关联
  • -
  • return_task_row:与callstack表id号相关联
  • -
  • allocation_itid:任务分发的itid
  • -
  • execute_itid:任务执行的itid
  • -
  • return_itid:任务返回的itid
  • -
  • execute_id:任务执行id
  • -
  • priority:任务分发独有的,优先级{HIGH : 0,MEDIUM : 1,LOW : 2}
  • -
  • execute_state:任务执行独有的执行状态{NOT_FOUND : 0,WAITING : 1,RUNNING : 2,CANCELED : 3}
  • -
  • return_state:任务返回独有的任务返回状态[IsCanceled DeserializeFailed Successful Unsuccessful]
  • -
  • timeout_row:任务执行超时时更新此列,将对应的 callstack 表行号存于对应的任务行
  • -
-

animation表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
input_timeINT
start_pointINT
end_pointINT
-

表描述

-

该表记录动效的响应时延和完成时延等信息。

-

关键字段描述

-
    -
  • input_time:输入时间点
  • -
  • start_point:开始时间点
  • -
  • end_point:结束时间点
  • -
-

dynamic_frame表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
xINT
yINT
widthINT
heightINT
alphaTEXT
nameINT
end_timeINT
-

表描述

-

该表记录动效帧的坐标、分辨率、结束时间等信息。

-

关键字段描述

-
    -
  • x:坐标x
  • -
  • y:坐标y
  • -
  • width:宽
  • -
  • height:高
  • -
  • alpha:透明度
  • -
  • name:当前动效帧名字
  • -
  • end_time:结束时间
  • -
-

device_info表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
physical_widthINT
physical_heightINT
physical_frame_rateINT
-

表描述

-

该表记录设备分辨率和帧率等信息。

-

关键字段描述

-
    -
  • physical_width:设备宽
  • -
  • physical_height:设备高
  • -
  • physical_frame_rate:设备帧率
  • -
-

device_state表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
brightnessINT
bt_stateINT
locationINT
wifiINT
stream_defaultINT
voice_callINT
musicINT
stream_ringINT
mediaINT
voice_assistantINT
systemINT
alarmINT
notificationINT
bt_scoINT
enforced_audibleINT
stream_dtmfINT
stream_ttsINT
accessibilityINT
recordingINT
stream_allINT
-

表描述

-

该表记录设备屏幕亮度,蓝牙,位置,wifi,音乐,媒体等信息。

-

关键字段描述

-
    -
  • brightness:屏幕亮度
  • -
  • bt_state:蓝牙状态
  • -
  • location:位置信息
  • -
  • wifi:无线网络状态
  • -
  • voice_call:语音通话
  • -
  • music:音乐播放
  • -
  • media:多媒体
  • -
  • voice_assistant:语音助手
  • -
  • system:系统
  • -
  • alarm:闹钟
  • -
  • notification:消息通知
  • -
  • bt_sco:蓝牙语音
  • -
  • accessibility:访问权限
  • -
  • recording:录音
  • -
-

trace_config表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
trace_sourceINT
keyINT
valueINT
-

表描述

-

该表记录trace数据源,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。

-

关键字段描述

-
    -
  • trace_source:事件源
  • -
  • key:事件需要关注的信息名
  • -
  • value:事件需要关注的信息名对应的信息值
  • -
-

memory_ashmem表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
tsINT
ipidINT
adjINT
fdINT
ashmem_name_idINT
sizeINT
pssINT
ashmem_idINT
timeINT
ref_countINT
purgedINT
flagINT
-

表描述

-

该表记录trace数据源,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。

-

关键字段描述

-
    -
  • ts:时间戳
  • -
  • ipid:内部进程号
  • -
  • fd:共享内存文件描述符
  • -
  • ashmem_name_id:共享内存名
  • -
  • size:共享内存大小
  • -
  • pss:PSS内存大小
  • -
  • ashmem_id:共享内存ID
  • -
  • ref_count:引用计数
  • -
  • flag:去重标记,0表示正常,1表示进程内部重复数据,2表示进程间重复数据
  • -
-

memory_dma表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
tsINT
ipidINT
fdINT
sizeINT
inoINT
exp_pidINT
exp_task_comm_idINT
buf_name_idINT
exp_name_idINT
flagINT
-

表描述

-

该表记录trace数据源,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。

-

关键字段描述

-
    -
  • ts:时间戳
  • -
  • ipid:内部进程号
  • -
  • fd:dma内存文件描述符
  • -
  • size:dma内存大小
  • -
  • exp_pid:申请者的进程号
  • -
  • buf_name_id:dma内存名
  • -
  • exp_name_id:申请者进程名
  • -
  • flag:去重标记,0表示正常,1表示进程内部重复数据,2表示进程间重复数据
  • -
-

memory_process_gpu表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
tsINT
gpu_name_idINT
all_gpu_sizeINT
addrTEXT
ipidINT
itidINT
used_gpu_sizeINT
-

表描述

-

该表记录trace数据源,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。

-

关键字段描述

-
    -
  • ts:时间戳
  • -
  • gpu_name_id:gpu内存名称
  • -
  • all_gpu_size:进程占用gpu总大小
  • -
  • addr:gpu内存地址
  • -
  • ipid:内部进程号
  • -
  • itid:内部线程号
  • -
  • used_gpu_size:已使用的gpu大小
  • -
-

memory_window_gpu表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
tsINT
window_name_idINT
window_idINT
module_name_idINT
category_name_idINT
sizeINT
countINT
purgeable_sizeINT
-

表描述

-

该表记录trace数据源,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。

-

关键字段描述

-
    -
  • ts:时间戳
  • -
  • window_name_id:窗口名
  • -
  • window_id:窗口id
  • -
  • module_name_id:模块名
  • -
  • category_name_id:目录名
  • -
  • size:内存大小
  • -
  • count:内存申请个数
  • -
-

static_initalize表

-

表结构

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Columns NameSQL TYPE
idINT
ipidINT
tidINT
call_idINT
start_timeINT
end_timeINT
so_nameTEXT
depthINT
-

表描述

-

该表记录了so初始化相关数据。

-

关键字段描述

-
    -
  • ipid:内部进程号
  • -
  • tid:内部线程号
  • -
  • call_id:调用者的ID,对应线程表里面的itid
  • -
  • start_time:阶段开始时间
  • -
  • end_time:阶段结束时间
  • -
  • so_name:so文件名称
  • -
  • depth:泳道图的深度
  • -
-
- - - - + \ No newline at end of file diff --git a/ide/src/doc/funDetail.json b/ide/src/doc/funDetail.json new file mode 100644 index 0000000000000000000000000000000000000000..e9a08eb4d55c5dd87b5b44d714e5454c582bf3f0 --- /dev/null +++ b/ide/src/doc/funDetail.json @@ -0,0 +1,191 @@ +{ + "render_services": [], + "anothers": [ + { + "slice": "SendCommands", + "CN": "发送绘制指令给图形Render_Service。transactionFalg的坐标可以标识这条指令与Render_Service侧的接收帧对应起来", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "FlushLayoutTask", + "CN": "组件的布局,这一块可以确认是什么组件在创建或者复用", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "CreateTaskMeasure", + "CN": "组件的测量。这一块可以确认是什么组件在创建", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "JSAnimation", + "CN": "如果FlushVsync下面出现这个trace点,说明触发了ArkUI的动效,例如使用了属性动画animation属性或者显示动画animateTo。可以排查一下代码看一下这种场景是否需要触发这个动画,有时候会因为组件的刷新而出现该动画的冗余绘制", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "FlushDirtyUpdate", + "CN": "用来标识由于变量更新,出发了某一个组件的标脏,需要对它进行刷新。打开ArkUI的debug开关后可以看到具体是什么状态变量裱花导致组件节点脏标。后面的数量表示这个状态变量关联的组件数", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "FlushLayoutTask", + "CN": "组件的布局,这一块可以确认是什么组件在创建或者复用", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "CreateTaskMeasure", + "CN": "组件的测量。这一块可以确认是什么组件在创建", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "SendCommands", + "CN": "发送绘制指令给图形Render_Service。transactionFalg的坐标可以标识这条指令与Render_Service侧的接收帧对应起来", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "JSAnimation", + "CN": "如果FlushVsync下面出现这个trace点,说明触发了ArkUI的动效,例如使用了属性动画animation属性或者显示动画animateTo。可以排查一下代码看一下这种场景是否需要触发这个动画,有时候会因为组件的刷新而出现该动画的冗余绘制", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "BuildRecyle", + "CN": "如果出现这个trace说明,这个组件是走复用逻辑的。当前如果组件节点较多,也会导致组件复用的时候耗时比较长导致丢帧。", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "aboutToRecycleInternal", + "CN": "标识组件进入复用池。例如我们首页使用cacheCount会将自检及其相关数据都缓存起来,但是一旦触发了DataReload之后缓存就会失效,这时候缓存的组件会进入复用池,等待后面华东的时候触发组件复用。", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "Onldle->List predict:onldle", + "CN": "标志Vsync中的空闲,一般会用来做预加载之类的。LIst predict就是列表的预加载。使用CachedCount和lazyForEach都会触发。", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "RunningCustomAnimation", + "CN": "自定义动画,RSModifierManager管理的在UI线程运行的动画,例如LoadingProgess、滚动组件的松手滚动、slider的进度条变化动画......后面的num表示动画的数量,如果大于0,则表示有动画在运行,如果遇到需要定位具体的动画,则需要底层增加trace点", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "DispatchDisplaySync", + "CN": "使用了displaySync接口进行降帧率处理,TimeStamp和TargetTimestamp分别表示当前帧的事件戳和下一次绘制的时间戳(估算的,并不准确)。Preffered[30]表示设置的期望帧率是30FPS,VsyncRate[120]表示实际Vsync的帧率是120PFS,Rate[4]表示事件送显的帧之间的间隔,noSkip[0]表示false,1表示true,标识这一帧是否需要绘制,0表示这帧跳过绘制,可以看到没有对应的sendCommands;1表示实际绘制送显,有对应的sendCommands的trace点", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "PartialGC::RunPhase", + "CN": "触发了内存的GC,有时候会刚好遇上Vsync导致Vsync整体耗时长。当前已经做过优化,对于超过10ms的帧,在10ms后不做GC。但是如果是在Vsync刚开始的时候还是有可能会触发", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "HandleVisibleChangeEvent", + "CN": "对应ArkUI的接口OnVisibleChange。ArkUI对于每一帧的Vsync必然会走这个方法的逻辑,即使应用没有使用也会遍历一把,一般耗时在us级。如果耗时几ms,甚至占了Vsync的一半时间,就需要分析一下了,先排查一下该场景是否滥用了OnVisibiChange接口", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "HandleOnAreaChangeEvent", + "CN": "对应ArkUI的接口OnareaChange。ArkUI对于每一帧的Vsync必然会走这个方法的逻辑,即使应用没有使用也会遍历一把,一般耗时在us级。如果耗时几ms,甚至占了Vsync的一半时间,就需要分析一下了,先排查一下该场景是否滥用了OnAreaChange接口", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "ViewChangeCallback", + "CN": "窗口变化会触发ArkUI的一系列回调,例如横竖屏转换的时候,接收到窗口变化ArkUI会从应用页面Root节点开始进行刷新和重新布局。", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "FlushFocus", + "CN": "焦点切换,属于通用事件。每一帧都会打点,如果没有具体处理在几us左右。如果耗时异常,例如页面专场的场景。", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "RSModfierManager Draw num", + "CN": "组件属性变更的绘制,如果num不变,持续绘制可能和动画组件的属性变更有关;如果只是一次性绘制,可能就是有些组件属性变更了一次。具体是什么组件引起的,需要动画加trace点继续定位。", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "DispatchTouchEvent", + "CN": "应用侧接收到点击事件,并标识了具体的X,Y详细坐标,type是个枚举为0:down、1:up、2:move。可作为应用侧点击类事件的起始点", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "H:UnMarsh", + "CN": "RSTransactionData:data size UI侧将要发送的指令序列化后通过IPC与RS通信,RS收到消息后就会对其进行反序列化,解析出对应的命令和数据。如果datasize较小会直接在IPC上进行反序列化,可以通过runnable找到对应的发送序列化的指令的应用侧的帧。如果data size较大,则会创建一个子线程RSUnmarshalThre进行反序列化操作。之前有个问题就是RS的每一帧处理会等反序列化处理完成,会阻塞RS主线程,导致丢帧。后来图形做了处理,旋转场景不等应用的反序列化数据,延迟处理", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "RSMainThread::ProcessCommandUni", + "CN": "这个trace点后面会有个坐标点,和应用侧sendCommands发送的指令Flag坐标是一致的,标识这一帧处理对应的应用侧帧的进程号和序列号", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "Animate", + "CN": "RS侧的动效,这一块正常也在us级别,有一些动效可能稍微耗时一些例如粒子动效。如果耗时超过2ms可能需要分析一下了。这个trace点里的具体是什么动效引起,需要动效的人增加日志或者trace点进行定位。RequestNextVSync表示动效还有下一帧,还未结束", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "H:RSUniRender:PrepareDisplay", + "CN": "预处理,计算各节点的绝对位置,更新各个窗口的脏区。然后再更新屏幕中各个窗口的信息,最后将各个窗口的脏区进行合并", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "H:RSUniRender::Process", + "CN": "标识当前参与绘制的应用窗口,并且显示窗口的位置以及大小", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "PureContainerNode/ProcessedNodes", + "CN": "容器节点/总结点数。下面的小竖条详细展示了当前应用有多少个节点参与了绘制", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "H:RSFilterCacheManager::DrawFilter", + "CN": "当前页面有模糊绘制,模糊数量两个及以上对RS的绘制就会造成较大影响。可以评估一下当前页面模糊的必要性,如果当前页面的多个模糊是必要的,可以考虑是否使用模糊合并。如果场景没法合并可以求助下一图形接口", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "H:RSUniRender:FlushFrame", + "CN": "生成渲染指令后交给GPU执行", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "H:RSHardwareThread::CommitAndReleaseLayers", + "CN": "Gpu渲染完成后,提交给RSHardwareThread进行合成。合成有两种方式:(1)GPU合成(Redras) (2)DSS硬件合成(HWC)。当前的合成策略为优先采取硬件合成,若无法通过硬件合成,则使用GPU合成。华为视频播放场景可以关注一下,这个场景下正常是走硬件合成,不走GPU,否则会造成GPU功耗过高。需要打开RS的debug,出现CreateLayer:componentIdSurface XYWH并且HardWareThread没有redraw,如果HardWareThread出现redraw也是走GPU了", + "EN": "this is an english translate for CN", + "flag": "0" + }, + { + "slice": "ML:cmobe_v3_compile_multiple_shaders", + "CN": "触发了shader编译,需要通过与之shader来避免。shader缓存是业界通用方案,在动效前几次执行的时候会概率性出现,用于创建该场景的着色器并将其缓存,以使之后的操作可以直接复用原有的着丝琪,从而提升系统的性能。但shader编译耗时太长导致RS侧丢帧造成动效卡顿", + "EN": "this is an english translate for CN", + "flag": "0" + } + ] +} \ No newline at end of file diff --git a/ide/src/doc/md/des_tables.md b/ide/src/doc/md/des_tables.md index 40dff9d40a837c01321ed30cf901d87f182b7df6..ac9e8b134c007b344b0efd35a9e6fbb70b87cb0e 100644 --- a/ide/src/doc/md/des_tables.md +++ b/ide/src/doc/md/des_tables.md @@ -1,838 +1,716 @@ -# TraceStreamer 数据表概述 - -TraceStreamer 可以将 trace 数据源转化为易于理解和使用的数据库。用户可以通过 SmartPerf 界面直观的研究系统跟踪数据,也可在理解 TraceStreamer 生成的数据库的基础上,在 TraceStreamer 的交互模式或者 Smartperf 的数据库查询模式下,使用 SQL 查询语句自由组装查看用户关心的数据。下文将对 TraceStreamer 生成的数据库进行详细描述,给用户使用 SQL 查询系统跟踪数据提供帮助。 - -## TraceStreamer 输出的数据表分类 - -- 常规泳道图数据表 - ![GitHub Logo](../../figures/traceStreamer/db_common.png) -- native memory 数据源相关表 - ![GitHub Logo](../../figures/traceStreamer/db_native_memory.png) -- perf 相关数据表 - ![GitHub Logo](../../figures/traceStreamer/db_hiperf.png) -- hisysevent 相关数据表 - ![GitHub Logo](../../figures/traceStreamer/db_hisys_event.png) - -## TraceStreamer 输出数据库包含以下表格 - -| 表名称 | 作用 | -| --------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | -| animation | 记录动效的响应时延和完成时延 | -| app_name | 记录 HiSysEvent 事件的事件名与 IDE 部分事件的字段名为 APPNAME 中存放的相关信息的映射关系 | -| app_startup | 记录了应用启动相关数据 | -| args | 记录方法参数集合 | -| bio_latency_sample | 记录 IO 操作相关方法调用,及调用栈数据 | -| callstack | 记录调用堆栈和异步调用信息,其中 depth,stack_id 和 parent_stack_id 仅在非异步调用中有效。当 cookid 不为空时,为异步调用,此时 callid 为进程唯一号,否则为线程唯一号 | -| clk_event_filter | 记录时钟相关的信息 | -| clock_event_filter | 此结构用来维护时钟事件,cpu 与唯一的 ID 做关联 | -| clock_snapshot | 时钟号和时间,时钟名的映射表 | -| cpu_measure_filter | cpu 事件过滤器表 | -| cpu_usage | 记录 CPU 使用率事件 | -| datasource_clockid | 数据源和时钟号的映射表 | -| data_dict | 记录常用的字符串,将字符串和索引关联,降低程序运行的内存占用,用作辅助数据 | -| data_type | 记录数据类型和 typeId 的关联关系 | -| device_info | 记录设备分辨率和帧率 | -| device_state | 记录设备屏幕亮度,蓝牙,位置,wifi,音乐,媒体等信息 | -| diskio | 记录磁盘读写数据事件 | -| dynamic_frame | 记录动效帧的分辨率和结束时间等 | -| ebpf_callstack | 记录了采样相关信息 | -| file_system_sample | 记录了调用栈的相关信息 | -| frame_maps | 记录应用到 RS 的帧的映射关系 | -| frame_slice | 记录 RS(RenderService)和应用的帧渲染 | -| gpu_slice | 记录 RS 的帧对应的 gpu 渲染时长 | -| hidump | 记录 FPS(Frame Per Second)数据 | -| hisys_event_measure | 记录了 HiSysEvent 事件相关数据,目前 HiSysEvent 事件包括了异常事件,IDE 事件,器件状态事件 | -| instant | 记录 Sched_waking, sched_wakeup 事件, 用作 ThreadState 表的上下文使用 | -| irq | 记录中断相关事件 | -| js_config | 记录了 arkTs 数据采集的相关配置 | -| js_cpu_profiler_node | 记录了 cpu profiler 中 node 节点的数据 | -| js_cpu_profiler_sample | 记录了 cpu profiler 中 sample 节点的数据 | -| js_heap_edges | 记录了 js 内存数据类对象对应的成员的信息 | -| js_heap_files | 记录了 js 内存数据的名称和时间 | -| js_heap_info | 记录了 js 内存数据类型,如 nodes 和 edges 的字段类型和数据总数 | -| js_heap_location | 记录了 js 内存 location 节点相关数据 | -| js_heap_nodes | 记录了 js 内存类对象和其成员的对应关系 | -| js_heap_sample | 记录了 timeline 模式下的时间轴信息 | -| js_heap_string | 记录了 js 内存数据中的字符串 | -| js_heap_trace_function_info | 记录了 timeline 模式下的调用栈的每个函数信息 | -| js_heap_trace_node | 记录了 timeline 模式下的调用栈信息 | -| live_process | 记录了一些实时的进程中执行的一些数据 | -| log | 记录 hilog 打印日志数据 | -| measure | 记录所有的计量值 | -| measure_filter | 记录一个递增的 filterid 队列,所有其他的 filter 类型在获取过程中,均从此数据列表中获取下一个可用的 filter_id 并做记录 | -| memory_ashmem | 记录了进程所占用的 ashmem 相关信息 | -| memory_dma | 记录了进程占用的 DMA 内存相关信息 | -| memory_process_gpu | 记录进程占用 GPU 内存相关信息 | -| memory_window_gpu | 记录窗口占用 GPU 内存相关信息 | -| meta | 记录执行解析操作相关的基本信息 | -| native_hook | 记录堆内存申请与释放相关的数据 | -| native_hook_frame | 记录堆内存申请与释放相关的调用栈 | -| native_hook_statistic | 记录堆内存申请与释放相关的统计信息 | -| network | 抓取网络信息传输时产生的一些相关信息 | -| paged_memory_sample | 记录内存操作相关方法调用,及调用栈数据 | -| perf_callchain | 记录 Hiperf 采样数据的调用栈信息 | -| perf_files | 记录 Hiperf 工具采集到的函数符号表和文件名 | -| perf_report | 记录 Hiperf 工具采集数据时的配置信息。包括 | 抓取的事件类型,抓取数据的命令, 抓数据时指定的进程名称 | -| perf_sample | 记录 Hiperf 工具的采样信息 | -| perf_thread | 记录 Hiperf 工具采集到的进程和线程数据 | -| process | 记录所有的进程信息 | -| process_filter | 过滤进程 | -| process_measure | 保存进程的所有计量值 | -| process_measure_filter | 将进程 ID 作为 key1,进程的内存,界面刷新,屏幕亮度等信息作为 key2,唯一确定一个 filter_id | -| raw | 此数据结构主要作为 ThreadState 的上下文使用,这张表是 sched_waking,sched_wakup, cpu_idle 事件的原始记录 | -| sched_slice | 此数据结构主要作为 ThreadState 的上下文使用,这张表是 sched_switch 事件的原始记录 | -| smaps | 记录进程的内存消耗的相关信息采样 | -| stat | 此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解 | -| static_initalize | 记录了 so 初始化相关数据 | -| symbols | 记录系统调用名称和其函数指针的对应关系,trace 中用 addr 来映射 function_name 来节省存储空间 | -| syscall | 记录用户空间函数与内核空间函数相互调用记录 | -| sys_event_filter | 记录所有的 filter | -| sys_mem_measure | 记录了所有的系统内存相关的测量信息 | -| task_pool | 记录任务池相关数据,与 callstack 表相关联 | -| thread | 记录所有的线程信息 | -| thread_filter | 过滤线程 | -| thread_state | 记录线程状态信息 | -| trace_config | 记录 trace 数据源,proto 的事件-plugin 与其 process_name | -| trace_range | 记录 ftrace 数据与其他类型数据的时间交集,供前端展示数据时使用 | - +# TraceStreamer数据表概述 +TraceStreamer可以将trace数据源转化为易于理解和使用的数据库。用户可以通过SmartPerf界面直观的研究系统跟踪数据,也可在理解TraceStreamer生成的数据库的基础上,在TraceStreamer的交互模式或者Smartperf的数据库查询模式下,使用SQL查询语句自由组装查看用户关心的数据。下文将对TraceStreamer生成的数据库进行详细描述,给用户使用SQL查询系统跟踪数据提供帮助。 + +## TraceStreamer输出的数据表分类 +* 常规泳道图数据表 +![GitHub Logo](../../figures/traceStreamer/db_common.png) +* native memory数据源相关表 +![GitHub Logo](../../figures/traceStreamer/db_native_memory.png) +* perf相关数据表 +![GitHub Logo](../../figures/traceStreamer/db_hiperf.png) +* hisysevent相关数据表 +![GitHub Logo](../../figures/traceStreamer/db_hisys_event.png) +## TraceStreamer输出数据库包含以下表格 +| 表名称 |作用| +| ---- |---- | +| animation | 记录动效的响应时延和完成时延| +| app_name | 记录HiSysEvent事件的事件名与IDE部分事件的字段名为APPNAME中存放的相关信息的映射关系| +| app_startup | 记录了应用启动相关数据| +| args | 记录方法参数集合| +| bio_latency_sample | 记录IO操作相关方法调用,及调用栈数据| +| callstack | 记录调用堆栈和异步调用信息,其中depth,stack_id和parent_stack_id仅在非异步调用中有效。当cookid不为空时,为异步调用,此时callid为进程唯一号,否则为线程唯一号| +| clk_event_filter | 记录时钟相关的信息| +| clock_event_filter | 此结构用来维护时钟事件,cpu与唯一的ID做关联| +| clock_snapshot | 时钟号和时间,时钟名的映射表| +| cpu_measure_filter | cpu事件过滤器表| +| cpu_usage | 记录CPU使用率事件| +| datasource_clockid | 数据源和时钟号的映射表| +| data_dict | 记录常用的字符串,将字符串和索引关联,降低程序运行的内存占用,用作辅助数据| +| data_type | 记录数据类型和typeId的关联关系| +| device_info | 记录设备分辨率和帧率| +| device_state | 记录设备屏幕亮度,蓝牙,位置,wifi,音乐,媒体等信息| +| diskio | 记录磁盘读写数据事件| +| dynamic_frame | 记录动效帧的分辨率和结束时间等| +| ebpf_callstack | 记录了采样相关信息| +| file_system_sample | 记录了调用栈的相关信息| +| frame_maps | 记录应用到RS的帧的映射关系| +| frame_slice | 记录RS(RenderService)和应用的帧渲染| +| gpu_slice | 记录RS的帧对应的gpu渲染时长| +| hidump | 记录FPS(Frame Per Second)数据| +| hisys_all_event | 记录了所有HiSysEvent事件相关的原始数据 | +| hisys_event_measure | 记录了HiSysEvent事件相关数据,目前HiSysEvent事件包括了异常事件,IDE事件,器件状态事件 | +| instant | 记录Sched_waking, sched_wakeup事件, 用作ThreadState表的上下文使用 | +| irq | 记录中断相关事件| +| js_config | 记录了arkTs数据采集的相关配置| +| js_cpu_profiler_node | 记录了cpu profiler中node节点的数据| +| js_cpu_profiler_sample | 记录了cpu profiler中sample节点的数据| +| js_heap_edges | 记录了js内存数据类对象对应的成员的信息| +| js_heap_files | 记录了js内存数据的名称和时间| +| js_heap_info | 记录了js内存数据类型,如nodes和edges的字段类型和数据总数| +| js_heap_location | 记录了js内存location节点相关数据| +| js_heap_nodes | 记录了js内存类对象和其成员的对应关系| +| js_heap_sample | 记录了timeline模式下的时间轴信息| +| js_heap_string | 记录了js内存数据中的字符串| +| js_heap_trace_function_info | 记录了timeline模式下的调用栈的每个函数信息| +| js_heap_trace_node | 记录了timeline模式下的调用栈信息| +| live_process | 记录了一些实时的进程中执行的一些数据| +| log | 记录hilog打印日志数据| +| measure | 记录所有的计量值| +| measure_filter | 记录一个递增的filterid队列,所有其他的filter类型在获取过程中,均从此数据列表中获取下一个可用的filter_id并做记录| +| memory_ashmem | 记录了进程所占用的ashmem相关信息| +| memory_dma | 记录了进程占用的DMA内存相关信息| +| memory_process_gpu | 记录进程占用GPU内存相关信息| +| memory_window_gpu | 记录窗口占用GPU内存相关信息| +| meta | 记录执行解析操作相关的基本信息| +| native_hook | 记录堆内存申请与释放相关的数据| +| native_hook_frame | 记录堆内存申请与释放相关的调用栈| +| native_hook_statistic | 记录堆内存申请与释放相关的统计信息| +| network | 抓取网络信息传输时产生的一些相关信息| +| paged_memory_sample | 记录内存操作相关方法调用,及调用栈数据| +| perf_callchain | 记录Hiperf采样数据的调用栈信息| +| perf_files | 记录Hiperf工具采集到的函数符号表和文件名| +| perf_report | 记录Hiperf工具采集数据时的配置信息。包括抓取的事件类型,抓取数据的命令, 抓数据时指定的进程名称| +| perf_sample | 记录Hiperf工具的采样信息| +| perf_thread | 记录Hiperf工具采集到的进程和线程数据| +| process | 记录所有的进程信息| +| process_measure | 保存进程的所有计量值| +| process_measure_filter | 将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id| +| raw | 此数据结构主要作为ThreadState的上下文使用,这张表是sched_waking,sched_wakup, cpu_idle事件的原始记录| +| sched_slice | 此数据结构主要作为ThreadState的上下文使用,这张表是sched_switch事件的原始记录| +| smaps | 记录进程的内存消耗的相关信息采样| +| stat | 此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解| +| static_initalize | 记录了so初始化相关数据| +| memory_cpu | 记录了cpu内存数据 | +| memory_profile | 记录了sys/kernel/debug/mali0/ctx/$(pidof xxx)/mem_profile节点相关数据| +| memory_rs_image | 记录了hidumper抓取的界面的内存大小相关数据| +| symbols | 记录系统调用名称和其函数指针的对应关系,trace中用addr来映射function_name来节省存储空间| +| syscall | 记录用户空间函数与内核空间函数相互调用记录| +| sys_event_filter | 记录所有的filter| +| sys_mem_measure | 记录了所有的系统内存相关的测量信息| +| task_pool | 记录任务池相关数据,与callstack表相关联| +| thread | 记录所有的线程信息| +| thread_state | 记录线程状态信息| +| trace_config | 记录trace数据源,proto的事件-plugin与其process_name| +| trace_range | 记录ftrace数据与其他类型数据的时间交集,供前端展示数据时使用| ## 表与事件来源 - -| 表名称 | 事件源 | 插件名 | 备注 | -| --------------------------- | ------ | --------------------- | -------------------------------------------------- | -| animation | - | ftrace-plugin | 记录动效的响应时延和完成时延 | -| app_name | - | hisysevent-plugin | JSON 数据源 | -| args | - | ftrace-plugin | 配合 callstack 使用 | -| bio_latency_sample | - | - | IO 操作相关方法调用,及调用栈数据 | -| callstack | - | ftrace-plugin | 异步或非异步的调用 | -| cpu_measure_filter | - | ftrace-plugin | cpu 跟踪器,cpu 频率等 | -| cpu_usage | - | cpu-plugin | cpu 使用率 | -| data_dict | 通用的 | - | 所有字符串的记录 | -| data_type | 通用的 | - | 辅助表 | -| device_info | - | ftrace-plugin | 记录设备分辨率和帧率 | -| device_state | 通用的 | hisysevent-plugin | 记录设备屏幕亮度,蓝牙,位置等信息 | -| dynamic_frame | - | ftrace-plugin | 动效帧的分辨率和结束时间等 | -| ebpf_callstack | - | - | 磁盘读写相关的数据 | -| file_system_callstack | - | - | ebpf 文件系统 | -| file_system_sample | - | - | ebpf 文件系统 | -| frame_maps | - | ftrace-plugin | 帧渲染数据,app 到 RS 的映射 | -| frame_slice | - | ftrace-plugin | 帧渲染数据 | -| gpu_slice | - | ftrace-plugin | gpu 渲染时长 | -| hidump | - | hidump-plugin | FPS 数据 | -| hisys_event_measure | - | hisysevent-plugin | JSON 数据源 | -| instant | - | ftrace-plugin | waking 和 wakeup 事件 | -| irq | - | ftrace-plugin | 记录中断事件 | -| js_config | - | arkts-plugin | arkTs 数据采集的配置 | -| js_cpu_profiler_node | - | arkts-plugin | 记录了 cpu profiler 中 node 节点的数据 | -| js_cpu_profiler_sample | - | arkts-plugin | 记录了 cpu profiler 中 sample 节点的数据 | -| js_heap_edges | - | arkts-plugin | js 内存数据 | -| js_heap_files | - | arkts-plugin | js 内存数据 | -| js_heap_info | - | arkts-plugin | js 内存数据 | -| js_heap_location | - | arkts-plugin | js 内存数据 | -| js_heap_nodes | - | arkts-plugin | js 内存数据 | -| js_heap_sample | - | arkts-plugin | js 内存数据 | -| js_heap_string | - | arkts-plugin | js 内存数据 | -| js_heap_trace_function_info | - | arkts-plugin | js 内存数据 | -| js_heap_trace_node | - | arkts-plugin | js 内存数据 | -| app_startup | - | ftrace-plugin | 应用启动数据 | -| static_initalize | - | ftrace-plugin | so 初始化数据 | -| live_process | - | process-plugin | Monitor 数据 | -| network | - | network-plugin | Monitor 数据 | -| diskio | - | diskio-plugin | Monitor 数据 | -| log | - | hilog-plugin | 系统日志 | -| measure | 通用的 | - | 系统中的计量值(数值型) | -| measure_filter | 通用的 | - | 计量值的查询辅助表 | -| memory_ashmem | - | memory-plugin | 进程所占用 ashmem 相关信息 | -| memory_dma | - | memory-plugin | 进程占用的 DMA 内存相关信息 | -| memory_process_gpu | - | memory-plugin | 进程占用 GPU 内存相关信息 | -| memory_window_gpu | - | memory-plugin | 窗口占用 GPU 内存相关信息 | -| meta | 通用的 | - | 记录解析现场数据(解析时间,数据类型,解析工具等) | -| native_hook | - | nativehook/hookdaemon | malloc && mmap 内存数据 | -| native_hook_frame | - | nativehook/hookdaemon | native_hook 调用栈数据 | -| native_hook_statistic | - | nativehook/hookdaemon | malloc && mmap 统计数据 | -| paged_memory_sample | - | - | 网络数据传输相关的信息 | -| perf_callchain | - | perf-plugin | perf 数据(非插件模式) | -| perf_files | - | - | perf 数据(非插件模式) | -| perf_report | - | - | perf 数据(非插件模式) | -| perf_sample | - | - | perf 数据(非插件模式) | -| perf_thread | - | - | perf 数据(非插件模式) | -| process | - | ftrace-plugin | 进程信息 | -| process_filter | - | ftrace-plugin | 进程计量表的辅助表 | -| process_measure | - | ftrace-plugin | 进程内存 | -| process_measure_filter | - | ftrace-plugin | process_measure 的辅助表 | -| raw | - | ftrace-plugin | 线程唤醒信息 | -| sched_slice | - | ftrace-plugin | 配合现场状态表使用,dsched_switch 的原始数据 | -| smaps | - | memory-plugin | 进程的内存消耗 | -| stat | 通用的 | - | 记录不同种类数据的数据量 | -| symbols | - | ftrace-plugin | 符号表(地址到字符串的映射) | -| syscall | - | ftrace-plugin | 系统调用 sys_enter/exit | -| sys_event_filter | - | ftrace-plugin | | -| sys_mem_measure | - | memory-plugin | 系统内存 | -| thread | 通用的 | - | 线程信息(常用) | -| thread_state | 通用的 | ftrace-plugin | 线程调度图(常用) | -| trace_config | 通用的 | hisysevent-plugin | 记录 trace 数据源 | -| trace_range | 通用的 | - | trace 数据的时长 | -| thread_filter | 通用的 | ftrace-plugin | 线程计量跟踪表(比较少用) | -| clock_snapshot | 通用的 | 通用的 | 时钟号和时间,时钟名的映射表 | -| datasource_clockid | 通用的 | 通用的 | 数据源和时钟号的映射表 | -| task_pool | - | - | 任务池数据 | - -## **_表格关系图_** - +| 表名称 | 事件源 | 插件名 | 备注 | +| ---- | ---- | ---- | ---- | +|animation | - |ftrace-plugin |记录动效的响应时延和完成时延 | +|app_name | - |hisysevent-plugin |JSON数据源 | +|args | - |ftrace-plugin |配合callstack使用 | +|bio_latency_sample | - | - |IO操作相关方法调用,及调用栈数据 | +|callstack | - |ftrace-plugin |异步或非异步的调用 | +|cpu_measure_filter | - |ftrace-plugin |cpu跟踪器,cpu频率等 | +|cpu_usage | - |cpu-plugin |cpu使用率 | +|data_dict | 通用的 | - |所有字符串的记录 | +|data_type | 通用的 | - |辅助表 | +|device_info | - |ftrace-plugin |记录设备分辨率和帧率 | +|device_state | 通用的 |hisysevent-plugin |记录设备屏幕亮度,蓝牙,位置等信息 | +|dynamic_frame | - |ftrace-plugin |动效帧的分辨率和结束时间等 | +|ebpf_callstack | - | - |磁盘读写相关的数据 | +|file_system_callstack | - | - |ebpf文件系统 | +|file_system_sample | - | - |ebpf文件系统 | +|frame_maps | - |ftrace-plugin |帧渲染数据,app到RS的映射 | +|frame_slice | - |ftrace-plugin |帧渲染数据 | +|gpu_slice | - |ftrace-plugin |gpu渲染时长 | +|hidump | - |hidump-plugin |FPS数据 | +|hisys_all_event | - |hisysevent-plugin |JSON数据源 | +|hisys_event_measure | - |hisysevent-plugin |JSON数据源 | +|instant | - |ftrace-plugin |waking和wakeup事件 | +|irq | - |ftrace-plugin |记录中断事件 | +|js_config | - |arkts-plugin | arkTs数据采集的配置 | +|js_cpu_profiler_node | - |arkts-plugin | 记录了cpu profiler中node节点的数据 | +|js_cpu_profiler_sample | - |arkts-plugin | 记录了cpu profiler中sample节点的数据 | +|js_heap_edges | - |arkts-plugin | js内存数据 | +|js_heap_files | - |arkts-plugin | js内存数据 | +|js_heap_info | - |arkts-plugin | js内存数据 | +|js_heap_location | - |arkts-plugin | js内存数据 | +|js_heap_nodes | - |arkts-plugin | js内存数据 | +|js_heap_sample | - |arkts-plugin | js内存数据 | +|js_heap_string | - |arkts-plugin | js内存数据 | +|js_heap_trace_function_info | - |arkts-plugin | js内存数据 | +|js_heap_trace_node | - |arkts-plugin | js内存数据 | +|app_startup | - |ftrace-plugin | 应用启动数据 | +|static_initalize | - |ftrace-plugin | so初始化数据 | +|memory_cpu | - |hidumper-plugin | cpu内存数据 | +|memory_profile | - |hidumper-plugin |/sys/kernel/debug/mali0/ctx/$(pidof xxx)/mem_profile节点相关数据| +| memory_rs_image | - |hidumper-plugin |hidumper抓取的界面内存大小数据| +|live_process | - |process-plugin |Monitor数据 | +|network | - |network-plugin |Monitor数据 | +|diskio | - |diskio-plugin |Monitor数据 | +|log | - |hilog-plugin |系统日志 | +|measure | 通用的 | - |系统中的计量值(数值型)| +|measure_filter | 通用的 | - |计量值的查询辅助表 | +|memory_ashmem | - |memory-plugin |进程所占用ashmem相关信息 | +|memory_dma | - |memory-plugin |进程占用的DMA内存相关信息 | +|memory_process_gpu | - |memory-plugin |进程占用GPU内存相关信息 | +|memory_window_gpu | - |memory-plugin |窗口占用GPU内存相关信息 | +|meta | 通用的 | - |记录解析现场数据(解析时间,数据类型,解析工具等)| +|native_hook | - |nativehook/hookdaemon |malloc && mmap内存数据 | +|native_hook_frame | - |nativehook/hookdaemon |native_hook调用栈数据 | +|native_hook_statistic | - |nativehook/hookdaemon |malloc && mmap统计数据 | +|paged_memory_sample | - | - |网络数据传输相关的信息 | +|perf_callchain | - |perf-plugin |perf数据(非插件模式) | +|perf_files | - | - |perf数据(非插件模式) | +|perf_report | - | - |perf数据(非插件模式) | +|perf_sample | - | - |perf数据(非插件模式) | +|perf_thread | - | - |perf数据(非插件模式) | +|process | - |ftrace-plugin |进程信息 | +|process_measure | - |ftrace-plugin |进程内存 | +|process_measure_filter| - |ftrace-plugin |process_measure的辅助表| +|raw | - |ftrace-plugin |线程唤醒信息 | +|sched_slice | - |ftrace-plugin |配合线程状态表使用,sched_switch的原始数据| +|smaps | - |memory-plugin |进程的内存消耗 | +|stat | 通用的 | - |记录不同种类数据的数据量| +|symbols | - |ftrace-plugin |符号表(地址到字符串的映射)| +|syscall | - |ftrace-plugin |系统调用 sys_enter/exit| +|sys_event_filter | - |ftrace-plugin | | +|sys_mem_measure | - |memory-plugin |系统内存 | +|thread | 通用的 | - |线程信息(常用) | +|thread_state | 通用的 |ftrace-plugin |线程调度图(常用) | +|trace_config | 通用的 |hisysevent-plugin |记录trace数据源 | +|trace_range | 通用的 | - |trace数据的时长 | +|clock_snapshot | 通用的 |通用的 |时钟号和时间,时钟名的映射表| +|datasource_clockid | 通用的 |通用的 |数据源和时钟号的映射表| +|task_pool | - | - |任务池数据 | + +## ___表格关系图___ --- - ### 进程表与线程表关系 - 当一个进程或者线程结束后,系统可能再次将该进程号或者线程号分配给其他进程或者线程,造成一个进程号或线程号代表多个进程或线程的情况。 -Process 和 Thread 表中的 id 字段可以唯一标识进程和线程。process 表中的 id 在其他表中用作 ipid 字段。thread 表中的 id 在其他表中用作 itid 字段。 -thread 表通过 ipid 字段关联 process 表的 id 字段,可以查询线程归属进程。 -![GitHub Logo](../../figures/traceStreamer/process_thread.png) - +Process和Thread表中的id字段可以唯一标识进程和线程。process表中的id在其他表中用作ipid字段。thread表中的id在其他表中用作itid字段。 +thread表通过ipid字段关联process表的id字段,可以查询线程归属进程。 +![GitHub Logo](../../figures/traceStreamer/process_thread.png) ### 查询举例 - -- 已知 pid = 123,查看当前进程下的所有线程信息,可以使用如下 SQL 语句: - `select thread.* from thread, process where process.pid = 123 and thread.ipid = process.id` +- 已知pid = 123,查看当前进程下的所有线程信息,可以使用如下SQL语句: +```select thread.* from thread, process where process.pid = 123 and thread.ipid = process.id``` ### 线程表与线程运行状态表关系图 - -thread_state 表记录所有线程的运行状态信息,包含 ts(状态起始时间),dur(状态持续时间),cpu, itid, state(线程状态)。 thread 表的 id 字段与 thread_state 表的 itid 字段相关联。 -![GitHub Logo](../../figures/traceStreamer/thread_state.png) - +thread_state表记录所有线程的运行状态信息,包含ts(状态起始时间),dur(状态持续时间),cpu, itid, state(线程状态)。 thread表的id字段与thread_state表的itid字段相关联。 +![GitHub Logo](../../figures/traceStreamer/thread_state.png) ### 查询举例 - -- 已知 tid = 123, 查看当前线程的所有运行状态信息,可以使用如下 SQL 语句: - `select thread_state.* from thread, thread_state where thread.tid = 123 and thread.id = thread_state.itid` +- 已知tid = 123, 查看当前线程的所有运行状态信息,可以使用如下SQL语句: +```select thread_state.* from thread, thread_state where thread.tid = 123 and thread.id = thread_state.itid``` ### 堆内存数据变化表关系图 - -native_hook 表记录堆内存申请(AllocEvent)和释放(FreeEvent)数据。native_hook 表通过 ipid 和 itid 字段分别与 process 和 thread 表的 id 字段关联,通过 callChainId 与 native_hook_frame 表的 callChainId 字段相关联。 -native_hook 表字段解释如下: - -- callChainId:唯一标识一次堆内存申请或释放, 通过与 native_hook_frame 表关联可以拿到当前申请或释放的函数调用堆栈。 -- addr:堆内存申请/释放的地址。 +native_hook表记录堆内存申请(AllocEvent)和释放(FreeEvent)数据。native_hook表通过ipid和itid字段分别与process和thread表的id字段关联,通过callchain_id与native_hook_frame表的callchain_id字段相关联。 +native_hook表字段解释如下: +- callchain_id:唯一标识一次堆内存申请或释放, 通过与native_hook_frame表关联可以拿到当前申请或释放的函数调用堆栈。 +- addr:堆内存申请/释放的地址。 - native_hook_size:堆内存申请/释放的大小。 -native_hook_frame 表记录内存申请/释放的调用堆栈。通过 callChainId 区分一组调用堆栈,depth 为堆栈深度,depth 为 0 时,表示当前行为栈顶数据。 -![GitHub Logo](../../figures/traceStreamer/dump_and_mem.png) +native_hook_frame表记录内存申请/释放的调用堆栈。通过callchain_id区分一组调用堆栈,depth为堆栈深度,depth为0时,表示当前行为栈顶数据。 +![GitHub Logo](../../figures/traceStreamer/dump_and_mem.png) -native_hook_statistic 表记录内存申请/释放的统计信息。通过 callChainId 区分一组调用堆栈。每个统计事件将记录当前事件的 callChainId,并统计当前调用栈内存分配/释放的总次数和总大小。 -![GitHub Logo](../../figures/traceStreamer/db_native_hook_statistic.png) +native_hook_statistic表记录内存申请/释放的统计信息。通过callchain_id区分一组调用堆栈。每个统计事件将记录当前事件的callchain_id,并统计当前调用栈内存分配/释放的总次数和总大小。 +![GitHub Logo](../../figures/traceStreamer/db_native_hook_statistic.png) ### 查询举例 - -- 已知 tid = 123,查看当前线程的所有堆内存变化信息,可以使用如下 SQL 语句: - `select native_hook.* from thread, native_hook where thread.tid = 123 and thread.id = native_hook.itid` -- 已知 callchainid = 1, 查看当前内存变化调用堆栈 - `select * from native_hook_frame where callchain_id = 1` -- 已知 callchainid = 1, 查看当前内存变化调用堆栈对应的统计信息 - `select * from native_hook_statistic where callchain_id = 1` +- 已知tid = 123,查看当前线程的所有堆内存变化信息,可以使用如下SQL语句: +```select native_hook.* from thread, native_hook where thread.tid = 123 and thread.id = native_hook.itid``` +- 已知callchainid = 1, 查看当前内存变化调用堆栈 +```select * from native_hook_frame where callchain_id = 1``` +- 已知callchainid = 1, 查看当前内存变化调用堆栈对应的统计信息 +```select * from native_hook_statistic where callchain_id = 1``` ### 日志表与进程线程表关系图 - -log 表记录日志信息。可以根据 seq 字段的连续性,来判断是否存在日志丢失的情况。 +log表记录日志信息。可以根据seq字段的连续性,来判断是否存在日志丢失的情况。 ![GitHub Logo](../../figures/traceStreamer/log.png) - ### 查询举例 +- 已知tid = 123,查看当前线程的所有error级别的日志,可以使用如下SQL语句: +```select * from log where tid = 123 and level = "error"``` -- 已知 tid = 123,查看当前线程的所有 error 级别的日志,可以使用如下 SQL 语句: - `select * from log where tid = 123 and level = "error"` - -### perf 表之间关系图 - -- perf_report:此表记录 Hiperf 工具采集数据时的配置信息。 -- perf_thread:此表记录 hiperf 采集到的进程和线程数据。 -- perf_sample:此表中记录 Hiperf 工具的采样信息。sample_id 唯一表识一次采样记录,与 perf_callchain 表中的 sample_id 字段相关联。thread_id 为线程号。与 perf_thread 表中的 thread_id 字段相关联。event_type_id 为当前采样的事件类型 id,与 perf_report 表中的 id 字段相关联。 -- perf_callchain:此表格记录的是调用栈信息。 -- Perf_files:此表格主要存放着获取到的函数符号表和文件信息。file_id 唯一表识一个文件,与 perf_callchain 表中的 file_id 字段相关联。 - -![GitHub Logo](../../figures/traceStreamer/perf.png) +### perf表之间关系图 +- perf_report:此表记录Hiperf工具采集数据时的配置信息。 +- perf_thread:此表记录hiperf采集到的进程和线程数据。 +- perf_sample:此表中记录Hiperf工具的采样信息。id唯一表示一次采样记录,通过callchain_id与perf_callchain表中的callchain_id字段相关联。thread_id为线程号,与perf_thread表中的thread_id字段相关联。event_type_id为当前采样的事件类型id,与perf_report表中的id字段相关联。 +- perf_callchain:此表格记录的是调用栈信息。 +- Perf_files:此表格主要存放着获取到的函数符号表和文件信息。file_id唯一表示一个文件,与perf_callchain表中的file_id字段相关联。 +![GitHub Logo](../../figures/traceStreamer/perf.png) ### 查询举例 +- 已知同步后的时间戳为28463134340470,查询采样数据 +```select * from perf_sample where timestamp_trace = 28463134340470``` -- 已知同步后的时间戳为 28463134340470,查询采样数据 - `select * from perf_sample where timestamp_trace = 28463134340470` +- 已知同步后的时间戳为28463134340470,查询采样数据对应的的调用栈信息 +```select A.* from perf_callchain as A, perf_sample as B where B.timestamp_trace = 28463134340470 and A.callchain_id = B.callchain_id``` -- 已知同步后的时间戳为 28463134340470,查询采样数据对应的的调用栈信息 - `select A.* from perf_callchain as A, perf_sample as B where B.timestamp_trace = 28463134340470 and A.sample_id = B.sample_id` +- 已知同步后的时间戳为28463134277762,查询采样数据的函数名及文件路径 +```select A.*, B.name, C.path from perf_sample as A, perf_callchain as B, perf_files as C where A.timestamp_trace = 28463134277762 and B.callchain_id = A.callchain_id and B.callchain_id = 0 and B.file_id = C.file_id and C.serial_id = 0``` -- 已知同步后的时间戳为 28463134277762,查询采样数据的函数名及文件路径 - `select A.*, B.name, C.path from perf_sample as A, perf_callchain as B, perf_files as C where A.timestamp_trace = 28463134277762 and B.sample_id = A.sample_id and B.callchain_id = 0 and B.file_id = C.file_id and C.serial_id = 0` +- 已知线程号为6700,查询所有的采样记录 +```select * from perf_sample where thread_id = 6700``` -- 已知线程号为 6700,查询所有的采样记录 - `select * from perf_sample where thread_id = 6700` - -- 已知进程号为 7863,查询所有的采样记录 - `select A.* from perf_sample as A, perf_thread as B where B.process_id = 7863 and A.thread_id = B.thread_id` +- 已知进程号为7863,查询所有的采样记录 +```select A.* from perf_sample as A, perf_thread as B where B.process_id = 7863 and A.thread_id = B.thread_id``` - 查询所有采样对应的事件类型 - `select A.*, B.report_value from perf_sample as A, perf_report as B where A.event_type_id = B.id` +```select A.*, B.report_value from perf_sample as A, perf_report as B where A.event_type_id = B.id``` ### 帧渲染表之间的关系图 - -frame_slice: 记录 RS(RenderService)和应用的帧渲染。 -gpu_slice: 记录 RS 的帧对应的 gpu 渲染时长。 -frame_maps: 记录应用到 RS 的帧的映射关系。 -![GitHub Logo](../../figures/traceStreamer/frames.jpg) - +frame_slice: 记录RS(RenderService)和应用的帧渲染。 +gpu_slice: 记录RS的帧对应的gpu渲染时长。 +frame_maps:记录应用到RS的帧的映射关系。 +![GitHub Logo](../../figures/traceStreamer/frames.png) ### 查询示例 - - 已知进程,查询进程对应的实际渲染帧 - `select * from frame_slice where ipid = 1` - -- 已知进程的实际渲染帧的 dst 为 12,求其对应的 RS 进程的渲染帧 - `select * from frame_slice where id = 12 ` - -- 已知 RS 的渲染帧在 frame_slice 中所在行是 14,求其对应的 GPU 渲染时长 - `select * from gpu_slice where frame_row = 14` +```select * from frame_slice where ipid = 1``` -### JS 内存数据表关系图 +- 已知进程的实际渲染帧的dst为12,求其对应的RS进程的渲染帧 +```select * from frame_slice where id = 12 ``` -js_heap_files:记录 js 内存数据的文件名和文件索引 +- 已知RS的渲染帧在frame_slice中所在行是14,求其对应的GPU渲染时长 +```select * from gpu_slice where frame_row = 14``` -![1683163158954](image/des_tables/js_heap_files.png) +### JS内存数据表关系图 -js_heap_nodes: 记录 js 内存类对象数据 -js_heap_edges: 记录 js 内存类对象的成员数据 -js_heap_trace_node: 记录 timeline 的调用栈信息 -js_heap_sample: 记录 timeline 的时间轴信息 -![1683163373206](image/des_tables/js_heap_nodes.png) +js_heap_files:记录js内存数据的文件名和文件索引 -## TraceStreamer 输出数据库表格详细介绍 - -### app_name 表 +![1683163158954](image/des_tables/1683163158954.png) +js_heap_nodes:记录js内存类对象数据 +js_heap_edges:记录js内存类对象的成员数据 +js_heap_trace_node:记录timeline的调用栈信息 +js_heap_sample:记录timeline的时间轴信息 +![1683163373206](image/des_tables/1683163373206.png) +## TraceStreamer输出数据库表格详细介绍 +### app_name表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| flag | INT | -| app_name | INT | -| app_key | INT | - +|---- |---- | +|id |INT | +|app_name |INT | +|app_key |INT | #### 表描述 - -记录 HiSysevent 上报事件中的 IDE 相关事件中 APPNAME 的表关联信息。 - +记录HiSysevent上报事件中的IDE相关事件中APPNAME的表关联信息。 #### 字段详细描述 +- id:用于与表hisys_event_measure表中的key_id字段做对应 +- app_name:对应的事件的信息ID +- app_key:对应的事件的APPNAME字段的信息ID -- id:用于与表 hisys_event_measure 表中的 key_id 字段做对应 -- app_name:对应的事件的信息 ID -- app_key:对应的事件的 APPNAME 字段的信息 ID - -### args 表 - +### args表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| key | INT | -| datatype | INT | -| value | INT | -| argset | INT | - +|---- |---- | +|id |INT | +|key |INT | +|datatype |INT | +|value |INT | +|argset |INT | #### 表描述 - 记录方法的参数集合。 - #### 字段详细描述 - -- key:键 -- datatype:数据类型 -- value:取值 +- id: 唯一标识 +- key:键 +- datatype:数据类型 +- value:取值 - argset:参数集合 -### bio_latency_sample 表 - +### bio_latency_sample表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| callchain_id | INT | -| datatype | INT | -| type | INT | -| ipid | INT | -| itid | INT | -| start_ts | INT | -| end_ts | INT | -| latency_dur | INT | -| tier | INT | -| size | INT | -| block_number | TEXT | -| path | TEXT | -| dur_per_4k | INT | - -#### 表描述 - -记录 IO 操作相关方法调用,及调用栈数据。 - +|---- |---- | +|id |INT | +|callchain_id |INT | +|type |INT | +|ipid |INT | +|itid |INT | +|start_ts |INT | +|end_ts |INT | +|latency_dur |INT | +|tier |INT | +|size |INT | +|block_number |TEXT | +|path |TEXT | +|dur_per_4k |INT | +#### 表描述 +记录IO操作相关方法调用,及调用栈数据。 #### 字段详细描述 - -- callchain_id:调用栈的唯一标识。与 ebpf_callstack 表中 Callchain_id 字段关联 -- type:事件类型其取值为枚举类型(DATA_READ,DATA_WRITE,METADATA_READ,- METADATA_WRITE,PAGE_IN,PAGE_OUT) -- ipid:TS 内部进程号 -- itid:TS 内部线程号 -- start_ts:开始时间 -- end_ts:结束时间 -- latency_dur:总延迟 -- tier:优先级 -- size:文件大小 -- block_number:数据量大小(一般为 4K) -- path:路径 id -- dur_per_4k:每 4k 数据的平均延迟 - -### callstack 表 - +- id: 唯一标识 +- callchain_id:调用栈的唯一标识。与ebpf_callstack表中callchain_id字段关联 +- type:事件类型其取值为枚举类型(DATA_READ,DATA_WRITE,METADATA_READ,METADATA_WRITE,PAGE_IN,PAGE_OUT) +- ipid:TS内部进程号 +- itid:TS内部线程号 +- start_ts:开始时间 +- end_ts:结束时间 +- latency_dur:总延迟 +- tier:优先级 +- size:文件大小 +- block_number:数据量大小(一般为4K) +- path:路径id +- dur_per_4k:每4k数据的平均延迟 + +### callstack表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| ts | INT | -| dur | INT | -| callid | INT | -| cat | TEXT | -| identify | INT | -| name | TEXT | -| depth | INT | -| cookie | INT | -| parent_id | INT | -| argsetid | INT | -| chainId | TEXT | -| spanId | TEXT | -| parentSpanId | TEXT | -| flag | TEXT | -| args | TEXT | - -#### 表描述 - -记录调用堆栈和异步调用信息,其中 depth,stack_id 和 parent_stack_id 仅在非异步的调用中有效。当 cookid 不为空时,为异步调用,此时 callid 为进程唯一号,否则为线程唯一号。 - +|---- |---- | +|id |INT | +|ts |INT | +|dur |INT | +|callid |INT | +|cat |TEXT | +|name |TEXT | +|depth |INT | +|cookie |INT | +|parent_id |INT | +|argsetid |INT | +|chainId |TEXT | +|spanId |TEXT | +|parentSpanId |TEXT | +|flag |TEXT | +#### 表描述 +记录调用堆栈和异步调用信息,其中depth,stack_id和parent_stack_id仅在非异步的调用中有效。当cookid不为空时,为异步调用,此时callid为进程唯一号,否则为线程唯一号。 #### 字段详细描述 - -- dur:调用时长 -- callid:调用者的 ID,比如针对线程表里面的 id -- identify:调用栈的名字,与表 dataDict 相关联能够取出其 string 值 -- name:调用名称 +- id: 唯一标识 +- ts: 数据事件上报时间戳 +- dur:调用时长 +- callid:调用者的ID,比如针对线程表里面的id +- cat: 表示当前栈帧属于哪个业务(binder/workqueue/null) +- name:调用名称 - depth:调用深度 -- parent_id:父调用的 id -- spanId:分布式调用关联关系 -- flag:C 表示分布式调用发送方,S 表示接受方 -- args:分布式调用函数参数 - -### clk_event_filter 表 +- cookie: 异步调用的cookie值 +- parent_id:父调用的id +- argsetid: 调用的参数列表,关联args表的id字段 +- chainId:分布式数据中的chainId,id相同则表示为同一个分布式的调用栈 +- spanId:分布式调用关联关系,当前帧的id +- parentSpanId: 分布式调用关联关系,当前帧的parent的SpanId,对应当前表的spandId +- flag:C表示分布式调用发送方,S表示接受方 +### clk_event_filter表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| name | TEXT | -| cpu | INT | - +|---- |---- | +|id |INT | +|type |TEXT | +|name |TEXT | +|cpu |INT | #### 表描述 - 记录时钟信息。 - #### 字段详细描述 +- id: 与measure表的filterId字段关联 +- type:时钟事件类型 +- name:时钟事件名称 +- cpu: cpu编号 -- Type:时钟事件类型 -- Name:时钟事件名称 - -### clock_event_filter 表 - +### clock_event_filter表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| name | TEXT | -| cpu | INT | - +|---- |---- | +|id |INT | +|type |TEXT | +|name |TEXT | +|cpu |INT | #### 表描述 - -此结构用来维护时钟事件,cpu 与唯一的 ID 做关联。 - +此结构用来维护时钟事件,cpu与唯一的ID做关联。 #### 主要字段描述 - -- Type:时钟事件类型 +- id: 与measure表的filterId字段关联 +- Type:时钟事件类型 - Name:时钟事件名称 +- cpu: cpu编号 -### cpu_measure_filter 表 - +### cpu_measure_filter表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| name | TEXT | -| cpu | INT | - +|---- |---- | +|id |INT | +|name |TEXT | +|cpu |INT | #### 表描述 - -将 cpu 号作为 key1,cpu 的频率,空闲等状态作为 key2,唯一确定一个 filter_id。 - +将cpu号作为key1,cpu的频率,空闲等状态作为key2,唯一确定一个filter_id。 #### 主要字段描述 +- id: 与measure表的filterId字段关联 +- name: 事件名(cpu_idle/cpu_frequency/cpu_frequency_limits_max/cpu_frequency_limits_min) +- cpu:cpu号 -- Id(filterid), cpu:事件名称,cpu 号 - -### cpu_usage 表 - +### cpu_usage表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| ts | INT | -| dur | INT | -| total_load | REAL | -| user_load | REAL | -| system_load | REAL | -| process_num | INT | - -#### 表描述 - -记录了与 CPU 使用率相关的数据。 - +|---- |---- | +|ts |INT | +|dur |INT | +|total_load |REAL | +|user_load |REAL | +|system_load |REAL | +|process_num |INT | +#### 表描述 +记录了/proc/pid/stat与CPU使用率相关的数据。 #### 主要字段描述 - -- total_load:总负荷 -- user_load:用户负载 -- system_load:系统负载 +- ts: 数据上报时间 +- dur: 持续时间 +- total_load:总负荷 +- user_load:用户负载 +- system_load:系统负载 - process_num:线程数 -### data_dict 表 - +### data_dict表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| data | TEXT | - +|---- |---- | +|id |INT | +|data |TEXT | #### 表描述 - -此表记录了一个数据类型 ID 和字符串的映射。 - +此表记录了一个数据类型ID和字符串的映射。 #### 主要字段描述 - -- id:索引值 +- id:索引值 - data:字符串 -### data_type 表 - +### data_type表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| typeId | INT | -| desc | TEXT | - +|---- |---- | +|id |INT | +|typeId |INT | +|desc |TEXT | #### 表描述 - -此表记录了一个数据类型 ID 和数据描述的映射。 - +此表记录了一个数据类型ID和数据描述的映射。 #### 主要字段描述 - -- typeId::数据类型 id +- id: 唯一标识 +- typeId::数据类型id - Desc:数据类型描述 -### diskio 表 - +### diskio表 #### 表结构 - -| Columns Name | SQL TYPE | -| -------------- | -------- | -| ts | INT | -| dur | INT | -| rd | INT | -| wr | INT | -| rd_speed | REAL | -| wr_speed | REAL | -| rd_count | INT | -| wr_count | INT | -| rd_count_speed | REAL | -| wr_count_speed | REAL | - +| Columns Name | SQL TYPE | +|---- |---- | +|ts |INT | +|dur |INT | +|rd |INT | +|wr |INT | +|rd_speed |REAL | +|wr_speed |REAL | +|rd_count |INT | +|wr_count |INT | +|rd_count_speed |REAL | +|wr_count_speed |REAL | #### 表描述 - 记录了与磁盘读写相关的数据。 - #### 主要字段描述 - -- rd_sectors_kb:读数据的速度 -- wr_sectors_kb:写入数据的速度 - ts:时间戳 - -### ebpf_callstack 表 - +- dur: 持续时间 +- rd: 当前时间段的读取量 +- wr: 当前时间段的写入量 +- rd_speed:当前时间段的读取速度 +- wr_speed:当前时间段的写入速度 +- rd_count:读取的数据总量 +- wr_count:写入的数据总量 +- rd_count_speed:读数据的平均速度 +- wr_count_speed:写入数据的平均速度 + +### ebpf_callstack表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| callchain_id | INT | -| depth | TEXT | -| ip | TEXT | -| symbols_id | INT | -| file_path_id | INT | - +|---- |---- | +|id |INT | +|callchain_id |INT | +|depth |TEXT | +|ip |TEXT | +|symbols_id |INT | +|file_path_id |INT | #### 表描述 - 记录了与磁盘读写相关的数据。 - #### 主要字段描述 +- id: 唯一标识 +- callchain_id:调用栈的唯一标识 +- depth:调用栈深度。取值为零时表示栈顶 +- ip:调用栈ip +- symbols_id:调用栈函数名称, 与data_dict中的id字段关联 +- file_path_id:调用栈函数所属文件路径, 与data_dict中的id字段关联 -- callchain_id:调用栈的唯一标识 -- depth:调用栈深度。取值为零时表示栈顶 -- ip:调用栈 ip -- symbols_id:调用栈函数名称, 与 data_dict 中的 id 字段关联 -- file_path_id:调用栈函数所属文件路径, 与 data_dict 中的 id 字段关联 - -### file_system_sample 表 - +### file_system_sample表 #### 表结构 - -| Columns Name | SQL TYPE | -| --------------- | -------- | -| callchain_id | INT | -| type | INT | -| ipid | INT | -| itid | INT | -| start_ts | INT | -| end_ts | INT | -| dur | INT | -| return_value | TEXT | -| error_code | TEXT | -| fd | INT | -| file_id | INT | -| size | INT | -| first_argument | TEXT | -| second_argument | TEXT | -| third_argument | TEXT | -| fourth_argument | TEXT | - +| Columns Name | SQL TYPE | +|---- |---- | +|callchain_id |INT | +|type |INT | +|ipid |INT | +|itid |INT | +|start_ts |INT | +|end_ts |INT | +|dur |INT | +|return_value |TEXT | +|error_code |TEXT | +|fd |INT | +|file_id |INT | +|size |INT | +|first_argument |TEXT | +|second_argument |TEXT | +|third_argument |TEXT | +|fourth_argument |TEXT | #### 表描述 - 记录了调用栈的相关信息。 - #### 主要字段描述 - -- callchain_id:调用栈信息 ID 与 file_system_callstack 表中 call_chain_id 字段相关联 -- type:对应文件操作 open,close,read,write -- ipid:线程所属的进程 ID -- start_ts:开始时间 -- end_ts:结束时间 -- dur:耗时 -- return_value:文件操作的返回值 -- error_code:文件操作发生错误时的错误码 -- fd:文件描述符 fd -- file_id:当 type 为 open,close 时为其操作的文件路径,当 type 为 read,write 时为固定字段(null) -- size:在 type 为 read,write 时对应的文件的读或者写的大小 -- first_argument:参数一 -- second_argument:参数二 -- third_argument:参数三 +- callchain_id:调用栈信息ID与file_system_callstack表中call_chain_id字段相关联 +- type:对应文件操作open,close,read,write +- ipid:样本所属的内部进程ID,关联process表id +- itid: 样本所属的内部线程ID,关联thread表id +- start_ts:开始时间 +- end_ts:结束时间 +- dur:耗时 +- return_value:文件操作的返回值 +- error_code:文件操作发生错误时的错误码 +- fd:文件描述符fd +- file_id:当type为open,close时为其操作的文件路径,当type为read,write时为固定字段(null) +- size:在type为read,write时对应的文件的读或者写的大小 +- first_argument:参数一 +- second_argument:参数二 +- third_argument:参数三 - fourth_argument:参数四 -### hidump 表 - +### hidump表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| ts | INT | -| fps | INT | - +|---- |---- | +|id |INT | +|ts |INT | +|fps |INT | #### 表描述 - 此表记录了设备的帧率信息,fps。 - #### 相关字段描述 - +- id: 唯一标识 +- ts: 数据上报时间戳 - fps:帧率值 -### hisys_event_measure 表 - +### hisys_event_measure表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| serial | INT | -| ts | INT | -| name_id | INT | -| key_id | INT | -| type | INT | -| int_value | REAL | -| string_value | TEXT | - -#### 表描述 - -记录所有的 system event 事件的相关数据,及其相关表的映射信息。 - +|---- |---- | +|serial |INT | +|ts |INT | +|name_id |INT | +|key_id |INT | +|type |INT | +|int_value |REAL | +|string_value |TEXT | +#### 表描述 +记录所有的system event事件的相关数据,及其相关表的映射信息。 #### 相关字段描述 +- serial:每条数据过来携带唯一一条id作为标识 +- ts: 数据上报时间戳 +- name_id:存放事件对应的ID,与data_dict表相关联可以取出对应的字段 +- key_id:存放事件包含的字段的ID,与表app_name的id字段相关联,找到app_name表的 id字段对应行的app_key字段与表data_dict表相关联取出对应的字段 +- type:存放事件所包含的字段的值所属的类型为int型还是string(0为int,1为string) +- int_value:存放本事件所包含的字段的int型的值 +- string_value:存放本事件所包含的字段的string型的值 -- serial:每条数据过来携带唯一一条 id 作为标识 -- name_id:存放事件对应的 ID,与 data_dict 表相关联可以取出对应的字段 -- key_id:存放事件包含的字段的 ID,与表 app_name 的 id 字段相关联,找到 app_name 表的 id 字段对应行的 app_key 字段与表 data_dict 表相关联取出对应的字段 -- type:存放事件所包含的字段的值所属的类型为 int 型还是 string(0 为 int,1 为 string) -- int_value:存放本事件所包含的字段的 int 型的值 -- string_value:存放本事件所包含的字段的 string 型的值 - -### instant 表 - +### instant表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| ts | INT | -| name | TEXT | -| ref | INT | -| wakeup_from | INT | -| ref_type | TEXT | -| value | REAL | - -#### 表描述 - -记录了系统中的 waking 和 wakeup 事件。 - +|---- |---- | +|ts |INT | +|name |TEXT | +|ref |INT | +|wakeup_from |INT | +|ref_type |TEXT | +|value |REAL | +#### 表描述 +记录了系统中的waking和wakeup事件。 #### 字段描述 - -- ts:唤醒时间 -- name:唤醒事件的名称 -- ref:索引号 -- wakeup_from:唤醒当前线程的内部线程号(itid) -- ref_type:描述了 value 字段的类型(一般取值为 itid) +- ts:唤醒时间 +- name:唤醒事件的名称 +- ref:索引号 +- wakeup_from:唤醒当前线程的内部线程号(itid) +- ref_type:描述了value字段的类型(一般取值为itid) - value:一般为当前线程的内部线程号取值 -### irq 表 - -#### 表结构 - +### irq表 +#### 表结构 | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| ts | INT | -| dur | INT | -| callid | INT | -| cat | TEXT | -| name | TEXT | -| depth | INT | -| cookie | INT | -| parent_id | INT | -| argsetid | INT | -| chainId | TEXT | -| spanId | TEXT | -| parentSpanId | TEXT | -| flag | TEXT | -| args | TEXT | - +|---- |---- | +|id |INT | +|ts |INT | +|dur |INT | +|callid |INT | +|cat |TEXT | +|name |TEXT | +|depth |INT | +|cookie |INT | +|parent_id |INT | +|argsetid |INT | +|flag |TEXT | #### 表描述 - 记录中断相关事件。 - #### 相关字段描述 +- id: 唯一标识 +- ts: 数据上报时间戳 +- dur:调用中断时长 +- callid:调用中断者的ID,比如针对线程表里面的id +- cat:调用栈数据类型(取值范围:irq,softirq, ipi) +- name:调用中断的名称 +- depth:中断调用的深度 +- cookie: 异步调用的cookie值 +- parent_id:父调用中断的id +- argsetid: 跟arg_view中的argset关联,保存irq的名字以及值(irq=5 name=IPI) +- flag: 1表示硬中断 -- dur:调用中断时长 -- callid:调用中断者的 ID,比如针对线程表里面的 id -- cat:调用栈数据类型(取值范围:irq,softirq...) -- name:调用中断的名称 -- depth:中断调用的深度 -- parent_id:父调用中断的 id -- spanId:分布式调用中断关联关系 - -### js_config 表 +### js_config表 #### 表结构 - -| Columns Name | SQL TYPE | -| --------------------- | -------- | -| pid | INT | -| type | INT | -| interval | INT | +| Columns Name | SQL TYPE | +| ------------- | -------- | +| pid | INT | +| type | INT | +| interval | INT | | capture_numeric_value | INT | -| trace_allocation | INT | -| enable_cpu_profiler | INT | -| cpu_profiler_interval | INT | - +| trace_allocation | INT | +| enable_cpu_profiler | INT | +| cpu_profiler_interval | INT | #### 表描述 - -记录 arkTs 数据采集的相关配置。 - +记录arkTs数据采集的相关配置。 #### 相关字段描述 +- pid:目标进程ID。 +- type:JS数据类型,取值与枚举HeapType对应,0表示JS内存数据为snapshot类型,1表示JS内存数据为timeline类型,-1表示没有JS内存数据。 +- interval:当type=0时生效,单位是秒,表示一次snapshot事件和下一次snapshot事件之间的间隔。 +- capture_numeric_value:当type=0时生效,表示是否同时抓取numeric。 +- track_allocation:当type=1时生效,表示是否抓取allocations。 +- enable_cpu_profiler:表示是否存在cpuprofiler的数据。 +- cpu_profiler_interval:表示cpuprofiler数据的采集间隔。 -- pid: 目标进程 ID。 -- type: JS 数据类型,取值与枚举 HeapType 对应,0 表示 JS 内存数据为 snapshot 类型,1 表示 JS 内存数据为 timeline 类型,-1 表示没有 JS 内存数据。 -- interval: 当 type=0 时生效,单位是秒,表示一次 snapshot 事件和下一次 snapshot 事件之间的间隔。 -- capture_numeric_value: 当 type=0 时生效,表示是否同时抓取 numeric。 -- track_allocation: 当 type=1 时生效,表示是否抓取 allocations。 -- enable_cpu_profiler: 表示是否存在 cpuprofiler 的数据。 -- cpu_profiler_interval: 表示 cpuprofiler 数据的采集间隔。 - -### js_cpu_profiler_node 表 - +### js_cpu_profiler_node表 #### 表结构 - -| Columns Name | SQL TYPE | -| -------------- | -------- | -| function_id | INT | -| function_index | INT | -| script_id | INT | -| url_index | INT | -| line_number | INT | +| Columns Name | SQL TYPE | +| ------------- | -------- | +| function_id | INT | +| function_index | INT | +| script_id | INT | +| url_index | INT | +| line_number | INT | | column_number | INT | -| hit_count | INT | -| children | INT | -| parent_id | INT | - +| hit_count | INT | +| children | INT | +| parent_id | INT | #### 表描述 - -记录 cpu profiler 中 node 节点的数据。 - +记录cpu profiler中node节点的数据。 #### 相关字段描述 - -- function_id: 函数的 ID 号。 -- function_index: 函数名称在 data_dict 中的索引号。 -- script_id: 关联到的类对象所在文件的绝对路径 ID。 -- url_index: 关联到的类对象所在文件的绝对路径名称在 data_dict 中的索引号。 -- line_number: 类对象所在文件的行号。 -- column_number: 类对象所在文件的列号。 -- hit_count: 采样次数。 -- children: 子节点的 id 号。 -- parent_id: 父节点的 id 号。 - -### js_cpu_profiler_sample 表 - +- function_id: 函数的ID号。 +- function_index:函数名称在data_dict中的索引号。 +- script_id:关联到的类对象所在文件的绝对路径ID。 +- url_index:关联到的类对象所在文件的绝对路径名称在data_dict中的索引号。 +- line_number:类对象所在文件的行号。 +- column_number:类对象所在文件的列号。 +- hit_count:采样次数。 +- children:子节点的id号。 +- parent_id:父节点的id号。 + +### js_cpu_profiler_sample表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| function_id | INT | -| start_time | INT | -| end_time | INT | -| dur | INT | - +| Columns Name | SQL TYPE | +| ------------- | -------- | +| id | INT | +| function_id | INT | +| start_time | INT | +| end_time | INT | +| dur | INT | #### 表描述 - -记录了 cpu profiler 中 sample 节点的数据。 - +记录了cpu profiler 中sample节点的数据。 #### 相关字段描述 +- id: ts内部ID号。 +- function_id:函数的ID号。 +- start_time:数据上报的起始时间。 +- end_time:数据上报的终止时间。 +- dur:数据上报的间隔时间。 -- id: ts 内部 ID 号。 -- function_id: 函数的 ID 号。 -- start_time: 数据上报的起始时间。 -- end_time: 数据上报的终止时间。 -- dur: 数据上报的间隔时间。 - -### js_heap_edges 表 - +### js_heap_edges表 #### 表结构 - | Columns Name | SQL TYPE | | ------------- | -------- | | file_id | INT | @@ -842,49 +720,37 @@ js_heap_sample: 记录 timeline 的时间轴信息 | to_node | INT | | from_node_id | INT | | to_node_id | INT | - #### 表描述 - -记录 js 内存数据类对象对应的成员的信息。 - +记录js内存数据类对象对应的成员的信息。 #### 相关字段描述 - -- file_id:文件 ID +- file_id:文件ID - edge_index:成员的索引号 -- type:成员的类型,取值范围为 js_heap_info 表中的 edge_types -- name_or_index:数据名称,取值为 js_heap_string 表中的下标索引 -- to_node:此成员指向的类对象在 nodes 数组中的索引 -- from_node_id:类对象 ID,该类对象指向此成员数据 -- to_node_id:此成员指向到的类对象 nodes 数组中的 ID - -### js_heap_files 表 +- type:成员的类型,取值范围为js_heap_info表中的edge_types +- name_or_index:数据名称,取值为js_heap_string表中的下标索引 +- to_node:此成员指向的类对象在nodes数组中的索引 +- from_node_id:类对象ID,该类对象指向此成员数据 +- to_node_id:此成员指向到的类对象nodes数组中的ID +### js_heap_files表 #### 表结构 - | Columns Name | SQL TYPE | | ------------ | -------- | | id | INT | | file_name | TEXT | | start_time | INT | | end_time | INT | -| pid | INT | - +| self_size | INT | #### 表描述 - -记录了 js 内存数据的文件名称和时间。 - +记录了js内存数据的文件名称和时间。 #### 相关字段描述 - -- id:文件 ID +- id:文件ID - file_name:文件名称 - start_time:数据抓取的起始时间 - end_time:数据抓取的终止时间 -- pid:进程号 - -### js_heap_info 表 +- self_size: 当前snapshot中所有node的size之和 +### js_heap_info表 #### 表结构 - | Columns Name | SQL TYPE | | ------------ | -------- | | file_id | INT | @@ -892,23 +758,17 @@ js_heap_sample: 记录 timeline 的时间轴信息 | type | INT | | int_value | INT | | str_value | TEXT | - #### 表描述 - -记录了 js 内存数据类型,如 nodes 和 edges 的字段类型和数据总数。 - +记录了js内存数据类型,如nodes和edges的字段类型和数据总数。 #### 相关字段描述 - -- file_id:文件 ID +- file_id:文件ID - key:类型名称 - type:数据类型索引 -- int_value:int 类型的数据值,如 count 类型数据 -- str_value:string 类型的数据值,如 typename - -### js_heap_location 表 +- int_value:int类型的数据值,如count类型数据 +- str_value:string类型的数据值,如typename +### js_heap_location表 #### 表结构 - | Columns Name | SQL TYPE | | ------------ | -------- | | file_id | INT | @@ -916,23 +776,17 @@ js_heap_sample: 记录 timeline 的时间轴信息 | script_id | INT | | line | INT | | column | INT | - #### 表描述 - -记录了 js 内存 location 节点相关数据,此表目前无抓取到的数据。 - +记录了js内存location节点相关数据,此表目前无抓取到的数据。 #### 相关字段描述 - -- file_id:文件 ID -- object_index:与 location 关联的类对象的索引,取值为 js_heap_nodes 的下标索引 -- script_id:关联到的类对象所在文件的绝对路径 ID +- file_id:文件ID +- object_index:与location关联的类对象的索引,取值为js_heap_nodes的下标索引 +- script_id:关联到的类对象所在文件的绝对路径ID - line:在类对象所在的文件中的行号 - column:在类对象所在的文件中的列号 -### js_heap_nodes 表 - +### js_heap_nodes表 #### 表结构 - | Columns Name | SQL TYPE | | ------------- | -------- | | file_id | INT | @@ -944,67 +798,49 @@ js_heap_sample: 记录 timeline 的时间轴信息 | edge_count | INT | | trace_node_id | INT | | detachedness | INT | - #### 表描述 - -记录了 js 内存数据中类对象的数据。 - +记录了js内存数据中类对象的数据。 #### 相关字段描述 - -- file_id:文件 ID +- file_id:文件ID - node_index:类对象的索引 - type:类对象的类型 - name:类对象的名称 -- id:类对象的唯一 ID +- id:类对象的唯一ID - self_size:该类对象所有成员的大小(以字节为单位) - edge_count:该类对象指向的类成员的个数 -- trace_node_id:该类对象关联到 js_heap_trace_node 表中的调用栈 ID -- detachedness:是否可以从 window 全局对象访问此节点,0 表示是,1 表示否 - -### js_heap_sample 表 +- trace_node_id:该类对象关联到js_heap_trace_node表中的调用栈ID +- detachedness:是否可以从window全局对象访问此节点,0表示是,1表示否 +### js_heap_sample表 #### 表结构 - | Columns Name | SQL TYPE | | ---------------- | -------- | | file_id | INT | | timestamp_us | INT | | last_assigned_id | INT | - #### 表描述 - -记录了 timeline 模式下的时间轴信息。 - +记录了timeline模式下的时间轴信息。 #### 相关字段描述 - -- file_id:文件 ID +- file_id:文件ID - timestamp_us:时间信息 -- last_assigned_id:当前时间点的 id - -### js_heap_string 表 +- last_assigned_id:当前时间点的id +### js_heap_string表 #### 表结构 - | Columns Name | SQL TYPE | | ------------ | -------- | | file_id | INT | | file_index | INT | | string | TEXT | - #### 表描述 - -记录了 js 内存数据中的字符串。 - +记录了js内存数据中的字符串。 #### 相关字段描述 - -- file_id:文件 ID +- file_id:文件ID - file_index:索引 - string:对应的字符串信息 -### js_heap_trace_function_info 表 - +### js_heap_trace_function_info表 #### 表结构 - | Columns Name | SQL TYPE | | -------------- | -------- | | file_id | INT | @@ -1015,26 +851,20 @@ js_heap_sample: 记录 timeline 的时间轴信息 | script_id | INT | | line | INT | | column | INT | - #### 表描述 - -记录了 timeline 模式下的调用栈的每个函数信息。 - +记录了timeline模式下的调用栈的每个函数信息。 #### 相关字段描述 - -- file_id:文件 ID +- file_id:文件ID - function_index:函数索引 -- function_id:函数 ID +- function_id:函数ID - name:函数名称 - script_name:关联到的类对象所在文件的绝对路径名称 -- script_id:关联到的类对象所在文件的绝对路径 ID +- script_id:关联到的类对象所在文件的绝对路径ID - line:在类对象所在的文件中的行号 - column:在类对象所在的文件中的列号 -### js_heap_trace_node 表 - +### js_heap_trace_node表 #### 表结构 - | Columns Name | SQL TYPE | | ------------------- | -------- | | file_id | INT | @@ -1043,41 +873,31 @@ js_heap_sample: 记录 timeline 的时间轴信息 | count | INT | | size | INT | | parent_id | INT | - #### 表描述 - -记录了 timeline 模式下的调用栈的信息。 - +记录了timeline模式下的调用栈的信息。 #### 相关字段描述 - -- file_id:文件 ID +- file_id:文件ID - id:调用栈节点索引 - function_info_index:函数信息索引 - count:调用栈个数 - size:调用栈大小 - parent_id:调用栈父节点 -### app_startup 表 - +### app_startup表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------ | -------- | -| call_id | INT | -| ipid | INT | -| tid | INT | -| start_time | INT | -| end_time | INT | -| start_name | INT | -| packed_name | INT | - +| Columns Name | SQL TYPE | +| ------------------- | -------- | +| call_id | INT | +| ipid | INT | +| tid | INT | +| start_time | INT | +| end_time | INT | +| start_name | INT | +| packed_name | INT | #### 表描述 - 记录了应用启动的相关信息。 - #### 相关字段描述 - -- call_id:调用者的 ID,比如针对线程表里面的 id +- call_id:调用者的ID,比如针对线程表里面的id - ipid:内部进程号 - tid:内部线程号 - start_time:阶段开始时间 @@ -1085,1306 +905,1176 @@ js_heap_sample: 记录 timeline 的时间轴信息 - start_name:阶段名称 - packed_name:应用名称 -### static_intialize 表 - +### static_intialize表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------ | -------- | -| call_id | INT | -| ipid | INT | -| tid | INT | -| start_time | INT | -| end_time | INT | -| so_name | INT | -| depth | INT | - -#### 表描述 - -记录了 so 初始化的相关信息。 - +| Columns Name | SQL TYPE | +| ------------------- | -------- | +| call_id | INT | +| ipid | INT | +| tid | INT | +| start_time | INT | +| end_time | INT | +| so_name | INT | +| depth | INT | +#### 表描述 +记录了so初始化的相关信息。 #### 相关字段描述 - -- call_id:调用者的 ID,比如针对线程表里面的 id +- call_id:调用者的ID,比如针对线程表里面的id - ipid:内部进程号 - tid:内部线程号 - start_time:阶段开始时间 - end_time:阶段结束时间 -- so_name:so 文件名称 +- so_name:so文件名称 - depth:泳道图的深度 -### live_process 表 - +### live_process表 #### 表结构 - -| Columns Name | SQL TYPE | -| ----------------- | -------- | -| ts | INT | -| dur | INT | -| cpu_time | INT | -| process_id | INT | -| process_name | TEXT | -| parent_process_id | INT | -| uid | INT | -| user_name | TEXT | -| cpu_usage | REAL | -| pss_info | INT | -| thread_num | INT | -| disk_writes | INT | -| disk_reads | INT | - -#### 表描述 - -记录了一些实时的进程中执行的一些数据(Monitor)。 - +| Columns Name | SQL TYPE | +|---- |---- | +|ts |INT | +|dur |INT | +|cpu_time |INT | +|process_id |INT | +|process_name |TEXT | +|parent_process_id |INT | +|uid |INT | +|user_name |TEXT | +|cpu_usage |REAL | +|pss_info |INT | +|thread_num |INT | +|disk_writes |INT | +|disk_reads |INT | +#### 表描述 +记录了一些实时的进程中(/proc/$PID/status、/proc/$PID/stat、/proc/stat)执行的一些数据(Monitor)。 #### 主要字段描述 - -- process_id:进程 id -- process_name:进程名 -- parent_process_id:父进程的 id -- uid:用户 id -- user_name:用户名 -- cpu_usage:cpu 使用率 -- pss_info:进程信息 -- thread_num:线程数量 -- disk_writes:磁盘写量 +- ts: 数据上报时间戳 +- dur: 事件持续时间 +- cpu_time: /proc/$PID/stat 中的cpu时间 +- process_id:进程id +- process_name:进程名 +- parent_process_id:父进程的id +- uid:用户id +- user_name:用户名 +- cpu_usage:cpu使用率 +- pss_info:进程信息 +- thread_num:线程数量 +- disk_writes:磁盘写量 - disk_reads:磁盘读量 -### log 表 - +### log表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| seq | INT | -| ts | INT | -| pid | INT | -| tid | INT | -| level | TEXT | -| tag | TEXT | -| context | TEXT | -| origints | INT | - +|---- |---- | +|seq |INT | +|ts |INT | +|pid |INT | +|tid |INT | +|level |TEXT | +|tag |TEXT | +|context |TEXT | +|origints |INT | #### 表描述 - 记录日志信息。 - #### 关键字段描述 +- seq:日志序号,保证日志解析的准确性 +- ts:打印日志时间 +- pid:日志的进程号 +- tid:日志的线程号 +- level:日志级别 +- tag:日志标签 +- context:日志内容 +- origints:log中自带的时间 -- Seq:日志序号,保证日志解析的准确性 -- Ts:打印日志时间 -- Pid:日志的进程号 -- Tid:日志的线程号 -- Level:日志级别 -- Tag:日志标签 -- Context:日志内容 - -### measure 表 - +### measure表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| type | TEXT | -| ts | INT | -| dur | INT | -| value | INT | -| filter_id | INT | - +|---- |---- | +|type |TEXT | +|ts |INT | +|dur |INT | +|value |INT | +|filter_id |INT | #### 表描述 - 记录所有的计量值。 - #### 关键字段描述 +- type:固定字段(measure) +- ts:事件时间 +- dur:该值持续的时长 +- value:数值 +- filter_id:对应filter表中的ID -- type:固定字段(measure) -- ts:事件时间 -- dur:该值持续的时长 -- value:数值 -- filter_id:对应 filter 表中的 ID - -### measure_filter 表 - +### measure_filter表 #### 表结构 - -| Columns Name | SQL TYPE | -| ----------------- | -------- | -| id | INT | -| type | TEXT | -| name | TEXT | -| source_arg_set_id | INT | - -#### 表描述 - -记录一个递增的 filterid 队列,所有其他的 filter 类型在获取过程中,均从此数据列表中获取下一个可用的 filter_id 并做记录。 - -#### 字段详细描述 - -过滤分类(type),过滤名称(key2),数据 ID(key1)。 -数据 ID 在 process_measure_filter, sys_event_filter 中作为 id。 - -### meta 表 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|type |TEXT | +|name |TEXT | +|source_arg_set_id |INT | +#### 表描述 +记录一个递增的filterid队列,所有其他的filter类型在获取过程中,均从此数据列表中获取下一个可用的filter_id并做记录。 +#### 字段详细描述 +过滤分类(type),过滤名称(key2),数据ID(key1)。 +id: 唯一的filterId,与process_measure_filter, sys_event_filter中的id关联。 +type:各种类型(cpu_measure_filter,clk_rate_filter,process_measure_filter...) +name: type的子类型。 +source_arg_set_id: 同一个source_arg_set_id代表一组数据,一般取得是itid或者cpu编号。 + +### meta表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| name | TEXT | -| value | TEXT | - +|---- |---- | +|name |TEXT | +|value |TEXT | #### 表描述 - -此表记录了数据解析或导出时的一些现场数据,比如使用的 TraceStreamer 版本, 工具的发布时间,数据解析的时间,数据的持续时长,以及原始数据的格式。 - +此表记录了数据解析或导出时的一些现场数据,比如使用的TraceStreamer版本, 工具的发布时间,数据解析的时间,数据的持续时长,以及原始数据的格式。 #### 主要字段描述 +- Name:指定元数据的key +- Value:指定元数据的value -- Name:指定元数据的 key -- Value:指定元数据的 value - -### native_hook 表 - +### native_hook表 #### 表结构 - -| Columns Name | SQL TYPE | -| ---------------- | -------- | -| id | INT | -| callChainId | INT | -| ipid | INT | -| itid | INT | -| event_type | TEXT | -| sub_type_id | NUM | -| start_ts | INT | -| end_ts | INT | -| dur | INT | -| addr | INT | -| heap_size | INT | -| all_heap_size | INT | -| current_size_dur | INT | -| last_lib_id | INT | - -#### 表描述 - -记录 native_hook 抓取的某个进程的堆内存,内存映射相关数据。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|callchain_id |INT | +|ipid |INT | +|itid |INT | +|event_type |TEXT | +|sub_type_id |NUM | +|start_ts |INT | +|end_ts |INT | +|dur |INT | +|addr |INT | +|heap_size |INT | +|all_heap_size |INT | +|current_size_dur |INT | +|last_lib_id |INT | +|last_symbol_id |INT | +#### 表描述 +记录native_hook抓取的某个进程的堆内存,内存映射相关数据。 #### 关键字段描述 - -- callChainId:唯一标识一条 native_hook 数据 -- event_type:事件类型取值范围(AllocEvent,FreeEvent,MmapEvent, MunmapEvent) -- sub_type_id:子事件类型(只有 sub_type 字段为 MmapEvent 时,该字段才会有值) -- start_ts:申请内存开始时间 -- end_ts:释放内存时间 -- Dur:申请内存活跃时间 -- Addr:申请内存地址 -- mem_size:申请或释放内存大小 -- all_mem_size:从采集数据开始到当前时刻,申请并活跃的内存总量。 event_type 为 AllocEvent 或者 FreeEvent 时,表示活跃的堆内存总量。当 event_type 为 MmapEvent 或者 MunmapEvent 时,表示活跃的映射内存总量 -- current_size_dur:表示当前活跃内存总量的持续时间 -- last_lib_id:函数调用栈他最后一个函数所属的文件路径,除了文件名中带 musl 和 libc++ - -### native_hook_frame 表 - +- id: 唯一标识 +- callChainId:唯一标识一条native_hook数据 +- ipid:所属的进程内部id, 关联process表中的id +- itid:所属的线程内部id, 关联thread表中的id +- event_type:事件类型取值范围(AllocEvent,FreeEvent,MmapEvent, MunmapEvent) +- sub_type_id:子事件类型(只有event_type字段为MmapEvent时,该字段才会有值) +- start_ts:申请内存开始时间 +- end_ts:释放内存时间 +- dur:申请内存活跃时间 +- addr:申请内存地址 +- heap_size: 申请的内存大小 +- all_heap_size:从采集数据开始到当前时刻,申请并活跃的内存总量。 event_type为AllocEvent或者FreeEvent时,表示活跃的堆内存总量。当event_type为MmapEvent或者MunmapEvent时,表示活跃的映射内存总量 +- current_size_dur:表示当前活跃内存总量的持续时间 +- last_lib_id:函数调用栈最后一个函数所属的文件路径,除了文件名中带musl和libc++ +- last_symbol_id: 函数调用栈最后一个函数名,lib除了文件名中带musl和libc++ + +### native_hook_frame表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------- | -------- | -| id | INT | -| callchain_id | INT | -| depth | INT | -| symbol_id | INT | -| file_id | INT | -| offset | INT | -| symbol_offset | INT | - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|callchain_id |INT | +|depth |INT | +|ip |INT | +|symbol_id |INT | +|file_id |INT | +|offset |INT | +|symbol_offset |INT | +|vaddr |INT | #### 表描述 - 记录了内存的申请和释放的堆栈。 - #### 相关字段描述 - -- callchain_id:标识一组调用堆栈 -- depth:调用栈深度 -- symbol_id:函数名 -- file_id:函数所属文件 - -### native_hook_statistic 表 - +- id: 唯一标识 +- callchain_id:标识一组调用堆栈 +- depth:调用栈深度 +- ip: 函数ip +- symbol_id:函数名id,对应data_dict中id +- file_id:函数所属文件id,对应data_dict中id +- offset: 取自Frame message的offset字段 +- symbol_offset: 取自Frame message的symbol_offset字段 +- vaddr: 一般取值为offset + symbol_offset + +### native_hook_statistic表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------- | -------- | -| id | INT | -| callchain_id | INT | -| ipid | INT | -| ts | INT | -| type | INT | -| apply_count | INT | -| release_count | INT | -| apply_size | INT | -| release_size | INT | - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|callchain_id |INT | +|ipid |INT | +|ts |INT | +|type |INT | +|sub_type_id |INT | +|apply_count |INT | +|release_count |INT | +|apply_size |INT | +|release_size |INT | +|last_lib_id |INT | +|last_symbol_id |INT | #### 表描述 - 该表记录了内存申请/释放的统计信息。 - -#### 关键字段描述 - -- callchain_id:内存分配的回调链 id -- ipid:进程 id +#### 关键字段描述 +- id: 唯一标识 +- callchain_id:内存分配的回调链id +- ipid:进程id - ts:统计数据上报时间 -- type:事件类型,0 代表 malloc 事件,1 代表 mmap 事件 +- type:事件类型,0代表malloc事件,1代表mmap事件 +- sub_type_id:事件子类型,关联data_dict表id - apply_count:当前调用栈内存分配总次数 - release_count:当前调用栈内存释放总次数 - apply_size:当前调用栈累计分配总大小 - release_size:当前调用栈累计释放总大小 +- last_lib_id:函数调用栈最后一个函数所属的文件路径,除了文件名中带musl和libc++ +- last_symbol_id: 函数调用栈最后一个函数名,lib除了文件名中带musl和libc++ -### network 表 - +### network表 #### 表结构 - -| Columns Name | SQL TYPE | -| -------------- | -------- | -| ts | INT | -| dur | INT | -| tx | INT | -| rx | INT | -| tx_speed | REAL | -| rx_speed | REAL | -| packet_in | INT | -| packet_in_sec | REAL | -| packet_out | INT | -| packet_out_sec | REAL | -| net_type | TEXT | - +| Columns Name | SQL TYPE | +|---- |---- | +|ts |INT | +|dur |INT | +|tx |INT | +|rx |INT | +|tx_speed |REAL | +|rx_speed |REAL | +|packet_in |INT | +|packet_in_sec |REAL | +|packet_out |INT | +|packet_out_sec |REAL | +|net_type |TEXT | #### 表描述 - 记录了网络数据传输相关的信息。 - #### 主要字段描述 - -- tv_sec:时间,秒为单位 -- tv_nsec:时间,纳秒为单位 -- tx_bytes:网络数据的写入量 -- rx_bytes:网络数据的读取量 - -### paged_memory_sample 表 - +- ts:事件上报时间 +- dur: 持续时间 +- tx: 网络数据的写入次数 +- rx: 网络数据的读取次数 +- tx_speed: 网络数据的写入次数/s +- rx_speed: 网络数据的读取次数/s +- packet_in:网络数据申请的数据包个数 +- packet_in_sec: 网络数据申请的数据包个数/s +- packet_out: 网络数据发送的数据包个数 +- packet_out_sec:网络数据发送的数据包个数/s +- net_type:网络类型,wifi/蜂窝 + +### paged_memory_sample表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| callchain_id | INT | -| type | INT | -| ipid | INT | -| start_ts | INT | -| end_ts | INT | -| dur | INT | -| size | INT | -| addr | TEXT | -| itid | INT | - +|---- |---- | +|id |INT | +|callchain_id |INT | +|type |INT | +|ipid |INT | +|start_ts |INT | +|end_ts |INT | +|dur |INT | +|size |INT | +|addr |TEXT | +|itid |INT | #### 表描述 - 记录了网络数据传输相关的信息。 - #### 主要字段描述 +- id: 唯一标识 +- callchain_id: 取值相同的一组数据,表示一个完整的调用栈 +- type:事件类型 +- ipid:TS内部进程号 +- start_ts:开始时间 +- end_ts:结束时间 +- dur:持续时间 +- size:操作页数,1页=4kb +- addr: 内存地址 +- itid:内部线程号 -- callchain_id: 取值相同的一组数据,表示一个完整的调用栈 -- type:事件类型 -- ipid:TS 内部进程号 -- start_ts:开始时间 -- end_ts:结束时间 -- dur:持续时间 -- size:操作页数 -- itid:TS 内部线程号 - -### perf_callchain 表 - +### perf_callchain表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------- | -------- | -| id | INT | -| callchain_id | INT | -| depth | INT | -| vaddr_in_file | INT | -| file_id | INT | -| symbol_id | INT | -| name | TEXT | - -#### 表描述 - -记录了 Hiperf 采样数据的调用栈信息。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|callchain_id |INT | +|depth |INT | +|ip |INT | +|vaddr_in_file |INT | +|file_id |INT | +|symbol_id |INT | +|name |TEXT | +#### 表描述 +记录了Hiperf采样数据的调用栈信息。 #### 主要字段描述 - -- callchain_id:标识一组调用堆栈 -- depth:调用栈深度 -- vaddr_in_file:函数在文件中的虚拟地址 -- file_id:与 PerfFiles 中的 file_id 字段相关联 -- symbol_id:与 PerfFiles 中的 symbol_id 相关联 +- id: 唯一标识 +- callchain_id:标识一组调用堆栈 +- depth:调用栈深度 +- ip: 函数ip +- vaddr_in_file:函数在文件中的虚拟地址 +- file_id:与perf_files表中的file_id字段相关联 +- symbol_id:与PerfFiles中的serial_id字段相关联 - name:函数名 -### perf_files 表 - +### perf_files表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| file_id | INT | -| serial_id | INT | -| symbol | TEXT | -| path | TEXT | - -#### 表描述 - -记录 Hiperf 工具采集到的函数符号表和文件名。 - +|---- |---- | +|id |INT | +|file_id |INT | +|serial_id |INT | +|symbol |TEXT | +|path |TEXT | +#### 表描述 +记录Hiperf工具采集到的函数符号表和文件名。 #### 主要字段描述 - -- file_id:文件编号 -- serial_id:一个文件中可能有多个函数,serial_id 表示函数的编号 -- symbol:函数名 +- id: 唯一标识 +- file_id:文件编号 +- serial_id:一个文件中可能有多个函数,serial_id表示函数的编号 +- symbol:函数名 - path:文件路径 -### perf_report 表 - +### perf_report表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| report_type | TEXT | -| report_value | TEXT | - +|---- |---- | +|id |INT | +|report_type |TEXT | +|report_value |TEXT | #### 表描述 - -记录 Hiperf 工具采集数据时的配置信息。包括:抓取的事件类型,抓取数据的命令, 抓数据时指定的进程名称。 - +记录Hiperf工具采集数据时的配置信息。包括:抓取的事件类型,抓取数据的命令, 抓数据时指定的进程名称。 #### 主要字段描述 - -- report_type:数据类型。取值只有三种类型:config_name(事件类型), workload(抓取的进程名), cmdline(抓取命令) +- id: 唯一标识 +- report_type:数据类型。取值只有三种类型:config_name(事件类型), workload(抓取的进程名), cmdline(抓取命令) - report_value:对应类型的取值 -### perf_sample 表 - +### perf_sample表 #### 表结构 - -| Columns Name | SQL TYPE | -| --------------- | -------- | -| id | INT | -| callchain_id | INT | -| timestamp | INT | -| thread_id | INT | -| event_count | INT | -| event_type_id | INT | -| timestamp_trace | INT | -| cpu_id | INT | -| thread_state | TEXT | - -#### 表描述 - -记录 Hiperf 工具的采样信息。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|callchain_id |INT | +|timestamp |INT | +|thread_id |INT | +|event_count |INT | +|event_type_id |INT | +|timestamp_trace |INT | +|cpu_id |INT | +|thread_state |TEXT | +#### 表描述 +记录Hiperf工具的采样信息。 #### 主要字段描述 - -- timestamp:未进行时钟源同步的时间戳 -- thread_id:线程号 -- event_count:采样统计 -- event_type_id:事件类型编号。与 PerfReport 表的 id 字段相关联 -- timestamp_trace:时钟源同步后的时间戳 -- cpu_id:cpu 核编号 -- thread_state:线程状态。采样对应 Sched_Waking 事件时,为 Runing;对应 Sched_Switch 事件时,为 Suspend。其余事件类型,为“-” - -### perf_thread 表 - +- id: 唯一标识 +- callchain_id:关联perf_callchain表callchain_id +- timestamp:未进行时钟源同步的时间戳 +- thread_id:线程号 +- event_count:采样统计 +- event_type_id:事件类型编号。与PerfReport表的id字段相关联 +- timestamp_trace:时钟源同步后的时间戳 +- cpu_id:cpu核编号 +- thread_state:线程状态。采样对应Sched_Waking事件时,为Runing;对应Sched_Switch事件时,为Suspend。其余事件类型,为“-” + +### perf_thread表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| thread_id | INT | -| process_id | INT | -| thread_name | TEXT | - +|---- |---- | +|id |INT | +|thread_id |INT | +|process_id |INT | +|thread_name |TEXT | #### 表描述 - -记录 Hiperf 工具采集到的进程和线程数据。 - +记录Hiperf工具采集到的进程和线程数据。 #### 主要字段描述 - -- thread_id:线程号 -- process_id:进程号 +- id: 唯一标识 +- thread_id:线程号 +- process_id:进程号 - thread_name:线程名 -### process 表 - +### process表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| ipid | INT | -| type | TEXT | -| pid | INT | -| name | TEXT | -| start_ts | INT | -| switch_count | INT | -| thread_count | INT | -| slice_count | INT | -| mem_count | INT | - +|---- |---- | +|id |INT | +|ipid |INT | +|pid |INT | +|name |TEXT | +|start_ts |INT | +|switch_count |INT | +|thread_count |INT | +|slice_count |INT | +|mem_count |INT | #### 表描述 - 记录了进程相关数据。 - #### 关键字段描述 - -- id:进程在数据库重新重新定义的 id,从 0 开始序列增长 -- ipid:TS 内部进程 id -- type:固定取值:process -- pid:进程的真实 id -- name:进程名字 -- start_ts:开始时间 -- switch_count:统计内部有多少个线程有切换 -- thread_count:统计其线程个数 -- slice_count:进程内有多个线程有 slice 数据 +- id:进程在数据库重新重新定义的id,从0开始序列增长 +- ipid:TS内部进程id +- pid:进程的真实id +- name:进程名字 +- start_ts:开始时间 +- switch_count:统计内部有多少个线程有切换 +- thread_count:统计其线程个数 +- slice_count:进程内有多少个线程有slice数据 - mem_count:进程是否有内存数据 -### process_filter 表 - -#### 表结构 - -| Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| name | TEXT | -| ipid | INT | - -#### 表描述 - -将进程 ID 作为 key1,进程的内存,界面刷新,屏幕亮度等信息作为 key2,唯一确定一个 filter_id, filter_id 同时被记录在 filter 表中。 - -#### 主要字段描述 - -- id:进程 id -- type:固定取值:process_filter -- name:进程名 -- ipid:该进程表中的 id 与 process 表中的 id 相关联 - -### process_measure 表 +### process_measure表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| type | TEXT | -| ts | INT | -| value | NUM | -| filter_id | INT | - +|---- |---- | +|type |TEXT | +|ts |INT | +|dur |INT | +|value |NUM | +|filter_id |INT | #### 表描述 - 保存进程的内存,堆栈值等所有计量值信息。 - #### 字段详细描述 +- type: 固定为measure +- ts:事件时间 +- dur: 持续时间 +- value:数值 +- filter_id:对应process_measure_filter表中的id -- ts:事件时间 -- value:数值 -- filter_id:对应 process_measure_filter 表中的 ID - -### process_measure_filter 表 - +### process_measure_filter表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| name | TEXT | -| ipid | INT | - +|---- |---- | +|id |INT | +|name |TEXT | +|ipid |INT | #### 表描述 - -将进程 ID 作为 key1,进程的内存,界面刷新,屏幕亮度等信息作为 key2,唯一确定一个 filter_id, filter_id 同时被记录在 measure_filter 表中。 - +将进程ID作为key1,进程的内存,界面刷新,屏幕亮度等信息作为key2,唯一确定一个filter_id, filter_id同时被记录在measure_filter表中。 #### 字段详细描述 - -- type:固定取值:process_measure_filter -- name:cpu 状态名 +- id: 与measure表的filterId字段相关联 +- name:key名 - ipid:进程内部编号 -### raw 表 - +### raw表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| ts | INT | -| name | TEXT | -| cpu | INT | -| itid | INT | - -#### 表描述 - -记录了系统中的 waking、wakup、cpu_idel、cpu_frequency 数据。 - +|---- |---- | +|id |INT | +|ts |INT | +|name |TEXT | +|cpu |INT | +|itid |INT | +#### 表描述 +记录了系统中的waking、wakup、cpu_idel、cpu_frequency数据。 #### 相关字段描述 +- id: 唯一标识 +- ts:事件时间 +- name:调度名称(取值:cpu_idle,sched_wakeup,sched_waking) +- cpu:事件发生在哪个CPU +- itid:时间对应哪个itid,对应thread表中id -- type:固定字段(raw) -- name:调度名称(取值:cpu_idle,sched_wakeup,sched_waking) -- cpu:事件发生在哪个 CPU -- itid:时间对应哪个 utid - -### sched_slice 表 - +### sched_slice表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| ts | INT | -| dur | INT | -| ts_end | INT | -| cpu | INT | -| itid | INT | -| end_state | TEXT | -| priority | INT | - -#### 表描述 - -此数据结构主要作为 ThreadState 的上下文使用,这张表是 sched_switch 事件的原始记录。 - +|---- |---- | +|id |INT | +|ts |INT | +|dur |INT | +|ts_end |INT | +|cpu |INT | +|itid |INT | +|ipid |INT | +|end_state |TEXT | +|priority |INT | +|arg_setid |INT | +#### 表描述 +此数据结构主要作为ThreadState的上下文使用,这张表是sched_switch事件的原始记录。 #### 主要字段描述 - -- ts:事件发生事件 -- type:固定字段(sched_slice) -- dur:状态持续时长 -- ts_end:状态结束时长 -- cpu:事件发生在哪个 cpu -- itid:事件对应哪个 utid +- id: 唯一标识 +- ts:事件发生时间 +- dur:状态持续时长 +- ts_end:状态结束时长 +- cpu:事件发生在哪个cpu +- itid:进程内部编号 +- ipid:进程内部编号 - end_state:线程的终结状态 +- priority: 线程优先级 +- argset_id:线程状态参数,对应args中argset -### smaps 表 - +### smaps表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------- | -------- | -| id | INT | -| timestamp | INT | -| start_addr | TEXT | -| end_addr | TEXT | -| dirty | INT | -| swapper | INT | -| resident_size | INT | -| pss | INT | -| virtaul_size | INT | -| reside | REAL | -| protection_id | INT | -| path_id | INT | - -#### 表描述 - -记录进程的内存消耗的相关信息采样。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|timestamp |INT | +|start_addr |TEXT | +|end_addr |TEXT | +|dirty |INT | +|swapper |INT | +|resident_size |INT | +|pss |INT | +|virtaul_size |INT | +|reside |REAL | +|protection_id |INT | +|path_id |INT | +|shared_clean |INT | +|shared_dirty |INT | +|private_clean |INT | +|private_dirty |INT | +|swap |INT | +|swap_pss |INT | +|type |INT | +#### 表描述 +记录进程的内存消耗的相关信息采样,读取/proc/${pid}/smaps节点。 #### 主要字段描述 - -- id:状态持续时长 -- timestamp:事件发生事件 -- start_addr:内存段地址的起始位置 -- end_addr:内存段地址的结束位置 -- dirty:其他进程共享的被写的页的大小 + 已被改写的私有页面的大小 -- swapper:存在于交换分区的数据大小 -- resident_size:实际分配的内存大小 -- pss:平摊计算后的实际物理使用内存 -- virtaul_size:虚拟内存空间的大小 -- reside:实际分配的内存大小与虚拟内存空间的大小的比 -- protection_id:内存段的权限 id 与表 data_dict 的 id 字段相关联 -- path_id:如果区域是从文件映射的,则这是文件的名称对应的 id 序号与表 data_dict 的 id 字段相关联 - -### stat 表 - +- id: 唯一标识 +- timestamp:事件发生事件 +- start_addr:内存段地址的起始位置 +- end_addr:内存段地址的结束位置 +- dirty:其他进程共享的被写的页的大小 + 已被改写的私有页面的大小 +- swapper:存在于交换分区的数据大小 +- resident_size:实际分配的内存大小 +- pss:平摊计算后的实际物理使用内存 +- virtaul_size:虚拟内存空间的大小 +- reside:实际分配的内存大小与虚拟内存空间的大小的比 +- protection_id:内存段的权限id与表data_dict的id字段相关联 +- path_id:如果区域是从文件映射的,则这是文件的名称对应的id序号与表data_dict的id字段相关联 +- shared_clean:smaps节点中Shared_clean +- shared_dirty:smaps节点中Shared_dirty +- private_clean:smaps节点中Private_clean +- private_dirty:samps节点中Private_dirty +- swap: smap节点中Swap +- swap_pss:smap节点中SwapPss +- type : 根据type分类信息 + + +### stat表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| event_name | TEXT | -| stat_type | TEXT | -| count | INT | -| serverity | TEXT | -| source | TEXT | - +|---- |---- | +|event_name |TEXT | +|stat_type |TEXT | +|count |INT | +|serverity |TEXT | +|source |TEXT | #### 表描述 - 此结果用来统计数据解析中各类数据的数据条数,数据和合法性,数据的匹配程度(begin-end),数据的损失等,查看此结构对应的表,可对数据源有基本的了解。 - #### 主要字段描述 - -- event_name:数据类型 -- stat_type:数据状态 -- count:数据条数 -- severity:严重级别 +- event_name:数据类型 +- stat_type:数据状态 +- count:数据条数 +- severity:严重级别 - source:数据来源 -### symbols 表 - +### symbols表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| funcname | TEXT | -| addr | INT | - +|---- |---- | +|id |INT | +|funcname |TEXT | +|addr |INT | #### 表描述 - 此表记录了被调用函数与其地址的映射关系。 - #### 相关字段描述 +- id: 唯一标识 +- funcname:系统调用名称 +- addr:系统调用地址 -- funcname:系统调用名称 -- adr:系统调用地址 - -### syscall 表 - +### syscall表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| syscall_num | INT | -| type | TEXT | -| ipid | INT | -| ts | INT | -| ret | INT | - +|---- |---- | +|syscall_num |INT | +|type |TEXT | +|ipid |INT | +|ts |INT | +|ret |INT | #### 表描述 - 记录用户空间函数与内核空间函数相互调用记录。 - #### 相关字段描述 +- syscall_num:系统调用的序号 +- type:固定取值:enter或者exit +- ipid:线程所属的进程ID +- ts:时间戳 +- ret:返回值,在type为exit时有效 -- syscall_num:系统调用的序号 -- type:固定取值:enter 或者 exit -- ipid:线程所属的进程 ID -- ts:时间戳 -- ret:返回值,在 type 为 exit 时有效 - -### sys_event_filter 表 - +### sys_event_filter表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| name | TEXT | - +|---- |---- | +|id |INT | +|type |TEXT | +|name |TEXT | #### 表描述 - -记录所有的 filter。 - +记录所有的filter。 #### 相关字段描述 - -- type:文件类型 +- id: 与measure表的filterid字段关联 +- type:文件类型 - name:文件名 -### sys_mem_measure 表 - +### sys_mem_measure表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| type | TEXT | -| ts | INT | -| value | INT | -| filter_id | INT | - +|---- |---- | +|type |TEXT | +|ts |INT | +|dur |INT | +|value |INT | +|filter_id |INT | #### 表描述 - 记录系统内存与系统虚拟内存。 - #### 相关字段描述 +- type: 固定为measure +- ts:事件时间 +- dur: 持续时间 +- value:数值 +- filter_id:对应filter表中的ID -- ts:事件时间 -- value:数值 -- filter_id:对应 filter 表中的 ID - -### thread 表 - +### thread表 #### 表结构 - -| Columns Name | SQL TYPE | -| -------------- | -------- | -| id | INT | -| itid | INT | -| type | TEXT | -| tid | INT | -| name | TEXT | -| start_ts | INT | -| end_ts | INT | -| ipid | INT | -| is_main_thread | INT | -| switch_count | INT | - -#### 表描述 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|itid |INT | +|tid |INT | +|name |TEXT | +|start_ts |INT | +|end_ts |INT | +|ipid |INT | +|is_main_thread|INT | +|switch_count |INT | +#### 表描述 记录了线程相关数据。 - #### 字段详细描述 - -- id:线程在数据库重新重新定义的 id,从 0 开始序列增长 -- itid:TS 内部线程 id -- type:固定字段(thread) -- tid:线程号 -- name:线程名 -- start_ts:开始时间 -- end_ts:结束时间 -- ipid:线程所属的进程 id, 关联 process 表中的 ID -- is_main_thread:是否主线程,主线程即该线程实际就是进程本身 +- id: 唯一标识 +- itid:TS内部线程id +- tid:线程号 +- name:线程名 +- start_ts:开始时间 +- end_ts:结束时间 +- ipid:线程所属的进程id, 关联process表中的ID +- is_main_thread:是否主线程,主线程即该线程实际就是进程本身 - switch_count:当前线程的切换次数 -### thread_filter 表 - +### thread_state表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| name | TEXT | -| itid | INT | - -#### 表描述 - -将线程 ID 作为 key1,线程的内存,界面刷新,屏幕亮度等信息作为 key2,唯一确定一个 filter_id, filter_id 同时被记录在 filter 表中。 - -#### 主要字段描述 - -- id:线程 id -- type:线程类型 -- name:线程名称 -- itid:该表中的 tid 与 thread 表中的 tid 相关联 - -### thread_state 表 - -#### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| type | TEXT | -| ts | INT | -| dur | INT | -| cpu | INT | -| itid | INT | -| tid | INT | -| pid | INT | -| state | TEXT | - +|---- |---- | +|id |INT | +|ts |INT | +|dur |INT | +|cpu |INT | +|itid |INT | +|tid |INT | +|pid |INT | +|state |TEXT | +|argset_id |INT | #### 表描述 - 记录了线程状态相关的数据。 - -#### 字段详细描述 - -- id:线程状态在数据库中的 id,从 0 开始序列增长 -- ts:该线程状态的起始时间 -- dur:该线程状态的持续时间 -- cpu:该线程在哪个 cpu 上执行(针对 running 状态的线程) -- itid:该状态所属的线程 id, 关联线程表中的 id -- tid:线程号 -- pid:进程号 -- state:线程实际的的状态值 - -``` -'R', Runnable状态 -"S", interruptible sleep -"D", uninterruptible sleep -"D-IO", uninterruptible io -"D-NIO", uninterruptible nio -"Runing", Runing状态 -"T", Task stoped. -"t" Traced. -"X", ExitedDead -"Z", Zombie +#### 字段详细描述 +- id: 唯一标识 +- ts:该线程状态的起始时间 +- dur:该线程状态的持续时间 +- cpu:该线程在哪个cpu上执行(针对running状态的线程) +- itid:该状态所属的线程id, 关联线程表中的id +- tid:线程号 +- pid:进程号 +- state:线程实际的的状态值 +- argset_id:线程状态参数,对应args中arg_set + +``` +'R', Runnable状态 +"S", interruptible sleep +"D", uninterruptible sleep +"D-IO", uninterruptible io +"D-NIO", uninterruptible nio +"Runing", Runing状态 +"T", Task stoped. +"t" Traced. +"X", ExitedDead +"Z", Zombie "P", Parked -"I", Task_Dead -"DK", -"DK-IO", -"DK-NIO", -"TK", TracedKill -"R+", WakeKill -"R+", TaskNew -"R-B", Task runnable binder. +"I", Task_Dead +"DK", +"DK-IO", +"DK-NIO", +"TK", TracedKill +"R+", WakeKill +"R+", TaskNew +"R-B", Task runnable binder. ``` -### clock_snapshot 表 - +### clock_snapshot表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| clock_id | INT | -| ts | INT | -| clock_name | TEXT | - +|---- |---- | +|clock_id |INT | +|ts |INT | +|clock_name |TEXT | #### 表描述 - 时钟号和时间,时钟名的映射表。 - #### 关键字段描述 - -- clock_id:时钟号 -- ts:时钟快照报的时间 +- clock_id:时钟号 +- ts:时钟快照报的时间 - clock_name:时钟号对应的时钟名字 - 时钟快照是用来对齐不同时钟号的时间 - 比如,时钟号 1 的时间 100,和时钟号 2 的时间 200 对齐 - 则时钟号为 2 的 250,转换为时钟号 1 的时间后,为 150 - -### datasource_clockid 表 +时钟快照是用来对齐不同时钟号的时间 +比如,时钟号1的时间100,和时钟号2的时间200对齐 +则时钟号为2 的250,转换为时钟号1的时间后,为150 +### datasource_clockid表 #### 表结构 - -| Columns Name | SQL TYPE | -| ---------------- | -------- | -| data_source_name | TEXT | -| clock_id | INT | - +| Columns Name | SQL TYPE | +|---- |---- | +|data_source_name |TEXT | +|clock_id |INT | #### 表描述 - 数据源和时钟号的映射表。 - #### 关键字段描述 - - data_source_name:数据源的名称,和数据源的插件名保持一致 -- clock_id:时钟号,对应 clock_snapshot 中的时钟号 - 这个表是用来告诉 IDE,不同的事件源的事件,原始时钟号是多少,在数据库中保存的事件,通常是转换为 boottime 后的时间,但有些情况下,IDE 仍然需要知道原始的时钟号是怎样的 - -### frame_slice 表 +- clock_id:时钟号,对应clock_snapshot中的时钟号 +这个表是用来告诉IDE,不同的事件源的事件,原始时钟号是多少,在数据库中保存的事件,通常是转换为boottime后的时间,但有些情况下,IDE仍然需要知道原始的时钟号是怎样的 +### frame_slice表 ### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| ts | INT | -| vsync | INT | -| ipid | INT | -| itid | INT | -| callstack_id | INT | -| dur | INT | -| src | TEXT | -| dst | INT | -| type | INT | -| flag | INT | -| depth | INT | -| frame_no | INT | - -#### 表描述 - -应用的实际渲染帧和期望渲染帧的开始时间,持续时长,以及 RenderService 和 App 之间的关联关系。 - +|---- |---- | +|ts |INT | +|vsync |INT | +|ipid |INT | +|itid |INT | +|callstack_id |INT | +|dur |INT | +|src |TEXT | +|dst |INT | +|type |INT | +|type_desc |TEXT | +|flag |INT | +|depth |INT | +|frame_no |INT| +#### 表描述 +应用的实际渲染帧和期望渲染帧的开始时间,持续时长,以及RenderService和App之间的关联关系。 #### 关键字段描述 - -- callstack_id:该帧数据对应着 callstack 表的调用栈所在的行数 -- dur:该帧渲染时长(当数据不完整时,改行数据为空) -- src:该帧是被哪一帧(该表中对应的行数)触发的,有多个值时,用逗号分割 -- dst:该帧对应的渲染帧是哪一行 -- type: 0 说明该行数据是实际渲染帧, 1 说明该行数据是期望渲染帧 -- flag: 空时,为不完整的数据;0 表示实际渲染帧不卡帧, 1 表示实际渲染帧卡帧(expectEndTime < actualEndTime 为异常), 2 表示数据不需要绘制(没有 frameNum 信息),3 表示 rs 进程与 app 进程起止异常(|expRsStartTime - expUiEndTime| < 1ms 正常,否则异常。这里使用期待帧的时间差做判断,给实际帧打标签) +- ts: 数据上报时间戳 +- vsync: 一个id值,用于标识一组渲染帧的期望和实际数据。 +- ipid:所属的进程内部id, 关联process表中的id +- itid:所属的线程id, 关联thread表中的id +- callstack_id:该帧数据对应着callstack表的调用栈所在的行数 +- dur:该帧渲染时长(当数据不完整时,改行数据为空) +- src:该帧是被哪一帧(该表中对应的行数)触发的,有多个值时,用逗号分割 +- dst:该帧对应的渲染帧是哪一行 +- type: 0 说明该行数据是实际渲染帧, 1 说明该行数据是期望渲染帧 +- type_desc: 当type值为0时,该字段为actural; 当type值为1时,该字段为expect; +- flag: 空时,为不完整的数据;0 表示实际渲染帧不卡帧, 1 表示实际渲染帧卡帧(expectEndTime < actualEndTime为异常), 2 表示数据不需要绘制(没有frameNum信息),3 表示rs进程与app进程起止异常(|expRsStartTime - expUiEndTime| < 1ms 正常,否则异常。这里使用期待帧的时间差做判断,给实际帧打标签) - depth:预留 - frame_no:预留 -### frame_maps 表 - +### frame_maps表 ### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| ts | INT | -| src_row | INT | -| dst_row | INT | - +|---- |---- | +|ts |INT | +|src_row |INT | +|dst_row |INT | #### 表描述 - -该表记录了 app 到 RenderService 的帧的映射关系,同 frame_slice 表中的 src 映射到 dst 的关系。 - +该表记录了app到RenderService的帧的映射关系,同frame_slice表中的src映射到dst的关系。 #### 关键字段描述 +- src_row:frame_slice表中app的帧所在的行 +- dst_row:frame_slice表中RenderService的帧所在的行 -- src_row:frame_slice 表中 app 的帧所在的行 -- dst_row:frame_slice 表中 RenderService 的帧所在的行 - -### gpu_slice 表 - +### gpu_slice表 ### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| frame_row | INT | -| dur | INT | - +|---- |---- | +|frame_row |INT | +|dur |INT | #### 表描述 - -该表记录了每一帧数据在 GPU 上的渲染时长。 - +该表记录了每一帧数据在GPU上的渲染时长。 #### 关键字段描述 +- frame_row:frame_slice表中渲染帧所在的行 +- dur:帧渲染时长 -- frame_row:frame_slice 表中渲染帧所在的行 -- dur:帧渲染时长 - -### trace_range 表 - +### trace_range表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| start_ts | INT | -| end_ts | INT | - +|---- |---- | +|start_ts |INT | +|end_ts |INT | #### 表描述 - 该表记录了解析开始时间以及结束时间。 - #### 关键字段描述 +- start_ts:trace的开始时间,纳秒为单位 +- end_ts:trace的结束时间,纳秒为单位 -- start_ts:trace 的开始时间,纳秒为单位 -- end_ts:trace 的结束时间,纳秒为单位 - -### task_pool 表 - +### task_pool表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------------- | -------- | -| id | INT | -| allocation_task_row | INT | -| execute_task_row | INT | -| return_task_row | INT | -| allocation_itid | INT | -| execute_itid | INT | -| return_itid | INT | -| execute_id | INT | -| priority | INT | -| execute_state | INT | -| return_state | INT | -| timeout_row | INT | - -#### 表描述 - -该表记录了任务池相关数据,与 callstack 表关联。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|allocation_task_row |INT | +|execute_task_row |INT | +|return_task_row |INT | +|allocation_itid |INT | +|execute_itid |INT | +|return_itid |INT | +|task_id |INT | +|priority |INT | +|execute_state |INT | +|return_state |INT | +|timeout_row |INT | +#### 表描述 +该表记录了任务池相关数据,与callstack表关联。 #### 关键字段描述 - -- allocation_task_row:与 callstack 表 id 号相关联 -- execute_task_row:与 callstack 表 id 号相关联 -- return_task_row:与 callstack 表 id 号相关联 -- allocation_itid:任务分发的 itid -- execute_itid:任务执行的 itid -- return_itid:任务返回的 itid -- execute_id:任务执行 id +- id: 唯一标识 +- allocation_task_row:与callstack表id号相关联 +- execute_task_row:与callstack表id号相关联 +- return_task_row:与callstack表id号相关联 +- allocation_itid:任务分发的itid +- execute_itid:任务执行的itid +- return_itid:任务返回的itid +- task_id:任务执行id - priority:任务分发独有的,优先级{HIGH : 0,MEDIUM : 1,LOW : 2} - execute_state:任务执行独有的执行状态{NOT_FOUND : 0,WAITING : 1,RUNNING : 2,CANCELED : 3} - return_state:任务返回独有的任务返回状态[IsCanceled DeserializeFailed Successful Unsuccessful] - timeout_row:任务执行超时时更新此列,将对应的 callstack 表行号存于对应的任务行 -### animation 表 - +### animation表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| input_time | INT | -| start_point | INT | -| end_point | INT | - +|---- |---- | +|id |INT | +|input_time |INT | +|start_point |INT | +|end_point |INT | +|frame_info |TEXT | +|name |TEXT | #### 表描述 - 该表记录动效的响应时延和完成时延等信息。 - #### 关键字段描述 - +- id: 唯一标识 - input_time:输入时间点 - start_point:开始时间点 - end_point:结束时间点 +- frame_info:动效帧信息,格式:`实际帧个数:实际帧帧率` +- name: 当前动效名,eg:`H:APP_LIST_FLING, com.taobao.taobao` -### dynamic_frame 表 - +### dynamic_frame表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| x | INT | -| y | INT | -| width | INT | -| height | INT | -| alpha | TEXT | -| name | INT | -| end_time | INT | - +|---- |---- | +|id |INT | +|x |INT | +|y |INT | +|width |INT | +|height |INT | +|alpha |TEXT | +|name |INT | +|end_time |INT | #### 表描述 - 该表记录动效帧的坐标、分辨率、结束时间等信息。 - #### 关键字段描述 - -- x:坐标 x -- y:坐标 y +- id: 唯一标识 +- x:坐标x +- y:坐标y - width:宽 - height:高 - alpha:透明度 - name:当前动效帧名字 - end_time:结束时间 -### device_info 表 - +### device_info表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------------- | -------- | -| id | INT | -| physical_width | INT | -| physical_height | INT | -| physical_frame_rate | INT | - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|physical_width |INT | +|physical_height |INT | +|physical_frame_rate |INT | #### 表描述 - 该表记录设备分辨率和帧率等信息。 - #### 关键字段描述 - +- id: 唯一标识 - physical_width:设备宽 - physical_height:设备高 - physical_frame_rate:设备帧率 -### device_state 表 - +### device_state表 #### 表结构 - -| Columns Name | SQL TYPE | -| ---------------- | -------- | -| id | INT | -| brightness | INT | -| bt_state | INT | -| location | INT | -| wifi | INT | -| stream_default | INT | -| voice_call | INT | -| music | INT | -| stream_ring | INT | -| media | INT | -| voice_assistant | INT | -| system | INT | -| alarm | INT | -| notification | INT | -| bt_sco | INT | -| enforced_audible | INT | -| stream_dtmf | INT | -| stream_tts | INT | -| accessibility | INT | -| recording | INT | -| stream_all | INT | - -#### 表描述 - -该表记录设备屏幕亮度,蓝牙,位置,wifi,音乐,媒体等信息。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|brightness |INT | +|bt_state |INT | +|location |INT | +|wifi |INT | +|stream_default |INT | +|voice_call |INT | +|music |INT | +|stream_ring |INT | +|media |INT | +|voice_assistant |INT | +|system |INT | +|alarm |INT | +|notification |INT | +|bt_sco |INT | +|enforced_audible |INT | +|stream_dtmf |INT | +|stream_tts |INT | +|accessibility |INT | +|recording |INT | +|stream_all |INT | +#### 表描述 +该表记录设备屏幕亮度,蓝牙,位置,wifi,音乐,媒体等信息。该表目前暂未被使用。 #### 关键字段描述 - +- id: 唯一标识 - brightness:屏幕亮度 - bt_state:蓝牙状态 - location:位置信息 - wifi:无线网络状态 +- stream_default: 取自AudioVolumeInfo message的stream_default字段。 - voice_call:语音通话 - music:音乐播放 +- stream_ring: 取自AudioVolumeInfo message的stream_ring字段。 - media:多媒体 - voice_assistant:语音助手 - system:系统 - alarm:闹钟 - notification:消息通知 - bt_sco:蓝牙语音 +- enforced_audible: 取自AudioVolumeInfo message的enforced_audible字段 +- stream_dtmf: 取自AudioVolumeInfo message的stream_dtmf字段 +- stream_tts: 取自AudioVolumeInfo message的stream_tts字段 - accessibility:访问权限 - recording:录音 +- stream_all: 取自AudioVolumeInfo message的stream_all字段 -### trace_config 表 - +### trace_config表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| trace_source | INT | -| key | INT | -| value | INT | - +|---- |---- | +|id |INT | +|trace_source |INT | +|key |INT | +|value |INT | #### 表描述 - -该表记录 trace 数据源,proto 的事件-plugin 与其 process_name(目前只有 HisysEvent 事件在用)。 - +该表记录trace数据源,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。 #### 关键字段描述 - +- id: 唯一标识 - trace_source:事件源 - key:事件需要关注的信息名 - value:事件需要关注的信息名对应的信息值 -### memory_ashmem 表 - +### memory_ashmem表 #### 表结构 - -| Columns Name | SQL TYPE | -| -------------- | -------- | -| id | INT | -| ts | INT | -| ipid | INT | -| adj | INT | -| fd | INT | -| ashmem_name_id | INT | -| size | INT | -| pss | INT | -| ashmem_id | INT | -| time | INT | -| ref_count | INT | -| purged | INT | -| flag | INT | - -#### 表描述 - -该表记录 trace 数据源,proto 的事件-plugin 与其 process_name(目前只有 HisysEvent 事件在用)。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|ts |INT | +|ipid |INT | +|adj |INT | +|fd |INT | +|ashmem_name_id|INT | +|size |INT | +|pss |INT | +|ashmem_id |INT | +|time |INT | +|ref_count |INT | +|purged |INT | +|flag |INT | +#### 表描述 +该表记录trace数据源/proc/purgeable_ashmem_trigger,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。 #### 关键字段描述 - +- id: 唯一标识 - ts:时间戳 - ipid:内部进程号 +- adj: purgeable_ashmem_trigger中adj - fd:共享内存文件描述符 - ashmem_name_id:共享内存名 - size:共享内存大小 -- pss:PSS 内存大小 -- ashmem_id:共享内存 ID +- pss:PSS内存大小 +- ashmem_id:共享内存ID +- time: purgeable_ashmem_trigger中time - ref_count:引用计数 -- flag:去重标记,0 表示正常,1 表示进程内部重复数据,2 表示进程间重复数据 - -### memory_dma 表 +- purged: purgeable_ashmem_trigger中purged +- flag:去重标记,0表示正常,1表示进程内部重复数据,2表示进程间重复数据 +### memory_dma表 #### 表结构 - -| Columns Name | SQL TYPE | -| ---------------- | -------- | -| id | INT | -| ts | INT | -| ipid | INT | -| fd | INT | -| size | INT | -| ino | INT | -| exp_pid | INT | -| exp_task_comm_id | INT | -| buf_name_id | INT | -| exp_name_id | INT | -| flag | INT | - -#### 表描述 - -该表记录 trace 数据源,proto 的事件-plugin 与其 process_name(目前只有 HisysEvent 事件在用)。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|ts |INT | +|ipid |INT | +|fd |INT | +|size |INT | +|ino |INT | +|exp_pid |INT | +|exp_task_comm_id|INT | +|buf_name_id |INT | +|exp_name_id |INT | +|flag |INT | +#### 表描述 +该表记录trace数据源取/proc/process_dmabuf_info节点,proto的事件-plugin与其process_name(目前只有HisysEvent事件在用)。 #### 关键字段描述 - +- id: 唯一标识 - ts:时间戳 - ipid:内部进程号 -- fd:dma 内存文件描述符 -- size:dma 内存大小 +- fd:dma内存文件描述符 +- size:dma内存大小 +- ino: process_dmabuf_info中ino列 - exp_pid:申请者的进程号 -- buf_name_id:dma 内存名 +- exp_task_comm_id:申请者的的线程名,对应data_dict的id +- buf_name_id:dma内存名 - exp_name_id:申请者进程名 -- flag:去重标记,0 表示正常,1 表示进程内部重复数据,2 表示进程间重复数据 - -### memory_process_gpu 表 +- flag:去重标记,0表示正常,1表示进程内部重复数据,2表示进程间重复数据 +### memory_process_gpu表 #### 表结构 - -| Columns Name | SQL TYPE | -| ------------- | -------- | -| id | INT | -| ts | INT | -| gpu_name_id | INT | -| all_gpu_size | INT | -| addr | TEXT | -| ipid | INT | -| itid | INT | -| used_gpu_size | INT | - -#### 表描述 - -该表记录 trace 数据源,proto 的事件-plugin 与其 process_name(目前只有 HisysEvent 事件在用)。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|ts |INT | +|gpu_name_id |INT | +|all_gpu_size |INT | +|addr |TEXT | +|ipid |INT | +|itid |INT | +|used_gpu_size |INT | +#### 表描述 +该表记录trace数据源读取/proc/gpu_memory节点 #### 关键字段描述 - +- id: 唯一标识 - ts:时间戳 -- gpu_name_id:gpu 内存名称 -- all_gpu_size:进程占用 gpu 总大小 -- addr:gpu 内存地址 +- gpu_name_id:gpu内存名称 +- all_gpu_size:进程占用gpu总大小 +- addr:gpu内存地址 - ipid:内部进程号 - itid:内部线程号 -- used_gpu_size:已使用的 gpu 大小 - -### memory_window_gpu 表 +- used_gpu_size:已使用的gpu大小 +### memory_window_gpu表 #### 表结构 - -| Columns Name | SQL TYPE | -| ---------------- | -------- | -| id | INT | -| ts | INT | -| window_name_id | INT | -| window_id | INT | -| module_name_id | INT | -| category_name_id | INT | -| size | INT | -| count | INT | -| purgeable_size | INT | - -#### 表描述 - -该表记录 trace 数据源,proto 的事件-plugin 与其 process_name(目前只有 HisysEvent 事件在用)。 - +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|ts |INT | +|window_name_id|INT | +|window_id |INT | +|module_name_id|INT | +|category_name_id|INT | +|size |INT | +|count |INT | +|purgeable_size|INT | +|ipid |INT | +#### 表描述 +该表记录trace数据源/sys/kernel/debug/mali0/ctx/$(pidof xxx)_0/mem_profile #### 关键字段描述 - +- id: 唯一标识 - ts:时间戳 - window_name_id:窗口名 -- window_id:窗口 id +- window_id:窗口id - module_name_id:模块名 - category_name_id:目录名 -- size:内存大小 +- size:内存大小 bytes - count:内存申请个数 +- purgeable_size: 取Total memory对应的字节大小 +- ipid: 内部进程号 -### static_initalize 表 - +### static_initalize表 #### 表结构 - | Columns Name | SQL TYPE | -| ------------ | -------- | -| id | INT | -| ipid | INT | -| tid | INT | -| call_id | INT | -| start_time | INT | -| end_time | INT | -| so_name | TEXT | -| depth | INT | - -#### 表描述 - -该表记录了 so 初始化相关数据。 - +|---- |---- | +|id |INT | +|ipid |INT | +|tid |INT | +|call_id |INT | +|start_time |INT | +|end_time |INT | +|so_name |TEXT | +|depth |INT | +#### 表描述 +该表记录了so初始化相关数据。 #### 关键字段描述 - +- id: 唯一标识 - ipid:内部进程号 - tid:内部线程号 -- call_id:调用者的 ID,对应线程表里面的 itid +- call_id:调用者的ID,对应线程表里面的itid - start_time:阶段开始时间 - end_time:阶段结束时间 -- so_name:so 文件名称 +- so_name:so文件名称 - depth:泳道图的深度 +### memory_cpu表 +#### 表结构 +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|ts |INT | +|total_size |INT | +#### 表描述 +该表记录了hidumper抓取的cpu的内存大小的相关数据。 +#### 关键字段描述 +- id: 唯一标识 +- ts:数据上报时间戳 +- total_size:hidumper取到的cpu内存大小 + +### memory_profile表 +#### 表结构 +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|ts |INT | +|channel_id |INT | +|total_size |INT | +#### 表描述 +该表记录了读取/sys/kernel/debug/mali0/ctx/$(pidof xxx)_0/mem_profile节点相关数据。 +#### 关键字段描述 +- id: 唯一标识 +- ts:数据上报时间戳 +- channel_id: 取Channel对应的名称,对应data_dict的id +- total_size:取Total memory对应的字节大小 + +### memory_rs_image表 +#### 表结构 +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|ts |INT | +|ipid |INT | +|mem_size |INT | +|type_id |INT | +|surface_name_id|INT | + +#### 表描述 +该表记录了hidumper抓取的界面的内存大小的相关数据。 +#### 关键字段描述 +- id: 唯一标识 +- ts:数据上报时间戳 +- ipid:内部进程号 +- mem_size: 取hidumper的size列 +- type_id:取hidumper的type列,对于data_dict表中的id +- surface_name_id: 取hidumper的surfaceName列 +### hisys_all_event表 +#### 表结构 +| Columns Name | SQL TYPE | +|---- |---- | +|id |INT | +|domain_id |INT | +|event_name_id |INT | +|ts |INT | +|type |INT | +|time_zone |TEXT | +|pid |INT | +|tid |INT | +|uid |INT | +|level |TEXT | +|tag |TEXT | +|event_id |INT | +|seq |INT | +|info |TEXT | +|contents |TEXT | + +#### 表描述 +该表记录所有hisysevent采集到的原始数据。 +#### 关键字段描述 +- id: 唯一标识一条该表数据 +- domain_id: 对应原始数据中的domain_字段在data_dict表中的索引。 +- event_name_id: 对应原始数据中name_字段在data_dict表中的索引。 +- ts: 对应原始数据中time_(ms)字段转化成ns +- type: 对应原始数据中type_字段 +- time_zone: 对应原始数据中tz_字段 +- pid: 进程号,对应原始数据中的pid_ +- tid: 线程号, 对应原始数据中tid_ +- uid: 对应原始数据中uid_ +- level: 对应原始数据中level_ +- tag: 对应原始数据中tag_ +- event_id: 对应原始数据id_ +- seq: 对应原始数据中seq_ +- info: 对应原数据中info_字段 +- contents: 取源数据中除了以上字段外的其他字段,组成新的json数据。 diff --git a/ide/src/doc/md/quickstart_Application_operation_skills.md b/ide/src/doc/md/quickstart_Application_operation_skills.md index d984f28d5f306545d747abea207f4a73e3c0dbce..f27f4be5b6c423b32ab9b45b95fba2439715ea6f 100644 --- a/ide/src/doc/md/quickstart_Application_operation_skills.md +++ b/ide/src/doc/md/quickstart_Application_operation_skills.md @@ -4,7 +4,7 @@ ### 可导入符号表 -符号表导入适用于所有支持调用栈的 Tab 页,选择一个文件夹,获取文件下及其子文件夹的所有 so 文件,更新数据库中符号数据。文件夹内 so 的格式需要与在设备上的路径一致,例如下图中,选择的文件夹为 import,选择导入的 libnative_hook.z.so,在设备上的路径是/system/lib64/,那么在本地选择的文件夹内也需要保证路径是 import/system/lib64/libnative_hook.z.so。 +符号表导入适用于所有支持调用栈的 Tab 页,创建文件夹,然后将需要导入的so文件放进文件夹内,在导入时,选择该文件夹即可,这样,系统将会获取到该文件夹内所有的so文件,更新数据库中符号数据。文件夹内 so 的格式需要与在设备上的路径一致,例如下图中,选择的文件夹为 import,选择导入的 libnative_hook.z.so,在设备上的路径是/system/lib64/,那么在本地选择的文件夹内也需要保证路径是 import/system/lib64/libnative_hook.z.so。 ![GitHub Logo](../../figures/OperationSkills/Operation_soimport_dir.jpg) 以 NativeMemory 举例,导入 NativeMemory 文件,点击 Call info 的 Tab 页,在搜索框中输入 libnative_hook.z.so,会发现该 so 下的调用栈没有符号化完全。 ![GitHub Logo](../../figures/OperationSkills/Operation_soimport_nativehook.jpg) @@ -61,7 +61,7 @@ 点击![GitHub Logo](../../figures/OperationSkills/Tabskilltempleshow.jpg)图标会以子系统-->部件-->泳道层级去显示: ![GitHub Logo](../../figures/OperationSkills/Tabskillsubsystem.jpg) -点击![GitHub Logo](../../figures/OperationSkills/subsystemupload.jpg)导入模板的 json 配置,点击![GitHub Logo](../../figures/OperationSkills/subsystemdownload.jpg)下载模板的 json 配置,模板的配置文件格式如下: +点击![GitHub Logo](../../figures/OperationSkills/subsystemupload.jpg)导入模板的json配置,点击![GitHub Logo](../../figures/OperationSkills/subsystemdownload.jpg)下载模板的json配置,模板的配置文件格式如下: ![GitHub Logo](../../figures/OperationSkills/subsystemsconfig.jpg) ### 所有进程的用户输入事件归一显示,观察操作事件和对象 @@ -98,3 +98,20 @@ CPU 负载颜色的亮度,负载越大颜色更深,负载越小颜色越浅 在现有的配置界面上,新增一个 Web 版本的 shell 界面,可以支持 shell 命令。 ![GitHub Logo](../../figures/OperationSkills/shellconfig.jpg) + +### 分布式导入功能 + +在界面的如下入口可以导入分布式文件,将两个文件放到文件夹下,以文件夹的形式导入。 +![GitHub Logo](../../figures/OperationSkills/disimport.jpg) +导入分布式文件以后,展示如下: +![GitHub Logo](../../figures/OperationSkills/distributetrace.jpg) +分布式Trace导入完成后,在泳道界面通过点击节点slice数据(分布式),会构建同进程(线程)或跨进程(线程)、单trace或多trace间的折线。折线绘制规则是:同一调用链,相邻数据的spanId相同或者当前spanId和另一个数据的parentSpanId相同时绘制关联关系的折线。
+![GitHub Logo](../../figures/OperationSkills/distributeline.jpg) +分布式slice的信息如下: +![GitHub Logo](../../figures/OperationSkills/distributetab.jpg) +- Name:数据的名称。 +- Depth:数据的在该泳道中的层级。 +- ChainId:调用链的id, 同一条调用链id是相同的。 +- SpanId:当前节点id。 +- ParentSpanId:当前节点的父节点id。 +- ChainFlag:当前节点在调用链中的flag类型,C(Client)、S(Server)。 diff --git a/ide/src/doc/md/quickstart_Frametimeline.md b/ide/src/doc/md/quickstart_Frametimeline.md index d03c5fea7303082a65138e5ae4d3af4314174289..6767203985544d0c73ee107afb9670855de1298b 100644 --- a/ide/src/doc/md/quickstart_Frametimeline.md +++ b/ide/src/doc/md/quickstart_Frametimeline.md @@ -11,7 +11,7 @@ ### Frame timeline 文件的抓取 -点击 Record setting,在 output file path 输入文件名 hiprofiler_dataframe.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 +点击 Record setting,在 output file path 输入文件名 hiprofiler_dataframe.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/Frame/framesetting.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击 Record 抓取,抓取过程中会显示抓取时长。 ![GitHub Logo](../../figures/Frame/frameexcuting.jpg) diff --git a/ide/src/doc/md/quickstart_Import_so.md b/ide/src/doc/md/quickstart_Import_so.md index 51cd5149e9245b02f1d82d6de4f248428b2c84b3..7b50d9a09e5c0bf6b9a7d028ccb94297b34d6f32 100644 --- a/ide/src/doc/md/quickstart_Import_so.md +++ b/ide/src/doc/md/quickstart_Import_so.md @@ -9,32 +9,34 @@ Native Memory 分为三级统计,分别按照内存分配的类型(Alloc/Mmap) ![GitHub Logo](../../figures/ImportSo/Native_import_all.jpg) - Memory Type:事件类型。 -- Existing:框选区域内申请没有释放的大小。 -- #Existing:框选区域内申请没有释放的次数。 +- Existing:框选区间内申请没有释放的大小。 +- #Existing:框选区间内申请没有释放的次数。 - Total Bytes:框选区间内申请的大小。 - #Total:框选区间内申请的次数。 -- Transient:框选区域内释放的大小。 -- #Transient:框选区域内释放的次数。 +- Transient:框选区间内释放的大小。 +- #Transient:框选区间内释放的次数。 - %:各个显示项的占比。 + 以线程去统计。 + ![GitHub Logo](../../figures/ImportSo/Native_import_thread.jpg) 以 lib 库去统计,如图显示的是 AllocEvent 的 so 占比的饼图和 Table 表。 ![GitHub Logo](../../figures/ImportSo/Native_import_so_Existing.jpg) - Library:So名称。 -- Existing:框选区域内申请没有释放的大小。 -- #Existing:框选区域内申请没有释放的次数。 +- Existing:框选区间内申请没有释放的大小。 +- #Existing:框选区间内申请没有释放的次数。 - Total Bytes:框选区间内申请的大小。 - #Total:框选区间内申请的次数。 -- Transient:框选区域内释放的大小。 -- #Transient:框选区域内释放的次数。 +- Transient:框选区间内释放的大小。 +- #Transient:框选区间内释放的次数。 - %:各个显示项的占比。 以函数去统计,如图显示的是 AllocEvent/libmali-bifrost-g52-g2p0-ohos.so 的函数占比的饼图和 Table 表。 ![GitHub Logo](../../figures/ImportSo/Native_import_so_function.jpg) - Function:函数名称。 -- Existing:框选区域内申请没有释放的大小。 -- #Existing:框选区域内申请没有释放的次数。 +- Existing:框选区间内申请没有释放的大小。 +- #Existing:框选区间内申请没有释放的次数。 - Total Bytes:框选区间内申请的大小。 - #Total:框选区间内申请的次数。 -- Transient:框选区域内释放的大小。 -- #Transient:框选区域内释放的次数。 +- Transient:框选区间内释放的大小。 +- #Transient:框选区间内释放的次数。 - %:各个显示项的占比。 ## Hiperf 文件的不同库函数占比 diff --git a/ide/src/doc/md/quickstart_Js_memory.md b/ide/src/doc/md/quickstart_Js_memory.md index d7396c51e7bd9c186eb9a55798352fa28bd926b3..8f90bfff5f25017db296c42c97336e80eb8769f4 100644 --- a/ide/src/doc/md/quickstart_Js_memory.md +++ b/ide/src/doc/md/quickstart_Js_memory.md @@ -16,7 +16,7 @@ Js Memory 是查看程序中存量内存的情况。 - Allocation insteumentation on timeline:分配时间轴显示了插桩的 JavaScript 内存分配随时间变化的情况。 - record stack traces of allocations(extra performance overhead):录制各项分配的堆栈轨迹(会产生额外的性能开销)。 -再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_jsmemory.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 30s。 +再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_jsmemory.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 30s。 ![GitHub Logo](../../figures/Jsmemory/jsmemoryset.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击 Record 抓取,抓取过程中会显示抓取时长。 diff --git a/ide/src/doc/md/quickstart_ability_monitor.html b/ide/src/doc/md/quickstart_ability_monitor.html index 016e5eb908c18a07553fadaf183afe7ca8be4aeb..71a9e91e46d1e88f091b7c890ff851b2b191f2da 100644 --- a/ide/src/doc/md/quickstart_ability_monitor.html +++ b/ide/src/doc/md/quickstart_ability_monitor.html @@ -756,7 +756,7 @@

Ability Monitor 文件的抓取

点击 Record setting,在 output file path 输入文件名 hiprofiler_data_abilitymonitor.htrace,拖动滚动条设置 buffer - size 大小是 64M,抓取时长是 50s。 + size 大小是 64MB,抓取时长是 50s。
GitHub Logo
@@ -764,7 +764,7 @@
GitHub Logo
- 输入 hdc_shell,进入设备,执行命令。 + 输入 hdc shell,进入设备,执行命令。
GitHub Logo
@@ -831,7 +831,7 @@ Disk Bytes Written/Sec: 每秒从内存写入磁盘的字节数。

  • -Disk Read Ops/Sec:读入的字节数。
    +Disk Read Ops/Sec:读取的字节数。
     
  • @@ -926,13 +926,13 @@ Memory:内存值。
  • -Disk Writes(B):磁盘读入的字节数。
    +Disk Writes(Byte):磁盘写入的字节数。
     
  • -Disk Reads(B):磁盘写入的字节数。
    +Disk Reads(Byte):磁盘读取的字节数。
     
    Processes History 的 Tab 页如图: @@ -1025,13 +1025,13 @@ SystemLoad%:CPU在内核空间运行的使用率。 Process:进程号。 - 框选 MemoryTotal,Cached,SwapTota 三个区域的泳道图,会展示 System Memory Summary 的 Tab 页。 + 框选 MemoryTotal,Cached,SwapTotal 三个区域的泳道图,会展示 System Memory Summary 的 Tab 页。
    GitHub Logo
  • -Start Time:采集时间的时间戳。
    +StartTime:采集时间的时间戳。
     
  • @@ -1085,7 +1085,7 @@ SUnreclaim:不可回收的Slab大小。
  • -Swap Toal:交换空间的总大小。
    +SwapTotal:交换空间的总大小。
     
  • @@ -1154,6 +1154,12 @@ CmaTotal:总的连续可用内存。 CmaFree:空闲的可用内存。 +
  • +
    +Zram:Zram的使用大小。
    +
    +
  • 框选 Disk Bytes Read/Sec,Disk Bytes Written/Sec,Disk Read Ops/Sec,Disk Written Ops/Sec 四个区域的泳道图,会展示 System Disk Summary 的 Tab 页。
    @@ -1161,7 +1167,7 @@ CmaFree:空闲的可用内存。
  • -Start Time:采集时间的时间戳。
    +StartTime:采集时间的时间戳。
     
  • @@ -1203,7 +1209,7 @@ Reads In:读入的字节数。
  • -Reads In/sec:每秒读入的字节数。
    +Reads In/sec:每秒读取的字节数。
     
  • @@ -1225,7 +1231,7 @@ Write Out/sec:每秒写入的字节数。
  • -Start Time:采集时间的时间戳。
    +StartTime:采集时间的时间戳。
     
  • diff --git a/ide/src/doc/md/quickstart_ability_monitor.md b/ide/src/doc/md/quickstart_ability_monitor.md index 4a448988bd8cf830e096c68f5d484ab8224ebc9b..e75f7e14b8dfc6fe53db96f09c3b359e2552bd47 100644 --- a/ide/src/doc/md/quickstart_ability_monitor.md +++ b/ide/src/doc/md/quickstart_ability_monitor.md @@ -11,7 +11,7 @@ ### Ability Monitor 文件的抓取 -点击 Record setting,在 output file path 输入文件名 hiprofiler_data_abilitymonitor.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 +点击 Record setting,在 output file path 输入文件名 hiprofiler_data_abilitymonitor.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/AbilityMonitor/abilitysetting.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。 ![GitHub Logo](../../figures/AbilityMonitor/abilitycommand.jpg) @@ -37,7 +37,7 @@ Ability Monitor 展开就可以看到泳道图,包括 CPU,内存,磁盘 IO - SwapTotal: 虚拟内存。 - Disk Bytes Read/Sec:每秒从磁盘读取到内存的字节数。 - Disk Bytes Written/Sec: 每秒从内存写入磁盘的字节数。 -- Disk Read Ops/Sec:读入的字节数。 +- Disk Read Ops/Sec:读取的字节数。 - Disk Written Ops/Sec: 写入的字节数。 - Network Bytes In/Sec:每秒接收的网络数据字节数。 - Network Bytes Out/Sec: 每秒发送的网络数据字节数。 @@ -62,8 +62,8 @@ Live Processes 的 Tab 页如图: - CPU Time:CPU运行时间。 - #Threads:进程的线程数量。 - Memory:内存值。 -- Disk Writes(B):磁盘读入的字节数。 -- Disk Reads(B):磁盘写入的字节数。 +- Disk Writes(Byte):磁盘写入的字节数。 +- Disk Reads(Byte):磁盘读取的字节数。 Processes History 的 Tab 页如图: ![GitHub Logo](../../figures/AbilityMonitor/ProcessesHistory.jpg) - Process ID:进程ID。 @@ -82,9 +82,9 @@ Live Processes 的 Tab 页如图: - UserLoad%:CPU在用户态空间运行的使用率。 - SystemLoad%:CPU在内核空间运行的使用率。 - Process:进程号。 - 框选 MemoryTotal,Cached,SwapTota 三个区域的泳道图,会展示 System Memory Summary 的 Tab 页。 + 框选 MemoryTotal,Cached,SwapTotal 三个区域的泳道图,会展示 System Memory Summary 的 Tab 页。 ![GitHub Logo](../../figures/AbilityMonitor/memorytab.jpg) -- Start Time:采集时间的时间戳。 +- StartTime:采集时间的时间戳。 - Duration:前一次采集到本次采集的时间差。 - MemTotal:总内存大小。 - MemFree:空闲内存大小。 @@ -93,7 +93,7 @@ Live Processes 的 Tab 页如图: - Shmem:已被分配的共享内存大小。 - Slab:内核数据缓存大小。 - SUnreclaim:不可回收的Slab大小。 -- Swap Toal:交换空间的总大小。 +- SwapTotal:交换空间的总大小。 - SwapFree:未被使用交换空间的大小。 - Mapped:设备和文件等映射的大小。 - VmallocUsed:已被使用的虚拟内存大小。 @@ -105,21 +105,22 @@ Live Processes 的 Tab 页如图: - VmallocTotal:可以vmalloc虚拟内存大小。 - CmaTotal:总的连续可用内存。 - CmaFree:空闲的可用内存。 +- Zram:Zram的使用大小。 框选 Disk Bytes Read/Sec,Disk Bytes Written/Sec,Disk Read Ops/Sec,Disk Written Ops/Sec 四个区域的泳道图,会展示 System Disk Summary 的 Tab 页。 ![GitHub Logo](../../figures/AbilityMonitor/disktab.jpg) -- Start Time:采集时间的时间戳。 +- StartTime:采集时间的时间戳。 - Duration:前一次采集到本次采集的时间差。 - Data Read:从磁盘读取到内存的总字节数。 - Data Read/sec:每秒从磁盘读取到内存的字节数。 - Data Write:从内存写入磁盘的总字节数。 - Data Write/sec:每秒从内存写入磁盘的字节数。 - Reads In:读入的字节数。 -- Reads In/sec:每秒读入的字节数。 +- Reads In/sec:每秒读取的字节数。 - Write Out:写入的字节数。 - Write Out/sec:每秒写入的字节数。 框选 Network Bytes In/Sec,Network Bytes Out/Sec,Network Packets In/Sec,Network Packets Out/Sec 四个区域的泳道图,会展示 System Network Summary 的 Tab 页。 ![GitHub Logo](../../figures/AbilityMonitor/network.jpg) -- Start Time:采集时间的时间戳。 +- StartTime:采集时间的时间戳。 - Duration:前一次采集到本次采集的时间差。 - Data Received:接收的网络数据总字节数。 - Data Received/sec:每秒接收的网络数据字节数。 diff --git a/ide/src/doc/md/quickstart_bio.md b/ide/src/doc/md/quickstart_bio.md index ac305257e9bb82e196dd2cd91d53f0e4e1c67e1d..3d57e609cdf90a853ffcb8dde598e0945a1d5522 100644 --- a/ide/src/doc/md/quickstart_bio.md +++ b/ide/src/doc/md/quickstart_bio.md @@ -12,9 +12,10 @@ - Start BIO Latency Record:配置项的总开关。 - Process:默认配置的是整个系统的,也可选择单进程抓取。 - Max Unwind Level:配置抓取调用栈的最大深度。 - 再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_bio.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 + 再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_bio.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/Bio/Biorecord.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击 Record 抓取,抓取过程中会显示抓取时长。 + ![GitHub Logo](../../figures/Bio/hdc.jpg) ![GitHub Logo](../../figures/Bio/Bioexcuting.jpg) ### Bio 展示说明 @@ -48,15 +49,16 @@ Disk I/O Tier Statistics 的 Tab 页如图: Disk I/O Latency CallTree 的 Tab 页如图: ![GitHub Logo](../../figures/Bio/BioCalltree.jpg) - Call Stack:为经过符号解析后的Callstack,并且给出动态链接库或者进程名的信息。 -- Local:为该调用方法自身占用的CPU时间。 -- Weight:调用方法的执行占比。 +- Local:为该调用方法自身占用的 CPU 时间。 +- Weight:为该调用方法占用的 CPU 时间。 +- %:为该调用方法占用的 CPU 时间占比。 Trace Completion Times 的 Tab 页如图: ![GitHub Logo](../../figures/Bio/Biotimes.jpg) - Start:事件的开始时间。 - Total Latency:事件的延迟时间。 - Process:进程名(pid)。 - Thread:线程名(tid)。 -- Latency per 4KB:原始数据里没有,每4k数据的延迟时间,需要根据延迟的size跟延迟的时间去计算。 +- Latency per 4KB:每4k数据的延迟时间。 - Opration:事件类型。 - Bytes:延迟的数据量。 - Path:操作的文件路径。 @@ -66,11 +68,13 @@ Disk I/O Tier Statistics 的 Tab 页如图: ### Bio 支持多种 Options 展示风格 -点击 Disk I/O Latency CallTree 的 Tab 页底部的 Options,会有两个 CheckBox 复选框。 +点击 Disk I/O Latency CallTree 的 Tab 页底部的 Options,会有四个 CheckBox 复选框。 ![GitHub Logo](../../figures/Bio/BioOptions.jpg) - Invert:反向输出调用树。 -- Hide System so:隐藏系统库文件 。 +- Hide System so:隐藏系统库文件。 +- Hide Event:隐藏事件。 +- Hide Thread:隐藏线程。 ### Bio 支持过滤调用栈调用次数的展示风格 @@ -83,8 +87,8 @@ Disk I/O Tier Statistics 的 Tab 页如图: - 裁剪 Callstack,点击 Callstack 上一个节点符号,再点击底部 Symbol Filter 按钮,则该符号自动被裁剪掉,同时将该节点往下所有的 Callstack 内容裁剪掉。 -- 裁剪 Library,点击 Library Filter 按钮,则该库文件符号下所有的子节点也被裁剪。 -- 点击 Reset 按钮,将恢复选中的裁剪内容。 +- 裁剪 Library,点击 Library 上一个节点符号,再点击底部 Library Filter 按钮,则该符号自动被裁剪掉,同时将该节点往下所有的 Callstack 内容裁剪掉。 +- 先选中要恢复的内容,再点击 Reset 按钮,将恢复选中的裁剪内容。 ### Bio 功能的调用栈 Group 展示支持按条件过滤 @@ -105,7 +109,7 @@ Disk I/O Tier Statistics 的 Tab 页如图: 点击 Disk I/O Latency CallTree 左下角的柱状图的图标,会切换到火焰图页面。 ![GitHub Logo](../../figures/Bio/Bioflame.jpg) -进入到火焰图页面,火焰图的展示跟 Callinfo 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称和 Duration 时长。 +进入到火焰图页面,火焰图的展示跟 Callinfo 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称、所属 Lib 库、函数地址、耗时及其占比。 ![GitHub Logo](../../figures/Bio/Bioflameshow.jpg) -鼠标左键火焰图,会进入下一级界面,右键回到上一级。 +鼠标左键火焰图,会进入下一级界面,左键上级则返回上一级界面。 ![GitHub Logo](../../figures/Bio/Bioflamelevel.jpg) diff --git a/ide/src/doc/md/quickstart_device_record.md b/ide/src/doc/md/quickstart_device_record.md index 1ddd0f149e436b0613937e94e64dff8de08cbfb0..cf393ad08759e70d350024a0c52366acfde13761 100644 --- a/ide/src/doc/md/quickstart_device_record.md +++ b/ide/src/doc/md/quickstart_device_record.md @@ -20,9 +20,9 @@ ## 命令行的生成和 trace 文件的抓取 点击 Probes config,如选择抓取 Scheduling details。 -![GitHub Logo](../../figures/hiprofilercmd/Scheduling.jpg) -再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_example.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 -![GitHub Logo](../../figures/hiprofilercmd/tracesetting.jpg) +![GitHub Logo](../../figures/hiprofilercmd/Scheduling.png) +再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_example.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 +![GitHub Logo](../../figures/hiprofilercmd/tracesetting.png) 点击 Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。 ![GitHub Logo](../../figures/hiprofilercmd/command.jpg) 命令参数说明: @@ -35,7 +35,7 @@ - trace_period_ms: ftrace 插件读取内核缓冲区数据的间隔时间(ms)。 - hitrace_time:hitrace 命令行抓取时间,与 hiprofiler_cmd 下发的-t 配置联动。 -输入 hdc_std shell,进入设备,执行命令。 +输入 hdc shell,进入设备,执行命令。 ![GitHub Logo](../../figures/hiprofilercmd/excutecommand.jpg) 执行完成后,命令行会给出提示。 diff --git a/ide/src/doc/md/quickstart_filesystem.md b/ide/src/doc/md/quickstart_filesystem.md index 72fd4f6b220fe3b227a935dab20a60e92c97232d..afdb13df525f26d8345bc4933c5ec3a935c2f9f2 100644 --- a/ide/src/doc/md/quickstart_filesystem.md +++ b/ide/src/doc/md/quickstart_filesystem.md @@ -13,11 +13,11 @@ FileSystem 分析文件系统的信息和活动,比如读和写操作等。 - Process:默认配置的是整个系统的,也可选择单进程抓取。 - Max Unwind Level:配置抓取调用栈的最大深度。 -再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_filesystem.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 +再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_filesystem.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/FileSystem/filesystemrecord.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。 ![GitHub Logo](../../figures/FileSystem/FileSystemcommand.jpg) -输入 hdc_std shell,进入设备,执行命令。 +输入 hdc shell,进入设备,执行命令。 ![GitHub Logo](../../figures/FileSystem/FileSystemexcutecommand.jpg) 执行完成后,进入指定目录查看,在/data/local/tmp 下就会生成 trace 文件。 ![GitHub Logo](../../figures/FileSystem/FileSystemfile.jpg) @@ -58,8 +58,9 @@ FileSystem statistics 的 Tab 页如图: FileSystem CallTree 的 Tab 页如图: ![GitHub Logo](../../figures/FileSystem/FileSystemCalltree.jpg) - Call Stack:为经过符号解析后的Callstack,并且给出动态链接库或者进程名的信息。 -- Local:为该调用方法自身占用的CPU时间。 -- Weight:调用方法的执行占比。 +- Local:为该调用方法自身占用的 CPU 时间。 +- Weight:为该调用方法占用的 CPU 时间。 +- %:为该调用方法占用的 CPU 时间占比。 FileSystem Events 的 Tab 页如图: ![GitHub Logo](../../figures/FileSystem/FileSystemevents.jpg) - Start: 起始时间。 @@ -67,7 +68,7 @@ FileSystem statistics 的 Tab 页如图: - Process:进程名。 - Thread:线程名。 - Type:操作类型。 -- File Descriptor:fd。 +- File Descriptor:文件描述符。 - File Path:文件路径。 - First Argument:系统调用的第一个参数。 - Second Argument:系统调用的第二个参数。 @@ -82,7 +83,7 @@ FileSystem statistics 的 Tab 页如图: - Duration:时长。 - Process:进程名。 - Type:操作类型。 -- File Descriptor:fd。 +- File Descriptor:文件描述符。 - Path:文件路径。 - Backtrace:调用栈顶部函数,并显示调用栈深度。 File Descriptor Time Slice 的 Tab 页如图: @@ -90,7 +91,7 @@ FileSystem statistics 的 Tab 页如图: - Open Time: 打开的起始时间。 - Open Duration:打开的时长。 - Process:进程名。 -- File Descriptor:fd。 +- File Descriptor:文件描述符。 - Path:文件路径。 - Backtrace:调用栈顶部函数,并显示调用栈深度。 @@ -115,7 +116,7 @@ FileSystem statistics 的 Tab 页如图: - 裁剪 Callstack,点击 Callstack 上一个节点符号,再点击底部 Symbol Filter 按钮,则该符号自动被裁剪掉,同时将该节点往下所有的 Callstack 内容裁剪掉。 -- 裁剪 Library,点击 Library Filter 按钮,则该库文件符号下所有的子节点也被裁剪。 +- 裁剪 Library,点击 Library 上一个节点符号,再点击底部 Library Filter 按钮,则该符号自动被裁剪掉,同时将该节点往下所有的 Callstack 内容裁剪掉。 - 点击 Reset 按钮,将恢复选中的裁剪内容。 ### FileSystem 功能的调用栈 Group 展示支持按条件过滤 @@ -137,7 +138,7 @@ FileSystem statistics 的 Tab 页如图: 点击 FileSystem CallTree 左下角的柱状图的图标,会切换到火焰图页面。 ![GitHub Logo](../../figures/FileSystem/FileSystemflame.jpg) -进入到火焰图页面,火焰图的展示跟 Callinfo 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称和 Duration 时长。 +进入到火焰图页面,火焰图的展示跟 Callinfo 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称、所属Lib库、函数地址、耗时及其占比。 ![GitHub Logo](../../figures/FileSystem/FileSystemflameshow.jpg) -鼠标左键火焰图,会进入下一级界面,右键回到上一级。 +鼠标左键火焰图,会进入下一级界面,左键上级则返回上一级界面。 ![GitHub Logo](../../figures/FileSystem/FileSystemflamelevel.jpg) diff --git a/ide/src/doc/md/quickstart_hiperf.md b/ide/src/doc/md/quickstart_hiperf.md index 224570c6819bd4624ab744906fca5227cc6c1b4a..9423bf2f452fe4a26fb1fa5a23cbaff1c2cc2318 100644 --- a/ide/src/doc/md/quickstart_hiperf.md +++ b/ide/src/doc/md/quickstart_hiperf.md @@ -1,12 +1,13 @@ -# HiPerf 的抓取和展示说明 +# Hiperf 的抓取和展示说明 -HiPerf 工具是对系统性能数据进行采样记录,并将采样数据保存为文件,进行读取,展示分析。 +Hiperf 工具是对系统性能数据进行采样记录,并将采样数据保存为文件,进行读取,展示分析。 -## HiPerf 的抓取 +## Hiperf 的抓取 -### HiPerf 抓取配置参数 +### Hiperf 抓取配置参数 ![GitHub Logo](../../figures/perf/perfsetting.jpg) + 配置项说明: - Start Hiperf Sampling:配置项的总开关。 @@ -14,7 +15,7 @@ HiPerf 工具是对系统性能数据进行采样记录,并将采样数据保 - Frequency:配置抓取的频率。 - Call Stack:配置抓取的堆栈类型。 - Advance Options:更多的抓取配置项。 - 再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_perf.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 + 再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_perf.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/perf/perfset.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。 ![GitHub Logo](../../figures/perf/perfcommand.jpg) @@ -23,7 +24,7 @@ HiPerf 工具是对系统性能数据进行采样记录,并将采样数据保 执行完成后,进入指定目录查看,在/data/local/tmp 下就会生成 trace 文件。 ![GitHub Logo](../../figures/perf/perffile.jpg) -### HiPerf 展示说明 +### Hiperf 展示说明 将抓取的 trace 文件导入 smartperf 界面查看。 ![GitHub Logo](../../figures/perf/summary.jpg) @@ -32,27 +33,27 @@ HiPerf 工具是对系统性能数据进行采样记录,并将采样数据保 - 红色区域:泳道图。 - 绿色区域:详细信息(Perf Profile和Sample List)。 -- 黄色区域:辅助信息(Callstack)。 +- 黄色区域:辅助信息(Call Stack)。 -### HiPerf 泳道图展示 +### Hiperf 泳道图展示 -Perf 泳道图展示按照 CPU 使用量和线程和进程展示,鼠标移动到泳道图上,悬浮框会显示 CPU 的使用量。 +Hiperf 泳道图展示按照 CPU 使用量、进程和线程展示,鼠标移动到泳道图上,悬浮框会显示 CPU 的使用量。 ![GitHub Logo](../../figures/perf/chart.jpg) 按住 w 键放大界面,泳道图会出现 P 的标志,鼠标移动到 P 图标上,悬浮框会显示每个 callstack 和调用的深度如下图。 ![GitHub Logo](../../figures/perf/callstack.jpg) -Perf 泳道图上浅色表示无效调用栈的采样点,抓取时由于设备上的对应的 so 无符号信息,函数跟地址都无法获取到,固该采样点在 tab 页中不做显示。 +Hiperf 泳道图上浅色表示无效调用栈的采样点,抓取时由于设备上的对应的 so 无符号信息,函数跟地址都无法获取到,固该采样点在 tab 页中不做显示。 ![GitHub Logo](../../figures/perf/perf_nocallstack.jpg) -### HiPerf 泳道图的框选功能 +### Hiperf 泳道图的框选功能 可以对 CPU 使用量的线程和进程区数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有四个 tab 页。 Perf Profile 的 Tab 页如图: ![GitHub Logo](../../figures/perf/PerfProfile.jpg) - Call Stack:为经过符号解析后的Callstack,并且给出动态链接库或者进程名的信息。 -- Local:为该调用方法自身占用的CPU时间。 -- Sample Count:采样数量。 -- Event Count:事件数量。 +- Local:为该调用方法自身占用的 CPU 时间。 +- Sample Count:采样次数。 +- Event Count:事件次数。 Sample List 的 Tab 页如图: ![GitHub Logo](../../figures/perf/Samplelist.jpg) - Sample Time:采样的时间戳信息。 @@ -62,7 +63,7 @@ Perf Profile 的 Tab 页如图: - State:运行状态。 - Backtrace:栈顶的调用栈名称。 -### HiPerf 支持多种 Options 展示风格 +### Hiperf 支持多种 Options 展示风格 点击 Perf Profile 的 Tab 页底部的 Options,会有四个 CheckBox 复选框。 ![GitHub Logo](../../figures/perf/Options.jpg) @@ -72,53 +73,53 @@ Perf Profile 的 Tab 页如图: - Hide Thread:隐藏线程。 - Hide Thread State:隐藏线程状态。 -### HiPerf 支持过滤调用栈调用次数的展示风格 +### Hiperf 支持过滤调用栈调用次数的展示风格 点击 Perf Profile 的 Tab 页底部的 Sample Count Filter,可以填上区间值。过滤出符合该区间值调用次数的调用栈信息。 ![GitHub Logo](../../figures/perf/samplecounter.jpg) -### HiPerf 功能的调用栈 Group 展示-数据分析支持剪裁功能 +### Hiperf 功能的调用栈 Group 展示-数据分析支持剪裁功能 ![GitHub Logo](../../figures/perf/datamining.jpg) - 裁剪 Callstack,点击 Callstack 上一个节点符号,再点击底部 Symbol Filter 按钮,则该符号自动被裁剪掉,同时将该节点往下所有的 Callstack 内容裁剪掉。 -- 裁剪 Library,点击 Library Filter 按钮,则该库文件符号下所有的子节点也被裁剪。 +- 裁剪 Library,点击 Library 上一个节点符号,再点击底部 Library Filter 按钮,则该符号自动被裁剪掉,同时将该节点往下所有的 Callstack 内容裁剪掉。 - 点击 Reset 按钮,将恢复选中的裁剪内容。 -### HiPerf 功能的调用栈 Group 展示支持按条件过滤 +### Hiperf 功能的调用栈 Group 展示支持按条件过滤 在 Input Filter 输入关键字,会显示出带有该关键字的展示信息。 ![GitHub Logo](../../figures/perf/inputfilter.jpg) -### HiPerf 辅助信息区展示调用栈 +### Hiperf 辅助信息区展示调用栈 当在详细信息区选择一个符号时,将展示与该符号相关的完整的调用栈。对上展示到根节点,对下则展示 CPU 占用率最大的调用栈。调用栈右侧有 Sliding bar 可以滚动。 如下图的 Heaviest Stack Trace: ![GitHub Logo](../../figures/perf/heaviesttrace1.jpg) -### HiPerf 的火焰图功能 +### Hiperf 的火焰图功能 点击 Perf Profile 左下角的柱状图的图标,会切换到火焰图页面。 ![GitHub Logo](../../figures/perf/flame.jpg) -进入到火焰图页面,火焰图的展示跟 Callinfo 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称,lib,addr,Count,%in current thread,%in current process,&in all process。 +进入到火焰图页面,火焰图的展示跟 Perf Profile的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称,Lib,Addr,Count,% in current Thread,% in current Process,% in all Process。 ![GitHub Logo](../../figures/perf/flameshow.jpg) -### HiPerf 的 show event count 功能 +### Hiperf 的 show event count 功能 在 Hiperf 的父级泳道图上增加筛选功能,可在 Cpu Usage 和各种 event type 之间选择,切换选择之后即可将 Hiperf 下级各个泳道图数据更新,悬浮框可以根据选择的事件名显示对应的 event count。 ![GitHub Logo](../../figures/perf/showevent.jpg) -### HiPerf 的 CPU/进程级/线程级泳道支持时序火焰图, 按照每个时间点的调用栈显示功能 +### Hiperf 的 CPU/进程级/线程级泳道支持时序火焰图, 按照每个时间点的调用栈显示功能 -根据 Hiperf 父级泳道图所筛选的类型,来显示各个 CPU 或者线程的时序火焰图,用户可根据自己的需要,点击泳道图旁边的齿轮标志筛选出某个 cpu 或者线程的火焰时序图数据。 + 根据 Hiperf 父级泳道图所筛选的类型,来显示各个 CPU 或者线程的时序火焰图,用户可根据自己的需要,点击泳道图旁边的齿轮标志筛选出某个 cpu 或者线程的时序火焰图数据。 ![GitHub Logo](../../figures/perf/cpuandthreadrow.jpg) -### HiPerf 的调用栈分析饼图/火焰图支持按进程、线程粒度可选, 饼图和火焰图可以跳转功能 +### Hiperf 的调用栈分析饼图/火焰图支持按进程、线程粒度可选, 饼图可以跳转到火焰图功能 -HiPerf 分为 process、thread、library、function 四层,调用栈均可在每层的表格上鼠标点击右键跳转到对应的火焰图 Tab 页。火焰图上方标题显示是由哪一层跳转而来,点击关闭图标火焰图重置为当前框选范围的所有数据。 +Hiperf 分为 process、thread、library、function 四层,调用栈均可在每层的表格上鼠标点击右键跳转到对应的火焰图 Tab 页。火焰图上方标题显示是由哪一层跳转而来,点击关闭图标火焰图重置为当前框选范围的所有数据。 ![GitHub Logo](../../figures/perf/perf_analysisjump.jpg) 如上图,右键点击 hiprofiler_plugins 可以跳转到下图 ![GitHub Logo](../../figures/perf/perf_jumpframe.jpg) -筛选面板新增 Hide Thread、Hide Thread State 筛选选项,Hiperf 可隐藏线程和状态。 +筛选面板新增 Hide Thread、Hide Thread State 筛选选项,Hiperf 可隐藏线程和线程状态。 ![GitHub Logo](../../figures/perf/perf_hide.jpg) diff --git a/ide/src/doc/md/quickstart_hisystemevent.md b/ide/src/doc/md/quickstart_hisystemevent.md index cd3269ead56c7acbe68068fc0fa895391731ecd4..fb8229ffa96440c9c2e01002146d30e0e2f21716 100644 --- a/ide/src/doc/md/quickstart_hisystemevent.md +++ b/ide/src/doc/md/quickstart_hisystemevent.md @@ -8,11 +8,11 @@ HiSystemEvent 应用功耗模块主要是展示应用的各个子类别功耗占 打开 Start Hisystem Event Tracker Record 开关抓取 HiSystemEvent 数据。 ![GitHub Logo](../../figures/HiSystemEvent/hisyseventsetting.jpg) -再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_hisystemevent.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 +再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_hisystemevent.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/HiSystemEvent/hisystemeventrecord.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。 ![GitHub Logo](../../figures/HiSystemEvent/hisystemcommand.jpg) -输入 hdc_std shell,进入设备,执行上述生成的命令。 +输入 hdc shell,进入设备,执行上述生成的命令。 ![GitHub Logo](../../figures/HiSystemEvent/hisystemeventemexcute.jpg) 执行完成后,进入指定目录查看,在/data/local/tmp 下就会生成 trace 文件。 ![GitHub Logo](../../figures/HiSystemEvent/hisystemeventfile.jpg) @@ -26,7 +26,7 @@ HiSystemEvent 应用功耗模块主要是展示应用的各个子类别功耗占 泳道图说明: - Anomaly Event泳道: 显示系统异常和应用异常的ToolTip。 -- System Event泳道: 以条状图显示,红色代表后台任务(WORKSCHEDULER),黄色代表应用锁(POWER),蓝色代表GPS定位(LOCATION)。 +- System Event泳道: 以条状图显示,红色代表后台任务(WORKSCHEDULER),黄色代表应用锁(POWER_RUNNINGLOCK),蓝色代表GPS定位(LOCATION)。 - Power泳道:应用各个子类的功耗柱状图、折线图以及应用各个子类绘制的图例,鼠标的悬浮可以显示出各个子类功耗的具体值。 - Brightness Nit泳道:鼠标悬浮可以显示屏幕亮度值。 - Wifi Event Received泳道:鼠标悬浮可以显示WiFi信号强度值。 @@ -80,7 +80,7 @@ System Details 的 Tab 页如图: - Background Count:应用后台扫描次数。 - Screen On Count:应用亮屏扫描次数。 - Screen Off Count:应用灭屏扫描次数。 -- Background Time(ms):灭屏使用功耗值。 +- Background Time(ms):应用后台使用时长。 - Screen On Time(ms):应用亮屏使用时长。 - Screen Off Time(ms):应用灭屏使用时长。 - Energy(mAs):功耗值。 diff --git a/ide/src/doc/md/quickstart_keywords_shortcuts.md b/ide/src/doc/md/quickstart_keywords_shortcuts.md index c8b2661e33ab64a5df8b8571b104c99164ad0c0a..258fa3fae694366b93d374f7ec58a87e69695b28 100644 --- a/ide/src/doc/md/quickstart_keywords_shortcuts.md +++ b/ide/src/doc/md/quickstart_keywords_shortcuts.md @@ -8,8 +8,8 @@ - a/d:界面的左/右移动。 - m:对指定区域进行临时标记。 - Shift+m:对指定区域进行永久标记。 -- ctrl+[/]:对 Shift+m 的的标尺进行左右跳转。 -- ctrl+,/.:对旗子标志进行左右跳转。 +- ctrl+[ / ctrl+]:对Shift+m的的标尺进行左/右跳转。 +- ctrl+, / ctrl+.:对旗子标志进行左/右跳转。 ### 鼠标和键盘的操作 diff --git a/ide/src/doc/md/quickstart_native_memory.md b/ide/src/doc/md/quickstart_native_memory.md index 6727ef5fcbcc947d5950341a981e2b3060178b39..a17e239552b8e9d10a3bb808934b552343919354 100644 --- a/ide/src/doc/md/quickstart_native_memory.md +++ b/ide/src/doc/md/quickstart_native_memory.md @@ -6,21 +6,30 @@ Native Memory 是查看内存的分配和释放等情况。 ### Native Memory 抓取配置参数 -![GitHub Logo](../../figures/NativeMemory/nativememorysetting.jpg) +![GitHub Logo](../../figures/NativeMemory/nativememorysetting.png) 配置参数说明: -- ProcessId or ProcessName:设置抓取的进程 ID 或者进程名,此处以输入 com.ohos.mms 进程名为例。 -- Max unwind level:抓取的栈的最大深度。 -- Shared Memory Size:native_daemon 和 native_hook 进程之间存储数据的共享内存大小。 -- Filter Memory Size:只抓取大于该 size 的 malloc 数据(free 不受影响)。 -- Use Fp Unwind:Fp 回栈。 -- Use Record Accurately:不过滤数据,上报全量的。 -- Use Offline Symbolization:离线符号化。 +- Process:设置抓取的进程 ID 或者进程名,此处以输入 com.ohos.mms 进程名为例。 +- Use Fp Unwind:是否Fp 回栈。 - Use Record Statistics:统计数据上报时间间隔设置。 +- Use Record Js Stack:是否抓js栈。 + +点击Advance Options进入高级配置界面 +![GitHub Logo](../../figures/NativeMemory/nativememoryAdvoption.png) - Use Startup Mode: 抓取应用启动阶段的内存(默认是关闭,需要抓取应用启阶段内存可开启)。 +- Use Response Lib Mode:nativememory抓取支持So能力。 +- Use Record Accurately:不过滤数据,上报全量的。 +- Use Offline Symbolization:离线符号化。 +- Sample Interval:采样间隔。 +- Shared Memory Size:native_daemon 和 native_hook 进程之间存储数据的共享内存大小。 +- Max unwind level:抓取的栈的最大深度。 +- Max Js Stack Depth:抓取的Js栈的最大深度。 +- Filter Memory Size:只抓取大于该 size 的 malloc 数据(free 不受影响)。 +- Filter Napi Name:fp模式过滤某个napi调用。 + -再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_nativememory.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 -![GitHub Logo](../../figures/NativeMemory/nativememoryset.jpg) +再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_nativememory.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 +![GitHub Logo](../../figures/NativeMemory/nativememoryset.png) 点击 Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。 ![GitHub Logo](../../figures/NativeMemory/nativememorycommand.jpg) @@ -28,7 +37,7 @@ Native Memory 是查看内存的分配和释放等情况。 命令行参数说明: - save_file:是否将 hook 数据保存成文件,不上报 protobuf 形式数据给 hiprofilerd。 -- filter_size:过滤 malloc 的大小,最小值是 0,默认值是 4096Byte。 +- filter_size:过滤 malloc 的大小,最小值是 0,默认值是 4096byte。 - smb_pages:nativedeamon 与 libnativehook 间的共享内存大小。 - max_stack_depth:最多回栈的层数,也就是抓取的栈的最大深度。 - process_name:抓取的应用进程名。 @@ -40,73 +49,76 @@ Native Memory 是查看内存的分配和释放等情况。 - statistics_interval: 统计模式下上报数据的时间间隔。 - startup_mode: 是否需要抓取应用启动阶段内存。 -输入 hdc_std shell,进入设备,执行命令。 +输入 hdc shell,进入设备,执行命令。 ![GitHub Logo](../../figures/NativeMemory/nativeexcutecommand.jpg) 执行完成后,进入指定目录查看,在/data/local/tmp 下就会生成 trace 文件。 ![GitHub Logo](../../figures/NativeMemory/naitvememoryfile.jpg) ## Native Memory 展示说明 -将抓取的 nativememory 文件导入到 smartperf 工具中查看,查看内存的分配和释放等情况。 +将抓取的 Native Memory 文件导入到 smartperf 工具中查看,查看内存的分配和释放等情况。 ### Native Memory 泳道图展示类型 点击齿轮状的图标可以设置内存的展示单位。 -![GitHub Logo](../../figures/NativeMemory/NativeChart.jpg) +![GitHub Logo](../../figures/NativeMemory/NativeChart.png) - Current Bytes:以申请内存的size绘制泳道图。 - Native Memory Density:以申请内存的数量绘制泳道图。 -- All Heap&AnonuymousVM:malloc分配和mmap分配的总量。 +- All Heap&Anonymous VM:malloc分配和mmap分配的总量。 - All Heap:malloc分配的内存。 - All Anonymous VM:mmap分配的内存。 ### Native Memory 泳道图的框选功能 -可以对内存的数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有四个 tab 页。 +可以对内存的数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有五个 tab 页。 Statistics 的 Tab 页,主要显示了统计明细类型。 -![GitHub Logo](../../figures/NativeMemory/Statistics.jpg) +![GitHub Logo](../../figures/NativeMemory/Statistics.png) - Memory Type:内存的类型。 -- Existing:框选区域内申请没有释放的大小。 -- #Existing:框选区域内申请没有释放的次数。 -- Transient:框选区域内释放的大小。 -- #Transient:框选区域内释放的次数。 +- Existing:框选区间内申请没有释放的大小。 +- #Existing:框选区间内申请没有释放的次数。 +- Transient:框选区间内释放的大小。 +- #Transient:框选区间内释放的次数。 - Total Bytes:框选区间内申请的大小。 - #Total: 框选区间内申请的次数。 - Peak Value: 框选区间内内存申请的峰值。 - Existing/Total:框选区间内剩余的内存比上申请的内存,其中浅紫色是框选区间内申请的大小/整个时间轴(申请+释放的总大小),深紫色是框选区间内(申请+释放)的大小/整个时间轴(申请+释放的总大小)。 +Analysis 的 Tab 页,主要从Memory Type、Thread、Library、Function等维度展示内存统计信息。 +![GitHub Logo](../../figures/NativeMemory/Analysis.png) + Call Info 的 Tab 页,主要显示了调用树详细类型。 -![GitHub Logo](../../figures/NativeMemory/CallInfo.jpg) +![GitHub Logo](../../figures/NativeMemory/CallInfo.png) - Symble Name:每个内存分配的调用栈。 - Size:分配的总大小。 - Count:相同调用栈出现的次数。 Native Memory 的 Tab 页,主要显示了单次分配信息列表。 - ![GitHub Logo](../../figures/NativeMemory/NativeMemory.jpg) + ![GitHub Logo](../../figures/NativeMemory/NativeMemory.png) - Address:内存块的地址。 - Memory Type:内存分配的类型。 - Timestamp:时间戳信息。 -- State:内存地址当前状态Existed 表示框选范围内未释放,Freed表示已释放。 +- State:内存地址当前状态Existed 表示框选区间内未释放,Freed表示已释放。 - Size:该次申请分配内存的大小。 - Responsible Library :调用该函数的库。 - Responsible Caller :调用该函数的方法。 Snapshot List 的 Tab 页,主要显示了各时刻内存的增长的差值。 - ![GitHub Logo](../../figures/NativeMemory/Snapshotlist.jpg) + ![GitHub Logo](../../figures/NativeMemory/Snapshotlist.png) - Snapshot:标记的打点说明。 - Timestamp :时间戳信息。 -- Net Growth :自从上次Snapshot的增长量,是计算的分配和释放的。 -- Total Growth :自从上次Snapshot的增长量,是计算的每一次分配的。 +- Net Growth :自从上次Snapshot的增长量,是计算分配和释放的。 +- Total Growth :自从上次Snapshot的增长量,是计算每一次分配的。 - #Existing :仍然存在的内存数。 ### Native Memory 的辅助信息功能 在 Call Info 和 Native Memory 的 Tab 页,点击选中某一行,右边画红线处会显示出该行调用栈的树结构信息。 -![GitHub Logo](../../figures/NativeMemory/nativecallstack.jpg) +![GitHub Logo](../../figures/NativeMemory/nativecallstack.png) ### Native Memory 详细显示的过滤功能 -点击下方的 All Allocations 可以对 Allocation 的 lifeSpan 进行过滤,有三个选择:All Allocatios,Create & Existing,Create & Destroyed。 +点击下方的 All Allocations 可以对 Allocation 的 lifespan 进行过滤,有三个选择:All Allocations,Created & Existing,Created & Destroyed。 ![GitHub Logo](../../figures/NativeMemory/lifespan.jpg) - All Allocations:所有的内存。 @@ -114,7 +126,7 @@ Call Info 的 Tab 页,主要显示了调用树详细类型。 - Created & Destroyed: 创建且被销毁的内存。 点击下方的 All Heap&Anonymous 可以对内存类型进行过滤。 ![GitHub Logo](../../figures/NativeMemory/AllocationType.jpg) -- All Heap&AnonuymousVM:Heap和AnonuymousVM的总量。 +- All Heap & Anonymous VM:Heap 和 Anonymous VM 的总量。 - All Heap:malloc分配的内存。 - All Anonymous VM:mmap的匿名页。 点击下方的 Mark Snapshot 可以在时间轴上打标签。出现小旗的标志,通过标注多个时间点。点击到 Snapshot List 标签页可以看到各个时间点的内存的增长值。 @@ -122,12 +134,12 @@ Call Info 的 Tab 页,主要显示了调用树详细类型。 ### Native Memory 的火焰图功能 -火焰图的展示跟 Callinfo 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称,栈的所在库名,地址,size 大小,栈的个数。 +火焰图的展示跟 Call Info 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称,栈的所在库名,地址,大小,采集次数。 ![GitHub Logo](../../figures/NativeMemory/nativeflameshow.jpg) ### 基于函数进行调用栈(单个或多个)选择后可以在时间轴上显示内存操作点 -点击火焰图函数时,触发火焰图点击中,显示调用栈中该函数出现在时间轴范围的分布情况。 +点击火焰图函数时,触发火焰图点击,显示调用栈中该函数出现在时间轴范围的分布情况。 ![GitHub Logo](../../figures/NativeMemory/memoryframe.jpg) ### 内存搜索大小写不敏感,上层火焰图的大小和总内存需要根据搜索内容动态调整 @@ -141,7 +153,7 @@ Call Info 的 Tab 页,主要显示了调用树详细类型。 ### 搜索框支持表达式输入 -调用栈默认会显示火焰图,新增搜索框表达式输入。表达式作用范围为 nativehook 的统计与非统计模式。其中处理的为 Responsible Library 与 Responsible Caller,其中 Responsible Library 和 Responsible Caller 表示从下往上非 libc++ musl 的第一条调用栈的 lib 跟 symbol,如下图所示,由于最后一条 [ operator new(unsigned long) ] libc++.so 为 libc++.so 的函数,故跳过,所以该条调用栈的 Responsible Library 为 libhilog.so,Responsible Caller 为 OHOS::HiviewDFX::GetDomainLevel(unsigned int) 。 +调用栈默认会显示火焰图,新增搜索框表达式输入。表达式作用范围为 nativehook 的统计与非统计模式。其中处理的为 Responsible Library 与 Responsible Caller,其中 Responsible Library 和Responsible Caller 表示从下往上非 libc++ musl 的第一条调用栈的 lib 跟 symbol,如下图所示,由于最后一条 [ operator new(unsigned long) ] libc++.so 为 libc++.so 的函数,故跳过,所以该条调用栈的 Responsible Library 为 libhilog.so,Responsible Caller 为 OHOS::HiviewDFX::GetDomainLevel(unsigned int) 。 ![GitHub Logo](../../figures/NativeMemory/framecaller.jpg) 表达式说明: 在 InputFilter 输入框可以进行搜索过滤和表达式过滤,其中表达式必须以@开头,英文括号包起所需要过滤的内容,每个括号必须包括 (Responsible Library,Responsible Caller)匹配全量以\*表示,否则认为该输入为搜索过滤。 @@ -153,7 +165,7 @@ Call Info 的 Tab 页,主要显示了调用树详细类型。 | @(\* tryalloc codec bitmapcache skYUV) | 只显示 Responsible Library 为任意值 且 Responsible Caller 包含 tryalloc 或 codec 或 bitmapcache 或 skYUV 的数据 | | @(libglobal *,*resourceManager) | 只显示 Responsible Library 包含 libglobal 且 Responsible Caller 为任意值的数据 或 Responsible Library 为任意值,Responsible Caller 包含 resourceManager 的数据 | | @(/data/user \*) | 只显示 Responsible Library 路径/data/user 且 symbol 为任意值的数据 | -| @(mali.so _,libGLES_mali.so _) | 只显示 Responsible Library 包含 mali.so 或者 libGLES_mali.so 的数据 | +| @(mali.so *,libGLES_mali.so *) | 只显示 Responsible Library 包含 mali.so 或者 libGLES_mali.so 的数据 | | @(\* PixelMap:ReadImageData) | 只显示 Responsible Caller 包含 PixelMap:ReadImageData 的数据 | | | | | @-(libark jsvm table) | 不显示 Responsible Library 包含 libark 且 Responsible Caller 包含 jsvm 或者 table 的数据 | diff --git a/ide/src/doc/md/quickstart_page_fault.md b/ide/src/doc/md/quickstart_page_fault.md index c5b0957033eb8074632b2fbb0d13287791df5e87..108661d5e534f6e4cf21b924badf9ac557e6eef9 100644 --- a/ide/src/doc/md/quickstart_page_fault.md +++ b/ide/src/doc/md/quickstart_page_fault.md @@ -13,7 +13,7 @@ - Process:默认配置的是整个系统的,也可选择单进程抓取。 - Max Unwind Level:配置抓取调用栈的最大深度。 -再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_ebpf.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 +再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_ebpf.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/EBPF/ebpfrecord.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击 Record 抓取,抓取过程中会显示抓取时长。 ![GitHub Logo](../../figures/EBPF/ebpfexcuting.jpg) @@ -27,7 +27,7 @@ - 红色区域:泳道图。 - 绿色区域:详细信息。 -- 黄色区域:辅助信息(Callstack)。 +- 黄色区域:辅助信息(Call Stack)。 ### 页内存泳道图展示 @@ -50,11 +50,14 @@ Page Fault Statistics 的 Tab 页如图: - Max Duration:最大时长。 点击下方的 Statistics by Thread,可以切换到按照 Thread 为基点显示数据。 ![GitHub Logo](../../figures/EBPF/ebpf_bythread.jpg) + Analysis 的 Tab 页如图: + ![GitHub Logo](../../figures/EBPF/Analysis.jpg) Page Fault CallTree 的 Tab 页如图: ![GitHub Logo](../../figures/EBPF/VMCalltree.jpg) - Call Stack:为经过符号解析后的Callstack,并且给出动态链接库或者进程名的信息。 -- Local:为该调用方法自身占用的CPU时间。 -- Weight:调用方法的执行占比。 +- Local:为该调用方法自身占用的 CPU 时间。 +- Weight:为该调用方法占用的CPU时间。 + %:为该调用方法占用的CPU时间占比。 Page Fault Events 的 Tab 页如图: ![GitHub Logo](../../figures/EBPF/VMEvents.jpg) - Start Time:起始时间。 @@ -66,11 +69,13 @@ Page Fault Statistics 的 Tab 页如图: ### 页内存支持多种 Options 展示风格 -点击 Page Fault CallTree 的 Tab 页底部的 Options,会有两个 CheckBox 复选框。 +点击 Page Fault CallTree 的 Tab 页底部的 Options,会有四个 CheckBox 复选框。 ![GitHub Logo](../../figures/EBPF/vmOptions.jpg) - Invert:反向输出调用树。 - Hide System so:隐藏系统库文件。 +- Hide Event:隐藏事件。 +- Hide Thread:隐藏线程。 ### 页内存支持过滤调用栈调用次数的展示风格 @@ -82,8 +87,8 @@ Page Fault Statistics 的 Tab 页如图: ![GitHub Logo](../../figures/EBPF/vmdatamining.jpg) - 裁剪 Callstack,点击 Callstack 上一个节点符号,再点击底部 Symbol Filter 按钮,则该符号自动被裁剪掉,同时将该节点往下所有的 Callstack 内容裁剪掉。 -- 裁剪 Library,点击 Library Filter 按钮,则该库文件符号下所有的子节点也被裁剪。 -- 点击 Reset 按钮,将恢复选中的裁剪内容。 +- 裁剪 Library,点击 Library 上一个节点符号,再点击底部 Library Filter 按钮,则该符号自动被裁剪掉,同时将该节点往下所有的 Callstack 内容裁剪掉。 +- 先选中要恢复的内容,再点击 Reset 按钮,将恢复选中的裁剪内容。 ### 页内存功能的调用栈 Group 展示支持按条件过滤 @@ -104,7 +109,7 @@ Page Fault Statistics 的 Tab 页如图: 点击 Page Fault CallTree 左下角的柱状图的图标,会切换到火焰图页面。 ![GitHub Logo](../../figures/EBPF/vmflame.jpg) -进入到火焰图页面,火焰图的展示跟 Callinfo 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称和 Duration 时长。 +进入到火焰图页面,火焰图的展示跟 Callinfo 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称、所属Lib库、函数地址、耗时及其占比。 ![GitHub Logo](../../figures/EBPF/vmflameshow.jpg) -鼠标左键火焰图,会进入下一级界面,右键回到上一级。 +鼠标左键火焰图,会进入下一级界面,左键上级则返回上一级界面。 ![GitHub Logo](../../figures/EBPF/vmflamelevel.jpg) diff --git a/ide/src/doc/md/quickstart_schedulinganalysis.md b/ide/src/doc/md/quickstart_schedulinganalysis.md index bb66e4a2b8f044897296ad483af3aec469b4c1d6..aa9badf49f9a1d747d81df6410e1269e78eefdf5 100644 --- a/ide/src/doc/md/quickstart_schedulinganalysis.md +++ b/ide/src/doc/md/quickstart_schedulinganalysis.md @@ -11,7 +11,7 @@ ### Scheduling analysis 文件的抓取 -点击 Record setting,在 output file path 输入文件名 hiprofiler_dataScheduling.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 +点击 Record setting,在 output file path 输入文件名 hiprofiler_dataScheduling.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/Schedulinganalysis/schedusetting.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击 Record 抓取,抓取过程中会显示抓取时长。 ![GitHub Logo](../../figures/Schedulinganalysis/scheduexcuting.jpg) diff --git a/ide/src/doc/md/quickstart_systemtrace.md b/ide/src/doc/md/quickstart_systemtrace.md index ec574a05522028a2130809d9e5e5f35ea0f733f7..7bef381e5ff70beedf8eb313897c4c8a23a3cc02 100644 --- a/ide/src/doc/md/quickstart_systemtrace.md +++ b/ide/src/doc/md/quickstart_systemtrace.md @@ -5,12 +5,12 @@ ## 文件加载入口 将抓取的 trace 导入查看。 -![GitHub Logo](../../figures/Web/opentrace.jpg) +![GitHub Logo](../../figures/Web/opentrace.png) 说明: - Open trace file:导入离线 trace 文件入口。 -- Open long trace file:导入大文件入口。 +- Open long trace:导入大文件入口。 - Record new trace:抓取新的 trace 文件入口。 - Record template:抓取指定模块的 trace 文件入口。 @@ -19,7 +19,7 @@ ![GitHub Logo](../../figures/Web/trace.jpg) 说明: -- 操作说明:在当前页面可以通过键盘上的 wasd 四个键位操纵当前的时间轴进行缩放,w 为放大,s 为缩小,a 为左移,d 为右移。 +- 操作说明:在当前页面可以通过键盘上的 wasd 四个键位操作当前的时间轴进行缩放,w 为放大,s 为缩小,a 为左移,d 为右移。 ## trace 功能介绍 @@ -31,13 +31,13 @@ trace 模块从上往下主要展示时间轴、cpu 使用率、cpu 使用情况 最上方带刻度的为时间轴,主要展示当前抓取数据的总时长和时间刻度的分布情况,如上图所示,左下角展示总时长。 中间区域展示的是抓取数据时间段内的 cpu 使用率,颜色越深代表 cpu 使用率越高,颜色越浅代表 cpu 使用率越低。 ![GitHub Logo](../../figures/Web/highlit.jpg) -在白色背景时间轴区域内可以点击后拖拽鼠标,可以对从鼠标按下到拖拽完成鼠标松开的区域内的数据进行筛选,高亮显示的部分为当前所选区域,如上图所示。 +在白色背景时间轴区域内点击后拖拽鼠标,对从鼠标按下到拖拽完成鼠标松开的区域内的数据进行筛选,高亮显示的部分为当前所选区域,如上图所示。 ### cpu 使用情况 ![GitHub Logo](../../figures/Web/cpu.jpg) -如上图所示,当前抓取数据有 4 个 cpu 工作,前四组数据对应的是当前调用 cpu 的线程和对应的进程情况,以颜色作为区分。后四组数据则为 cpu 的使用频率信息。鼠标移动到相应的线程上还会将当前选中的进程信息全部置为高亮,其他的进程会置灰,如下图所示。 +如上图所示,当前抓取数据有 4 个 cpu 工作,前四组数据对应的是当前调用 cpu 的线程和对应的进程情况,以颜色作为区分。后四组数据则为 cpu 的使用频率信息。鼠标移动到相应的线程,还会将该线程对应的进程全部置为高亮,同时其他的进程会置灰,如下图所示。 ![GitHub Logo](../../figures/Web/gray.jpg) #### cpu 使用情况的框选功能 @@ -47,20 +47,20 @@ CPU by thread 的 Tab 页,主要显示了在框选时间区间内的进程名 ![GitHub Logo](../../figures/Web/cpubythread.jpg) CPU by process 的 Tab 页,主要显示了在框选时间区间内的进程名、进程号、总运行时长、平均运行时长和调度次数信息。 ![GitHub Logo](../../figures/Web/cpubyprocess.jpg) -CPU Usage 的 Tab 页,主要显示了在框选时间区间内,该频率时间占比前三的信息。 +CPU Usage 的 Tab 页,主要显示了在框选时间区间内,各个 cpu 频率时间占比前三的信息。 ![GitHub Logo](../../figures/Web/cpusage.jpg) Thread Switches 的 Tab 页,按照状态>进程>线程,统计对应状态下的次数,持续时长,最小时长,平均时长,最大时长信息。 ![GitHub Logo](../../figures/Web/threadswitches.jpg) Thread States 的 Tab 页,按进程>线程>状态的维度去统计,需要呈现该状态的线程名、进入该状态次数、该状态下时长、最小时长、平均时长、最大时长。 ![GitHub Logo](../../figures/Web/threadstates.jpg) -Sched Priority 的 Tab 页,按优先级显示调度,显示框选范围内所有 Running 以及 Running 之前的 Runnable 线程的最小,最大,平均耗时。 +Sched Priority 的 Tab 页,按优先级大小显示调度,显示框选范围内所有 Running 以及 Running 之前的 Runnable 线程的数量,持续时长,最小,最大,平均耗时。 ![GitHub Logo](../../figures/Web/schedpritab.jpg) -Thread States、Thread Switches 的 2 个 Tab 页,点击移动到某一行,鼠标会变成一个小手的标志,并且会高亮,点击一下,就会进入辅助信息界面,会将选中行的辅助信息展示出来,包括开始时间、进程、线程、线程状态、对应的 CPU、优先级等信息如下图。 +Thread States、Thread Switches的 2 个 Tab 页,鼠标移动到某一行,鼠标会变成一个小手的标志,并且会高亮,点击一下,就会进入辅助信息界面,会将选中行的辅助信息展示出来,包括开始时间、进程、线程、线程状态、对应的 CPU、优先级等信息如下图。 ![GitHub Logo](../../figures/Web/details.jpg) #### cpu 使用情况的单选功能 -单选 CPU 使用情况数据会在选中的色块外层加上深色边框,能够突出当前选中色块,弹出层中会展示当前 CPU 上的进程名,线程名,开始时间的相对时间,开始时间的绝对时间,运行时长,线程结束状态信息。 +单选 CPU 使用情况数据会在选中的色块外层加上深色边框,能够突出当前选中色块,弹出层中会展示当前 CPU 上的进程名,线程名,开始时间的相对时间,开始时间的绝对时间,运行时长,优先级,线程结束状态信息。 ![GitHub Logo](../../figures/Web/cpuclick.jpg) ### 线程唤醒关系树 @@ -110,7 +110,9 @@ Thread States、Thread Switches 的 2 个 Tab 页,点击移动到某一行, #### 关键路径标识 在 ftrace 数据中的 cpu 泳道的区域,在界面顶部增加 json 文件导入按钮,导入 json 文件后,根据线程号跟对应的时间,在 cpu 区域高亮该时间的线程色块,点击界面上的 x,可以取消高亮。json 格式如下: + ![GitHub Logo](../../figures/Web/json.jpg) + 导入 json 文件以后,会将 ACCS0 [2716]线程对应时间点的 slice 色块高亮显示 ![GitHub Logo](../../figures/Web/keyslice.jpg) diff --git a/ide/src/doc/md/quickstart_web_record.md b/ide/src/doc/md/quickstart_web_record.md index a6f0e3db4178c6d7b8fec3af86ad55e8c8aaff54..0e2be097360d6e4f02a907257218e90a0c97e539 100644 --- a/ide/src/doc/md/quickstart_web_record.md +++ b/ide/src/doc/md/quickstart_web_record.md @@ -28,7 +28,7 @@ - Hitrace categories: Bytrace 的抓取项,各解释项说明如下图: ![GitHub Logo](../../figures/hdc/bytacedescription.jpg) -再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_example.htrace,拖动滚动条设置 buffer size 大小是 64M,抓取时长是 50s。 +再点击 Record setting,在 output file path 输入文件名 hiprofiler_data_example.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。 ![GitHub Logo](../../figures/hdc/examplerecord.jpg) 点击 Trace command,就会根据上面的配置生成抓取命令,点击 Record。 ![GitHub Logo](../../figures/hdc/record.jpg) diff --git a/ide/src/doc/quickstart_Application_operation_skills.html b/ide/src/doc/quickstart_Application_operation_skills.html index b287169a929a42bf65ec013a0d0a3dc3e35f345e..f5eaf5fc220331e43c4b28df8bcf5897623f10aa 100644 --- a/ide/src/doc/quickstart_Application_operation_skills.html +++ b/ide/src/doc/quickstart_Application_operation_skills.html @@ -190,6 +190,7 @@ position: relative; padding: 1em 1px 1px 0.9em; } + pre[dl] .line-highlight-wrapper { position: absolute; top: 1px; @@ -234,12 +235,12 @@ top: auto; bottom: 0.5em; } + html body { line-height: 1.6; font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -569,10 +570,13 @@ white-space: pre; } } + .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -654,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -669,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -776,212 +776,175 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    -

    应用操作技巧

    - -

    应用操作技巧主要展示各个小模块的使用技巧。

    -

    可导入符号表

    - -

    - 符号表导入适用于所有支持调用栈的 Tab 页,选择一个文件夹,获取文件下及其子文件夹的所有 so - 文件,更新数据库中符号数据。文件夹内 so 的格式需要与在设备上的路径一致,例如下图中,选择的文件夹为 - import,选择导入的 libnative_hook.z.so,在设备上的路径是/system/lib64/,那么在本地选择的文件夹内也需要保证路径是 - import/system/lib64/libnative_hook.z.so。 -
    - GitHub Logo -
    - 以 NativeMemory 举例,导入 NativeMemory 文件,点击 Call info 的 Tab 页,在搜索框中输入 - libnative_hook.z.so,会发现该 so 下的调用栈没有符号化完全。 -
    - GitHub Logo -
    - 将本地编译的 so 通过导入按钮导入,本地导入路径是 import/system/lib64/libnative_hook.z.so,红框处是导入按钮。 -
    - GitHub Logo -
    - 导入 so 以后,在搜索框中输入 libnative_hook.z.so,会发现符号化数据已经更新。 -
    - GitHub Logo -

    -

    网页连接文件打开接口

    - -

    - 网页连接文件打开接口可以在网址后增加文件地址,打开后直接打开 trace。 -
    - 接口的 url 路径如下: -
    - GitHub Logo -

    -
      -
    • -
      -蓝色框:是Smartperf工具的url(https://localhost:9000/application/)。
      -          
      -
    • -
    • -
      -绿色框:trace文件的url,其中
      -                        第一部分是?trace=(固定格式)。
      -                        第二部分是trace文件的url(https://iot.itocm.com:9001/upload/ftrace_small.txt),此处根据文件的url实际地址填写。
      -                        第三部分,&link=true(固定格式)。
      -          
      -
    • -
    -

    内容支持宽度可伸缩

    - -

    - 在表格每行的表头添加一个灰色竖线,拖动时单元格宽度随之改变。 -
    - GitHub Logo -

    -

    一键展开和收起,逐级展开和收起

    - -

    - 将树形表格全部改为默认收起,在表头左上角添加双尖箭头图标,默认箭头朝外,点击图标,表格的每一层都展开,图标上的箭头改为朝里面,再次点击表格每一层都收起,图标上的箭头改为朝外面。 -
    - GitHub Logo -

    -

    - 支持 shift+m 多次框选,框选列表显示和操作(跳转,取消),快捷键跳转 ctrl+[/]和一键取消 -

    - -

    - 每次框选泳道图后,按下 shift+m 键,在当前框选的开始和结束位置出现卡尺,如果只按下 m 键,会将上一次按 m - 键出现的卡尺清除,在当前框选位置画卡尺,页面上每个卡尺都放进 tab 页中,在 tab - 页中可以给卡尺改变颜色和移除旗子。用快捷键改变当前选中的卡尺。按下快捷键“ctrl+[”或“ctrl+]”的时候,会跳转到当前选中卡尺的上\下一个卡尺上,也就是上\下一个卡尺两侧变为实心,对应表格中的那行背景颜色变浅蓝色。 -

    -

    - 旗子标记可快速跳转,框选列表显示和操作(跳转,取消),快捷跳转 ctrl+,/.和一键取消 -

    - -

    - 在时间刻度下方点击会出现旗子和 tab 页,每次点击都将旗子都放进 tab 页中,在 tab - 页中可以给旗子改变颜色和移除旗子。用快捷键改变当前选中的旗子。按下快捷键“ctrl+,”或“ctrl+.”的时候,会跳转到当前选中旗子的上\下一个旗子上,也就是上\下一个旗子变为实心有旗杆,对应表格中的那行背景颜色变浅蓝色。 -
    - GitHub Logo -

    -

    泳道图支持一键收起和展开(收起前的状态)

    - -

    - 点击时间刻度的最左边的双箭头,可以对已展开的泳道图进行一键收起和展开。 -
    - GitHub Logo -

    -

    单个泳道图显示为多行时可折叠为 1 行(收藏和非收藏)

    - -

    - 单个泳道图点击会将泳道图折叠为一行,折腾后的字体是蓝色。 -
    - GitHub Logo -

    -

    已支持的泳道图按照模板分类显示,NaitveMemory,Hisysevent,应用内存等

    - -

    - 导入 trace 文件后,页面右上角的出现漏斗图标,点击会出现 Display Template 页面,Template Select - 区域显示已经添加到显示模板中的泳道图,每类泳道图后面会有一个多选框,默认不勾选,如果勾选页面上就只保留勾选的泳道图。 -
    - GitHub Logo -

    -

    - 点击 - GitHub Logo - 图标会以子系统-->部件-->泳道层级去显示: -
    - GitHub Logo -
    - 点击 - GitHub Logo - 导入模板的json配置,点击 - GitHub Logo - 下载模板的json配置,模板的配置文件格式如下: -
    - GitHub Logo -

    -

    所有进程的用户输入事件归一显示,观察操作事件和对象

    - -

    - 对于用户 InputEvent 会绘制到固定的泳道图。 -
    - GitHub Logo -

    -

    支持收藏的泳道图整体画布可伸缩

    - -

    - 收藏以后的泳道图可以在红线位置处上下伸缩拖动。 -
    - GitHub Logo -

    -

    用户自定义分组化收藏(2 组),及一键取消所有收藏

    - -

    - 选择界面上的 G1 和 G2,可以根据自己的需求将泳道图收藏到对应 G1 或者 G2 中,点击 G1 和 G2 - 旁边的星号可以一键取消所有收藏。 -
    - GitHub Logo -

    -

    trace 顶部的 cpu 负载预览颜色随着负载降低,亮度降低的能力对比度提升

    - -

    - CPU 负载颜色的亮度,负载越大颜色更深,负载越小颜色越浅。 -
    - GitHub Logo -

    -

    - 导航栏/泳道图背景颜色支持颜色可选,字体颜色可感知 slice 的颜色而进行变化,颜色动态可配 -

    - -

    - 给用户提供两种模式,浅色模式(导航栏白底黑字,泳道图颜色偏淡)和深色模式(导航栏黑底白字,泳道图颜色偏深),点击最左下方的小桶标志用户可以按需选择,并且用户可以自定义 - systemTrace 页面的颜色,给用户更多自由,自己动手设置自己喜欢的颜色,提升用户体验。 -
    - GitHub Logo -

    -

    Trace 抓取动态可停

    - -

    - 在抓取 trace 过程中,点击 StopRecord - 按钮会对抓取命令进行启停,等待抓取停止命令返回后,将生成的文件拉取下来进行文件的解析。 -
    - GitHub Logo -

    -

    Smartperf web 端集成 hdc 命令能力

    - -

    - 在现有的配置界面上,新增一个 Web 版本的 shell 界面,可以支持 shell 命令。 -
    - GitHub Logo -

    -
    - - + } + function getURLParameter(name) { + return (new URL(document.location)).searchParams.get(name); + } + + if ( targetId !== null) { + let targetElement = document.getElementById(targetId); + targetElement.scrollIntoView({ behavior: 'smooth' }); + } + }; + diff --git a/ide/src/doc/quickstart_Frametimeline.html b/ide/src/doc/quickstart_Frametimeline.html index 2b33f4450ff82d5d6eba441d62c6bfa8bce1b0ac..9d96394bf3d43593f758b5713bff7323f91ceb5b 100644 --- a/ide/src/doc/quickstart_Frametimeline.html +++ b/ide/src/doc/quickstart_Frametimeline.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,35 +776,30 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    + +

    Frame timeline抓取和展示说明

    抓取和展示卡顿丢帧检测的数据。

    Frame timeline的抓取

    -

    Frame timeline抓取界面配置说明

    +

    Frame timeline抓取界面配置说明

    打开Frame timeline开关抓取Frametimeline数据。
    GitHub Logo

    -

    Frame timeline文件的抓取

    +

    Frame timeline文件的抓取

    点击Record setting,在output file path输入文件名hiprofiler_dataframe.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    @@ -818,7 +810,7 @@

    Frame timeline功能介绍

    将抓取的文件导入到smartperf工具查看。

    -

    Frame timeline泳道图展示

    +

    Frame timeline泳道图展示

    Frame timeline展开就可以看到泳道图,泳道图上可以显示帧编号。 @@ -839,7 +831,7 @@ Actual Timeline:真实帧泳道图。 > -

    Frame timeline泳道图的框选功能

    +

    Frame timeline泳道图的框选功能

    可以对真实帧数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格。 @@ -880,7 +872,7 @@ Occurrences:事件数。 > -

    Frame timeline泳道图的点选功能

    +

    Frame timeline泳道图的点选功能

    通过点选理想帧和真实帧展示Tab页(Current Selection)。 @@ -986,10 +978,9 @@ Following flows:展示真实帧包含的关联的帧,图中斜向上箭头 diff --git a/ide/src/doc/quickstart_Import_so.html b/ide/src/doc/quickstart_Import_so.html index 972f2ca2bbb0da5e5ebed9684fa353abdffe978a..1eaf8535ca34709566a11b8d9796e124cee09f3c 100644 --- a/ide/src/doc/quickstart_Import_so.html +++ b/ide/src/doc/quickstart_Import_so.html @@ -239,7 +239,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -571,9 +570,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -655,11 +656,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -670,7 +667,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -777,24 +774,19 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    调用栈可视化和不同库函数调用占比说明

    调用栈可视化可以将开发者编译的so符号化结果展示出来,不同库函数的占比通过饼图的方式展示出来。

    -

    Native Memory文件的不同库函数占比

    +

    Native Memory文件的不同库函数占比

    Native @@ -813,13 +805,13 @@ Memory Type:事件类型。

  • -Existing:框选区域内申请没有释放的大小。
    +Existing:框选区间内申请没有释放的大小。
     
  • -#Existing:框选区域内申请没有释放的次数。
    +#Existing:框选区间内申请没有释放的次数。
     
  • @@ -837,13 +829,13 @@ Total Bytes:框选区间内申请的大小。
  • -Transient:框选区域内释放的大小。
    +Transient:框选区间内释放的大小。
     
  • -#Transient:框选区域内释放的次数。
    +#Transient:框选区间内释放的次数。
     
  • @@ -854,6 +846,11 @@ Transient:框选区域内释放的大小。 > +

    + 以线程去统计 +
    + GitHub Logo +

    以lib库去统计,如图显示的是AllocEvent的so占比的饼图和Table表。
    @@ -868,13 +865,13 @@ Library:So名称。

  • -Existing:框选区域内申请没有释放的大小。
    +Existing:框选区间内申请没有释放的大小。
     
  • -#Existing:框选区域内申请没有释放的次数。
    +#Existing:框选区间内申请没有释放的次数。
     
  • @@ -892,13 +889,13 @@ Total Bytes:框选区间内申请的大小。
  • -Transient:框选区域内释放的大小。
    +Transient:框选区间内释放的大小。
     
  • -#Transient:框选区域内释放的次数。
    +#Transient:框选区间内释放的次数。
     
  • @@ -923,13 +920,13 @@ Function:函数名称。
  • -Existing:框选区域内申请没有释放的大小。
    +Existing:框选区间内申请没有释放的大小。
     
  • -#Existing:框选区域内申请没有释放的次数。
    +#Existing:框选区间内申请没有释放的次数。
     
  • @@ -947,13 +944,13 @@ Total Bytes:框选区间内申请的大小。
  • -Transient:框选区域内释放的大小。
    +Transient:框选区间内释放的大小。
     
  • -#Transient:框选区域内释放的次数。
    +#Transient:框选区间内释放的次数。
     
  • @@ -964,7 +961,7 @@ Transient:框选区域内释放的大小。 > -

    Hiperf文件的不同库函数占比

    +

    Hiperf文件的不同库函数占比

    Hiperf分为四级统计,分别按照进程,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈的栈顶函数及其lib。 @@ -1068,7 +1065,7 @@ Weight:该so的调用方法的执行次数。 > -

    FileSystem文件的不同库函数占比

    +

    FileSystem文件的不同库函数占比

    FileSystem分为五级统计,分别按照进程,系统调用类型,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈,从栈顶往下查找,非musl库与c++库的第一条函数及其lib为每次分配归属的函数及lib库。 @@ -1197,7 +1194,7 @@ Duration:该函数的系统调用的总时长。 > -

    Bio文件的不同库函数占比

    +

    Bio文件的不同库函数占比

    Bio分为五级统计,分别按照进程,系统调用类型,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈,从栈顶往下查找,非submit_bio第一条函数及其lib为每次分配归属的函数及lib库。 @@ -1326,7 +1323,7 @@ Duration:该函数的系统调用的总时长。 > -

    Page Fault文件的不同库函数占比

    +

    Page Fault文件的不同库函数占比

    Page @@ -1460,10 +1457,9 @@ Duration:该函数的系统调用的总时长。 diff --git a/ide/src/doc/quickstart_Js_memory.html b/ide/src/doc/quickstart_Js_memory.html index a8cae984ef24b5ecb9ce8066cf8cb416b4c78401..4cacf55c4290b6ed0f3734072ce93c6f636f5a95 100644 --- a/ide/src/doc/quickstart_Js_memory.html +++ b/ide/src/doc/quickstart_Js_memory.html @@ -239,7 +239,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -571,9 +570,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -655,11 +656,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -670,7 +667,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -777,24 +774,19 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    Js Memory抓取和展示说明

    Js Memory是查看程序中存量内存的情况。

    Js Memory的抓取

    -

    Js Memory抓取配置参数

    +

    Js Memory抓取配置参数

    GitHub Logo @@ -813,7 +805,7 @@

    再点击Record setting,在output file path输入文件名hiprofiler_data_jsmemory.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是30s。 + size大小是64MB,抓取时长是30s。
    GitHub Logo

    @@ -825,7 +817,7 @@

    Js Memory展示说明

    将抓取的jsmemory文件导入到smartperf工具中查看,查看程序中存量内存的情况。

    -

    Js Memory泳道图展示类型

    +

    Js Memory泳道图展示类型

    堆快照类型文件的泳道图展示。 @@ -853,7 +845,7 @@ Heaptimeline:分配时间轴显示了插桩的JavaScript内存分配随时间 > -

    Js Memory泳道图的框选功能

    +

    Js Memory泳道图的框选功能

    可以对内存的数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有两个tab页。 @@ -993,7 +985,7 @@ Size Delta:Delta的Size。 > -

    Js Memory的辅助信息功能

    +

    Js Memory的辅助信息功能

    在Summary和Comparison的Tab页,选中左边实例,右边Retainers的Tab页会显示多少个实例引用了左边选中的实例。 @@ -1026,7 +1018,7 @@ RetainedSize:对象以及其相关的对象一起被删除后所释放的内 > -

    Js Memory详细显示的过滤功能

    +

    Js Memory详细显示的过滤功能

    在下方的Class Filter中输入类名,可以对类名进行过滤,如下图输入array,会过滤出类名是array的相关数据。 @@ -1037,10 +1029,9 @@ RetainedSize:对象以及其相关的对象一起被删除后所释放的内 diff --git a/ide/src/doc/quickstart_ability_monitor.html b/ide/src/doc/quickstart_ability_monitor.html index fee879758c8a00dfc9cb46b982413b01a7b4ccb2..322009083b81b545b102c32b01be70e53cfb614b 100644 --- a/ide/src/doc/quickstart_ability_monitor.html +++ b/ide/src/doc/quickstart_ability_monitor.html @@ -240,7 +240,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -572,9 +571,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -656,11 +657,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -671,7 +668,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -778,35 +775,30 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    Ability Monitor抓取和展示说明

    抓取和展示处理的CPU,内存,磁盘IO和网络使用情况统计。

    -

    Ability Monitor的抓取

    +

    Ability Monitor的抓取

    -

    Ability Monitor抓取界面配置说明

    +

    Ability Monitor抓取界面配置说明

    点击Probes config,如选择抓取AbilityMonitor。
    GitHub Logo

    -

    Ability Monitor文件的抓取

    +

    Ability Monitor文件的抓取

    点击Record setting,在output file path输入文件名hiprofiler_data_abilitymonitor.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    @@ -814,7 +806,7 @@
    GitHub Logo
    - 输入hdc_shell,进入设备,执行命令。 + 输入hdc shell,进入设备,执行命令。
    GitHub Logo
    @@ -822,10 +814,10 @@
    GitHub Logo

    -

    Ability Monitor功能介绍

    +

    Ability Monitor功能介绍

    将抓取的文件导入到smartperf工具查看,能了解CPU,内存,磁盘IO和网络的使用情况。

    -

    Ability Monitor泳道图展示

    +

    Ability Monitor泳道图展示

    Ability Monitor展开就可以看到泳道图,包括CPU,内存,磁盘IO,网络的使用情况。 @@ -883,7 +875,7 @@ Disk Bytes Written/Sec: 每秒从内存写入磁盘的字节数。

  • -Disk Read Ops/Sec:读入的字节数。
    +Disk Read Ops/Sec:读取的字节数。
     
  • @@ -918,7 +910,7 @@ Network Packets Out/Sec: 每秒发送的网络数据包数。 > -

    Ability Monitor泳道图的框选功能

    +

    Ability Monitor泳道图的框选功能

    可以对CPU,内存,磁盘IO和网络的数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有六个tab页。 @@ -978,13 +970,13 @@ Memory:内存值。

  • -Disk Writes(B):磁盘读入的字节数。
    +Disk Writes(Byte):磁盘写入的字节数。
     
  • -Disk Reads(B):磁盘写入的字节数。
    +Disk Reads(Byte):磁盘读取的字节数。
     
  • @@ -1088,14 +1080,14 @@ Process:进程号。

    - 框选MemoryTotal,Cached,SwapTota三个区域的泳道图,会展示System Memory Summary的Tab页。 + 框选MemoryTotal,Cached,SwapTotal三个区域的泳道图,会展示System Memory Summary的Tab页。
    GitHub Logo

    • -Start Time:采集时间的时间戳。
      +StartTime:采集时间的时间戳。
       
    • @@ -1149,7 +1141,7 @@ SUnreclaim:不可回收的Slab大小。
    • -Swap Toal:交换空间的总大小。
      +SwapTotal:交换空间的总大小。
       
    • @@ -1216,6 +1208,12 @@ CmaTotal:总的连续可用内存。
    •  CmaFree:空闲的可用内存。
      +
      +
    • +
    • +
      +Zram:Zram的使用大小。
       
    • @@ -1229,7 +1227,7 @@ CmaFree:空闲的可用内存。
      • -Start Time:采集时间的时间戳。
        +StartTime:采集时间的时间戳。
         
      • @@ -1271,7 +1269,7 @@ Reads In:读入的字节数。
      • -Reads In/sec:每秒读入的字节数。
        +Reads In/sec:每秒读取的字节数。
         
      • @@ -1297,7 +1295,7 @@ Write Out/sec:每秒写入的字节数。
        • -Start Time:采集时间的时间戳。
          +StartTime:采集时间的时间戳。
           
        • @@ -1360,10 +1358,9 @@ Packets Out/sec:每秒发送的网络数据包数。 diff --git a/ide/src/doc/quickstart_animation.html b/ide/src/doc/quickstart_animation.html index f6cfb8db7ba59caedc8301bcc82e6945435b9e1d..a7d144cd5ad346ad7697668316fe434289bb80c4 100644 --- a/ide/src/doc/quickstart_animation.html +++ b/ide/src/doc/quickstart_animation.html @@ -239,7 +239,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -571,9 +570,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -655,11 +656,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -670,7 +667,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -777,22 +774,17 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - - -
          + + +

          Animation的抓取和展示说明

          通过动效模板的指标项对图形子系统和应用做动效卡顿类问题分析。

          -

          Animation抓取参数的配置

          +

          Animation抓取参数的配置

          GitHub Logo
          @@ -805,10 +797,10 @@ AnimationAnalysis:动效配置项的总开关。解析时请打开对应的Fla

        -

        Animation展示说明

        +

        Animation展示说明

        将抓取的Animation文件导入到smartperf工具中,查看图形子系统和应用动效卡顿类问题。

        -

        Animation泳道图展示

        +

        Animation泳道图展示

        Animation的响应时延和完成时延泳道图显示,泳道图的Slice会显示响应时延和完成时延,如下图中的Response @@ -844,7 +836,7 @@ Frame spacing泳道图显示相邻两帧在时间尺度上相对于设备物理

      -

      动效曲线泳道图点选功能

      +

      动效曲线泳道图点选功能

      点选动效曲线泳道图上的属性值会出现一个空心小圆点,Frame Dynamic的Tab页会显示相关信息。
      @@ -867,7 +859,7 @@ Value:属性值。

    -

    动效曲线泳道图框选功能

    +

    动效曲线泳道图框选功能

    框选动效曲线泳道图,Frame Dynamic的Tab页会显示框选范围内每个点的属性值。
    @@ -890,7 +882,7 @@ Value:属性值。 -

    帧间距泳道图点选功能

    +

    帧间距泳道图点选功能

    点选帧间距泳道图,Frame @@ -944,7 +936,7 @@ result:帧间距。 -

    帧间距泳道图框选功能

    +

    帧间距泳道图框选功能

    框选帧间距泳道图,Frame spacing的Tab页会显示框选范围内帧间距数据。
    @@ -1002,10 +994,9 @@ result:帧间距。 diff --git a/ide/src/doc/quickstart_app_startup.html b/ide/src/doc/quickstart_app_startup.html index 36ebbe246b2069812111e99178813f322f7287f5..fc3a13a3ef9a855b331bd8f5990fe70fc00351ef 100644 --- a/ide/src/doc/quickstart_app_startup.html +++ b/ide/src/doc/quickstart_app_startup.html @@ -240,7 +240,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -572,9 +571,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -656,11 +657,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -671,7 +668,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -778,23 +775,18 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    App startup的抓取和展示说明

    应用启动分析功能主要是提供应用启动分析模板帮助系统调优人员做应用启动慢场景问题分析,快速查找系统侧启动慢阶段和耗时长调用栈信息。

    -

    App startup抓取参数的配置

    +

    App startup抓取参数的配置

    GitHub Logo @@ -809,10 +801,10 @@ App startup:配置项的总开关。解析时请打开对应的Flags标记(Dis > -

    App startup展示说明

    +

    App startup展示说明

    将抓取的App startup文件导入到smartperf工具中,查看应用启动各阶段耗时的情况。

    -

    App startup泳道图展示

    +

    App startup泳道图展示

    App startup的泳道图展示: @@ -824,7 +816,7 @@ App startup:配置项的总开关。解析时请打开对应的Flags标记(Dis Phase(首帧渲染提交-应用)、First Frame - Render Phase(首帧渲染提交-Render Service)。每个阶段的Slice上都会显示出该阶段的时延。

    -

    App startup泳道图点选功能

    +

    App startup泳道图点选功能

    可以对启动各个阶段的Slice进行点选,点选后在最下方的弹出层中会展示点选数据的统计的tab页。 @@ -865,7 +857,7 @@ Duration:应用启动的持续时间。 > -

    App startup泳道图Tab页跳转功能

    +

    App startup泳道图Tab页跳转功能

    点击各阶段的起始或者结束时间后面的跳转图标,跳转至关联Slice,并显示该Slice的详细信息。 @@ -890,7 +882,7 @@ EndTime(Relative)的跳转: 跳转到H:virtual void OHOS::AppExecFwk::AppMgrSe > -

    App startup泳道图的框选功能

    +

    App startup泳道图的框选功能

    应用启动阶段泳道图框选功能主要是框选启动分析泳道图之后,统计应用各个启动阶段的耗费时长信息。 @@ -917,14 +909,14 @@ Duration:应用各阶段启动时长。 > -

    So初始化泳道图展示

    +

    So初始化泳道图展示

    So初始化的泳道图展示:
    GitHub Logo

    -

    So初始化泳道图的点选功能

    +

    So初始化泳道图的点选功能

    点选So初始化的Slice,展示该so初始化信息的tab页。 @@ -957,7 +949,7 @@ Duration:So初始化耗时。 > -

    So初始化泳道图Tab页跳转功能

    +

    So初始化泳道图Tab页跳转功能

    点击So初始化开始时间后面的跳转图标,跳转至关联Slice,并显示该Slice的详细信息。 @@ -974,7 +966,7 @@ StartTime(Relative)的跳转: 跳转到dlopen: system/lib64/extensionability/ > -

    So初始化泳道图的框选功能

    +

    So初始化泳道图的框选功能

    So初始化泳道图框选功能主要是框选So初始化泳道图之后,统计各个进程下各个So的初始化耗费时长信息。 @@ -999,10 +991,9 @@ Duration:So的耗费时长。 diff --git a/ide/src/doc/quickstart_arkts.html b/ide/src/doc/quickstart_arkts.html index f88fdfd488246ff3eb13420e658fcea0a166503f..1e9d9d8c1addcd01efaefad6b9c0273777a9858c 100644 --- a/ide/src/doc/quickstart_arkts.html +++ b/ide/src/doc/quickstart_arkts.html @@ -239,7 +239,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -571,9 +570,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -655,11 +656,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -670,7 +667,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -777,38 +774,33 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    Cpuprofiler抓取和展示说明

    Cpuprofiler模板帮助ArkTs开发和测试分析虚拟机层执行开销大问题,提供Ts层耗时长函数和阶段。

    Cpuprofiler的抓取

    -

    Cpuprofiler的抓取配置参数

    +

    Cpuprofiler的抓取配置参数

    打开Start Ark Ts Record总开关下面的Start cpu profiler开关抓取Cpuprofiler数据。
    GitHub Logo

    -

    Cpuprofiler展示说明

    +

    Cpuprofiler展示说明

    将抓取的Cpuprofiler文件导入到SmartPerf中,查看Ts层耗时长的函数和阶段。
    GitHub Logo

    -

    Cpuprofiler的泳道图悬浮显示

    +

    Cpuprofiler的泳道图悬浮显示

    鼠标放到泳道图的Slice上会有悬浮框显示。 @@ -841,7 +833,7 @@ Url : 函数所在的文件名称。 > -

    Cpuprofiler泳道图的点选和框选功能

    +

    Cpuprofiler泳道图的点选和框选功能

    点选或者框选泳道图上函数名的Slice,会显示Js Profiler Statistics,Js Profiler CallTree,Js Profiler @@ -929,7 +921,7 @@ Total Time : 函数自身及调用者的调用时间总和。 > -

    Cpuprofiler的Heaviest Stack功能

    +

    Cpuprofiler的Heaviest Stack功能

    Js Profiler CallTree的Tab页的Heaviest Stack表格显示的是选中的函数的完整的调用栈。 @@ -964,10 +956,9 @@ Total Time : 函数自身及调用者的调用时间总和。 diff --git a/ide/src/doc/quickstart_bio.html b/ide/src/doc/quickstart_bio.html index a129249d19032e83d2bca0d0cda249dc92681474..060fc8fda77a21a8cd96b97d220e6283337567e0 100644 --- a/ide/src/doc/quickstart_bio.html +++ b/ide/src/doc/quickstart_bio.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,24 +776,19 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    Bio的抓取和展示说明

    抓取和展示IO延迟的数据。

    Bio的抓取

    -

    Bio抓取配置参数

    +

    Bio抓取配置参数

    GitHub Logo @@ -825,15 +817,16 @@ Max Unwind Level:配置抓取调用栈的最大深度。

    再点击Record setting,在output file path输入文件名hiprofiler_data_bio.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    点击Trace command,就会根据上面的配置生成抓取命令,点击Record抓取,抓取过程中会显示抓取时长。
    + GitHub Logo GitHub Logo

    -

    Bio展示说明

    +

    Bio展示说明

    抓取结束后Bio的trace会自动加载展示。 @@ -861,14 +854,14 @@ Max Unwind Level:配置抓取调用栈的最大深度。 > -

    Bio泳道图展示

    +

    Bio泳道图展示

    Bio泳道图鼠标悬浮以10ms为区间展示该周期内最大的读或者写延迟。
    GitHub Logo

    -

    Bio泳道图的框选功能

    +

    Bio泳道图的框选功能

    可以对泳道图进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有三个tab页。 @@ -935,9 +928,13 @@ Local:为该调用方法自身占用的CPU时间。

  • -Weight:调用方法的执行占比。
    -
    +Weight:为该调用方法占用的CPU时间。 + +
  • +
  • +
    +%:为该调用方法占用的CPU时间占比。
    +
  • @@ -972,7 +969,7 @@ Thread:线程名(tid)。

  • -Latency per 4KB:原始数据里没有,每4k数据的延迟时间,需要根据延迟的size跟延迟的时间去计算。
    +Latency per 4KB:每4k数据的延迟时间。
     
  • @@ -1013,10 +1010,10 @@ BackTrace:调用栈顶部函数,并显示调用栈深度。 > -

    Bio支持多种Options展示风格

    +

    Bio支持多种Options展示风格

    - 点击Disk I/O Latency CallTree的Tab页底部的Options,会有两个CheckBox复选框。 + 点击Disk I/O Latency CallTree的Tab页底部的Options,会有四个CheckBox复选框。
    GitHub Logo

    @@ -1033,8 +1030,18 @@ Hide System so:隐藏系统库文件 。 +
  • +
    +Hide Event:隐藏事件。 
    +
    +
  • +
  • +
    +Hide Thread:隐藏线程。 
    +
    +
  • -

    Bio支持过滤调用栈调用次数的展示风格

    +

    Bio支持过滤调用栈调用次数的展示风格

    点击Disk I/O Latency CallTree的Tab页底部的Sample Count @@ -1042,7 +1049,7 @@ Hide System so:隐藏系统库文件 。
    GitHub Logo

    -

    Bio功能的调用栈Group展示-数据分析支持剪裁功能

    +

    Bio功能的调用栈Group展示-数据分析支持剪裁功能

    GitHub Logo

      @@ -1053,34 +1060,34 @@ Hide System so:隐藏系统库文件 。

    • -

      裁剪Library,点击Library Filter按钮,则该库文件符号下所有的子节点也被裁剪。

      +

      裁剪Library,点击Library上一个节点符号,再点击底部Library Filter按钮,则该符号自动被裁剪掉,同时将该节点往下所有的Callstack内容裁剪掉。

    • -

      点击Reset按钮,将恢复选中的裁剪内容。

      +

      先选中要恢复的内容,再点击Reset按钮,将恢复选中的裁剪内容。

    -

    Bio功能的调用栈Group展示支持按条件过滤

    +

    Bio功能的调用栈Group展示支持按条件过滤

    在Input Filter输入关键字,会显示出带有该关键字的展示信息。
    GitHub Logo

    -

    Bio辅助信息区展示调用栈

    +

    Bio辅助信息区展示调用栈

    当在详细信息区选择一个符号时,将展示与该符号相关的完整的调用栈。如下图的Heaviest Stack Trace:
    GitHub Logo

    -

    Bio的Tier的过滤

    +

    Bio的Tier的过滤

    通过选择根据Tier去过滤。
    GitHub Logo

    -

    Bio的火焰图功能

    +

    Bio的火焰图功能

    点击Disk I/O Latency CallTree左下角的柱状图的图标,会切换到火焰图页面。 @@ -1088,11 +1095,11 @@ Hide System so:隐藏系统库文件 。 GitHub Logo
    进入到火焰图页面,火焰图的展示跟 Disk I/O Latency CallTree - 的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称和Duration时长。 + 的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称、所属Lib库、函数地址、耗时及其占比。
    GitHub Logo
    - 鼠标点击火焰图,会进入下一级界面,点击上级则返回上一级界面。 + 鼠标左键火焰图,会进入下一级界面,左键上级则返回上一级界面。
    GitHub Logo

    @@ -1100,10 +1107,9 @@ Hide System so:隐藏系统库文件 。 diff --git a/ide/src/doc/quickstart_device_record.html b/ide/src/doc/quickstart_device_record.html index ad5cde01700503520937b350c30482aaeb643f15..b09e32c0333e8a52e7e25905072b1330477c8cf8 100644 --- a/ide/src/doc/quickstart_device_record.html +++ b/ide/src/doc/quickstart_device_record.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,22 +776,17 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    + +

    设备端抓取trace说明

    从设备端抓取trace文件的配置和方法。

    -

    界面配置说明

    +

    界面配置说明

    GitHub Logo @@ -812,17 +804,17 @@

  • HiSystemEvent:HiSystemEvent数据抓取参数配置。
  • SDK Config:SDK数据抓取参数配置。
  • -

    命令行的生成和trace文件的抓取

    +

    命令行的生成和trace文件的抓取

    点击Probes config,如选择抓取Scheduling details。
    - GitHub Logo + GitHub Logo
    再点击Record setting,在output file path输入文件名hiprofiler_data_example.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    - GitHub Logo + GitHub Logo
    点击Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。
    @@ -842,7 +834,7 @@

  • hitrace_time:hitrace命令行抓取时间,与hiprofiler_cmd下发的-t配置联动。
  • - 输入hdc_std shell,进入设备,执行命令。 + 输入hdc shell,进入设备,执行命令。
    GitHub Logo

    @@ -859,10 +851,9 @@ diff --git a/ide/src/doc/quickstart_filesystem.html b/ide/src/doc/quickstart_filesystem.html index 07cb862adae7a98bd66b76e382fe1443d3044fe1..0ae0a314f4a075f63ffd1872c176dbfe699dab3c 100644 --- a/ide/src/doc/quickstart_filesystem.html +++ b/ide/src/doc/quickstart_filesystem.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,24 +776,19 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    + +

    FileSystem的抓取和展示说明

    FileSystem分析文件系统的信息和活动,比如读和写操作等。

    FileSystem的抓取

    -

    FileSystem抓取配置参数

    +

    FileSystem抓取配置参数

    GitHub Logo @@ -825,7 +817,7 @@ Max Unwind Level:配置抓取调用栈的最大深度。

    再点击Record setting,在output file path输入文件名hiprofiler_data_filesystem.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    @@ -833,7 +825,7 @@ Max Unwind Level:配置抓取调用栈的最大深度。
    GitHub Logo
    - 输入hdc_std shell,进入设备,执行命令。 + 输入hdc shell,进入设备,执行命令。
    GitHub Logo
    @@ -841,7 +833,7 @@ Max Unwind Level:配置抓取调用栈的最大深度。
    GitHub Logo

    -

    FileSystem展示说明

    +

    FileSystem展示说明

    将抓取的trace文件导入smartperf界面查看。 @@ -869,7 +861,7 @@ Max Unwind Level:配置抓取调用栈的最大深度。 > -

    FileSystem泳道图展示

    +

    FileSystem泳道图展示

    FileSystem泳道图按照读操作和写操作展示,鼠标移动都泳道图上,悬浮框会以10ms为周期展示读,写类型系统调用的次数。 @@ -880,7 +872,7 @@ Max Unwind Level:配置抓取调用栈的最大深度。
    GitHub Logo

    -

    FileSystem泳道图的框选功能

    +

    FileSystem泳道图的框选功能

    可以对读写操作泳道图进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有五个tab页。 @@ -965,7 +957,13 @@ Local:为该调用方法自身占用的CPU时间。

  • -Weight:调用方法的执行占比。
    +Weight:为该调用方法占用的CPU时间。
    +
    +
  • +
  • +
    +%:为该调用方法占用的CPU时间占比。
     
  • @@ -1008,7 +1006,7 @@ Type:操作类型。
  • -File Descriptor:fd。
    +File Descriptor:文件描述符。
     
  • @@ -1093,7 +1091,13 @@ Type:操作类型。
  • -File Descriptor:fd。
    +File Descriptor:文件描述符。
    +
    +
  • +
  • +
    +Path:文件路径。
     
  • @@ -1130,7 +1134,13 @@ Process:进程名。
  • -File Descriptor:fd。
    +File Descriptor:文件描述符。
    +
    +
  • +
  • +
    +Path:文件路径。
     
  • @@ -1141,10 +1151,10 @@ Backtrace:调用栈顶部函数,并显示调用栈深度。 > -

    FileSystem支持多种Options展示风格

    +

    FileSystem支持多种Options展示风格

    - 点击FileSystem Calltree的Tab页底部的Options,会有两个CheckBox复选框。 + 点击FileSystem Calltree的Tab页底部的Options,会有四个CheckBox复选框。
    GitHub Logo

    @@ -1158,11 +1168,23 @@ Invert:反向输出调用树。
  •  Hide System so:隐藏系统库文件。
    +
    +
  • +
  • +
    +Hide Event:隐藏事件。 
    +
    +
  • +
  • +
    +Hide Thread:隐藏线程。 
     
  • -

    FileSystem支持过滤调用栈调用次数的展示风格

    +

    FileSystem支持过滤调用栈调用次数的展示风格

    点击FileSystem Calltree的Tab页底部的Sample Count @@ -1170,7 +1192,7 @@ Hide System so:隐藏系统库文件。
    GitHub Logo

    -

    FileSystem功能的调用栈Group展示-数据分析支持剪裁功能

    +

    FileSystem功能的调用栈Group展示-数据分析支持剪裁功能

    GitHub Logo

      @@ -1181,34 +1203,34 @@ Hide System so:隐藏系统库文件。

    • -

      裁剪Library,点击Library Filter按钮,则该库文件符号下所有的子节点也被裁剪。

      +

      裁剪Library,点击Library上一个节点符号,再点击底部Library Filter按钮,则该符号自动被裁剪掉,同时将该节点往下所有的Callstack内容裁剪掉。

    • -

      点击Reset按钮,将恢复选中的裁剪内容。

      +

      先选中要恢复的内容,再点击Reset按钮,将恢复选中的裁剪内容。

    -

    FileSystem功能的调用栈Group展示支持按条件过滤

    +

    FileSystem功能的调用栈Group展示支持按条件过滤

    在Input Filter输入关键字,会显示出带有该关键字的展示信息。
    GitHub Logo

    -

    FileSystem辅助信息区展示调用栈

    +

    FileSystem辅助信息区展示调用栈

    当在详细信息区选择一个符号时,将展示与该符号相关的完整的调用栈。如下图的Heaviest Stack Trace:
    GitHub Logo

    -

    FileSystem的事件类型的过滤

    +

    FileSystem的事件类型的过滤

    通过选择可以过滤是Open类型,还是Close类型事件。
    GitHub Logo

    -

    FileSystem的火焰图功能

    +

    FileSystem的火焰图功能

    点击FileSystem Calltre左下角的柱状图的图标,会切换到火焰图页面。 @@ -1216,11 +1238,11 @@ Hide System so:隐藏系统库文件。 GitHub Logo
    进入到火焰图页面,火焰图的展示跟 Filesystem Calltree - 的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称和Duration时长。 + 的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称、所属Lib库、函数地址、耗时及其占比。
    GitHub Logo
    - 鼠标点击火焰图,会进入下一级界面,点击上级则返回上一级界面。 + 鼠标左键火焰图,会进入下一级界面,左键上级则返回上一级界面。
    GitHub Logo

    @@ -1228,10 +1250,9 @@ Hide System so:隐藏系统库文件。 diff --git a/ide/src/doc/quickstart_hilog.html b/ide/src/doc/quickstart_hilog.html index a4d66d89489cb29f93d253bd8adcfdc50f2a8103..91c6539a147de926ac22e7433fd6b2363f4a1ab9 100644 --- a/ide/src/doc/quickstart_hilog.html +++ b/ide/src/doc/quickstart_hilog.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,38 +776,33 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    + +

    Hilog抓取和展示说明

    Hilog分析模块主要展示系统日志信息。

    Hilog的抓取

    -

    Hilog的抓取配置参数

    +

    Hilog的抓取配置参数

    打开Hilog开关抓取Hilog数据。
    GitHub Logo

    -

    Hilog展示说明

    +

    Hilog展示说明

    将抓取的hilog文件导入到smartperf中,查看日志信息。
    GitHub Logo

    -

    Hilog泳道图的框选功能

    +

    Hilog泳道图的框选功能

    框选Hilog的泳道图,展示Hilog的tab页,Log Level可以选择日志级别,也能根据Tag,Process name,Message去搜索。 @@ -878,10 +870,9 @@ Count: 各级别日志的条数。 diff --git a/ide/src/doc/quickstart_hiperf.html b/ide/src/doc/quickstart_hiperf.html index 891be4d0e5d6c63a8c75fd0ec42bced96ee369e6..1d4a901df123eaf03c12e90e5f97df53a4b611f7 100644 --- a/ide/src/doc/quickstart_hiperf.html +++ b/ide/src/doc/quickstart_hiperf.html @@ -2,7 +2,7 @@ - quickstart_hiperf + quickstart_Hiperf @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,24 +776,19 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    -

    HiPerf的抓取和展示说明

    + +
    +

    Hiperf的抓取和展示说明

    -

    HiPerf工具是对系统性能数据进行采样记录,并将采样数据保存为文件,进行读取,展示分析。

    -

    HiPerf的抓取

    +

    Hiperf工具是对系统性能数据进行采样记录,并将采样数据保存为文件,进行读取,展示分析。

    +

    Hiperf的抓取

    -

    HiPerf抓取配置参数

    +

    Hiperf抓取配置参数

    GitHub Logo @@ -837,7 +829,7 @@ Advance Options:更多的抓取配置项。

    再点击Record setting,在output file path输入文件名hiprofiler_data_perf.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    @@ -845,7 +837,7 @@ Advance Options:更多的抓取配置项。
    GitHub Logo
    - 输入hdc_shell,进入设备,执行命令。 + 输入hdc shell,进入设备,执行命令。
    GitHub Logo
    @@ -853,7 +845,7 @@ Advance Options:更多的抓取配置项。
    GitHub Logo

    -

    HiPerf展示说明

    +

    Hiperf展示说明

    将抓取的trace文件导入smartperf界面查看。 @@ -876,15 +868,15 @@ Advance Options:更多的抓取配置项。

  • -黄色区域:辅助信息(Callstack)。
    +黄色区域:辅助信息(Call Stack)。
     
  • -

    HiPerf泳道图展示

    +

    Hiperf泳道图展示

    - Perf泳道图展示按照CPU使用量和线程和进程展示,鼠标移动到泳道图上,悬浮框会显示CPU的使用量。 + Hiperf泳道图展示按照CPU使用量,进程和线程展示,鼠标移动到泳道图上,悬浮框会显示CPU的使用量。
    GitHub Logo
    @@ -892,14 +884,14 @@ Advance Options:更多的抓取配置项。
    GitHub Logo
    - Perf泳道图上浅色表示无效调用栈的采样点,抓取时由于设备上的对应的so无符号信息,函数跟地址都无法获取到,固该采样点在tab页中不做显示。 + Hiperf泳道图上浅色表示无效调用栈的采样点,抓取时由于设备上的对应的so无符号信息,函数跟地址都无法获取到,固该采样点在tab页中不做显示。
    GitHub Logo

    -

    HiPerf泳道图的框选功能

    +

    Hiperf泳道图的框选功能

    - 可以对CPU使用量区,线程和进程区数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有四个tab页。 + 可以对CPU使用量区,进程和线程区数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有四个tab页。
    Perf Profile的Tab页如图:
    @@ -920,13 +912,13 @@ Local:为该调用方法自身占用的CPU时间。

  • -Sample Count:采样数量。
    +Sample Count:采样次数。
     
  • -Event Count:事件数量。
    +Event Count:事件次数。
     
  • @@ -974,7 +966,7 @@ Backtrace:栈顶的调用栈名称。 > -

    HiPerf支持多种Options展示风格

    +

    Hiperf支持多种Options展示风格

    点击Perf Profile的Tab页底部的Options,会有四个CheckBox复选框。 @@ -1007,14 +999,14 @@ Hide Thread State:隐藏线程状态。 > -

    HiPerf支持过滤调用栈调用次数的展示风格

    +

    Hiperf支持过滤调用栈调用次数的展示风格

    点击Perf Profile的Tab页底部的Sample Count Filter,可以填上区间值。过滤出符合该区间值调用次数的调用栈信息。
    GitHub Logo

    -

    HiPerf功能的调用栈Group展示-数据分析支持剪裁功能

    +

    Hiperf功能的调用栈Group展示-数据分析支持剪裁功能

    GitHub Logo

      @@ -1025,20 +1017,20 @@ Hide Thread State:隐藏线程状态。

    • -

      裁剪Library,点击Library Filter按钮,则该库文件符号下所有的子节点也被裁剪。

      +

      裁剪Library,点击Library上一个节点符号,再点击底部Library Filter按钮,则该符号自动被裁剪掉,同时将该节点往下所有的Callstack内容裁剪掉。

    • -

      点击Reset按钮,将恢复选中的裁剪内容。

      +

      先选中要恢复的内容,再点击Reset按钮,将恢复选中的裁剪内容。

    -

    HiPerf功能的调用栈Group展示支持按条件过滤

    +

    Hiperf功能的调用栈Group展示支持按条件过滤

    在Input Filter输入关键字,会显示出带有该关键字的展示信息。
    GitHub Logo

    -

    HiPerf辅助信息区展示调用栈

    +

    Hiperf辅助信息区展示调用栈

    当在详细信息区选择一个符号时,将展示与该符号相关的完整的调用栈。对上展示到根节点,对下则展示CPU占用率最大的调用栈。调用栈右侧有Sliding @@ -1048,7 +1040,7 @@ Hide Thread State:隐藏线程状态。
    GitHub Logo

    -

    HiPerf的火焰图功能

    +

    Hiperf的火焰图功能

    点击Perf Profile左下角的柱状图的图标,会切换到火焰图页面。 @@ -1056,12 +1048,12 @@ Hide Thread State:隐藏线程状态。 GitHub Logo
    进入到火焰图页面,火焰图的展示跟 Perf Profile - 的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称,lib,addr,Count,%in current thread,%in - current process,&in all process。 + 的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称,Lib,Addr,Count,% in current Thread,% in + current Process,% in all Process。
    GitHub Logo

    -

    HiPerf的show event count功能

    +

    Hiperf的show event count功能

    在Hiperf的父级泳道图上增加筛选功能,可在Cpu Usage 和各种event @@ -1069,22 +1061,22 @@ Hide Thread State:隐藏线程状态。
    GitHub Logo

    -

    - HiPerf的CPU/进程级/线程级泳道支持时序火焰图, 按照每个时间点的调用栈显示功能 +

    + Hiperf的CPU/进程级/线程级泳道支持时序火焰图, 按照每个时间点的调用栈显示功能

    根据Hiperf父级泳道图所筛选的类型,来显示各个CPU或者线程的时序火焰图,用户可根据自己的需要,点击泳道图旁边的齿轮标志筛选出某个cpu - 或者线程的火焰时序图数据。 + 或者线程的时序火焰图数据。
    GitHub Logo

    -

    - HiPerf的调用栈分析饼图/火焰图支持按进程、线程粒度可选, 饼图和火焰图可以跳转功能 +

    + Hiperf的调用栈分析饼图/火焰图支持按进程、线程粒度可选, 饼图可以跳转到火焰图功能

    - HiPerf分为process、thread、library、function四层,调用栈均可在每层的表格上鼠标点击右键跳转到对应的火焰图Tab页。火焰图上方标题显示是由哪一层跳转而来,点击关闭图标火焰图重置为当前框选范围的所有数据。 + Hiperf分为process、thread、library、function四层,调用栈均可在每层的表格上鼠标点击右键跳转到对应的火焰图Tab页。火焰图上方标题显示是由哪一层跳转而来,点击关闭图标火焰图重置为当前框选范围的所有数据
    GitHub Logo
    @@ -1092,7 +1084,7 @@ Hide Thread State:隐藏线程状态。
    GitHub Logo
    - 筛选面板新增Hide Thread、Hide Thread State筛选选项,Hiperf可隐藏线程和状态。 + 筛选面板新增Hide Thread、Hide Thread State筛选选项,Hiperf可隐藏线程和线程状态。
    GitHub Logo

    @@ -1100,10 +1092,9 @@ Hide Thread State:隐藏线程状态。 diff --git a/ide/src/doc/quickstart_hisystemevent.html b/ide/src/doc/quickstart_hisystemevent.html index d08a032f8e58f7a537caf8a0e6114c4cb84cc30d..30b10d988929c247c01739a67d619ce65fb14409 100644 --- a/ide/src/doc/quickstart_hisystemevent.html +++ b/ide/src/doc/quickstart_hisystemevent.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,18 +776,13 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    + +

    HiSystemEvent的抓取和展示说明

    @@ -798,7 +790,7 @@

    HiSystemEvent的抓取

    -

    HiSystemEvent抓取配置参数

    +

    HiSystemEvent抓取配置参数

    打开Start Hisystem Event Tracker Record开关抓取HiSystemEvent数据。 @@ -806,7 +798,7 @@ GitHub Logo
    再点击Record setting,在output file path输入文件名hiprofiler_data_hisystemevent.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    @@ -814,7 +806,7 @@
    GitHub Logo
    - 输入hdc_std shell,进入设备,执行上述生成的命令。 + 输入hdc shell,进入设备,执行上述生成的命令。
    GitHub Logo
    @@ -822,9 +814,9 @@
    GitHub Logo

    -

    HiSystemEvent展示说明

    +

    HiSystemEvent展示说明

    -

    HiSystemEvent的Energy泳道图展示

    +

    HiSystemEvent的Energy泳道图展示

    将抓取的trace文件导入smartperf界面查看。 @@ -842,7 +834,7 @@ Anomaly Event泳道: 显示系统异常和应用异常的ToolTip。

  • -System Event泳道: 以条状图显示,红色代表后台任务(WORKSCHEDULER),黄色代表应用锁(POWER),蓝色代表GPS定位(LOCATION)。
    +System Event泳道: 以条状图显示,红色代表后台任务(WORKSCHEDULER),黄色代表应用锁(POWER_RUNNINGLOCK),蓝色代表GPS定位(LOCATION)。
     
  • @@ -895,7 +887,7 @@ Location Switch State泳道:鼠标悬浮可以显示GPS开关状态(enable: > -

    HiSystemEvent的Energy泳道图的框选功能

    +

    HiSystemEvent的Energy泳道图的框选功能

    可以对Energy各泳道图进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格。 @@ -1117,7 +1109,7 @@ Screen Off Count:应用灭屏扫描次数。

  • -Background Time(ms):灭屏使用功耗值。
    +Background Time(ms):应用后台使用时长。
     
  • @@ -1176,10 +1168,10 @@ Energy Percent(%):功耗占比。 > -

    HiSystemEvent的Hisysevent泳道图展示

    +

    HiSystemEvent的Hisysevent泳道图展示

    GitHub Logo

    -

    HiSystemEvent的Hisysevent泳道图框选功能

    +

    HiSystemEvent的Hisysevent泳道图框选功能

    框选Hisysevent的泳道图,展示Hisysevents的tab页,有Filter by Domain,Filter by eventname,Filter by @@ -1284,10 +1276,9 @@ Count: 各级别事件个数。 diff --git a/ide/src/doc/quickstart_keywords_shortcuts.html b/ide/src/doc/quickstart_keywords_shortcuts.html index 64ccd0e9fbe4dce5ce4b33fb1a6c309f5073db17..def77ed765fd4c78bc36ca5bc458e6e4ae0bcc08 100644 --- a/ide/src/doc/quickstart_keywords_shortcuts.html +++ b/ide/src/doc/quickstart_keywords_shortcuts.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,32 +776,27 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    快捷键说明

    利用键盘和鼠标的快捷键对界面进行操作。

    -

    键盘操作

    +

    键盘操作

    • w/s:界面的放大/缩小。
    • a/d:界面的左/右移动。
    • m:对指定区域进行临时标记。
    • Shift+m:对指定区域进行永久标记。
    • -
    • ctrl+[/]:对Shift+m的的标尺进行左右跳转。
    • -
    • ctrl+,/.:对旗子标志进行左右跳转。
    • +
    • ctrl+[ / ctrl+]:对Shift+m的的标尺进行左/右跳转。
    • +
    • ctrl+, / ctrl+.:对旗子标志进行左/右跳转。
    -

    鼠标和键盘的操作

    +

    鼠标和键盘的操作

    • Ctrl + Scroll wheel:界面的放大/缩小。
    • @@ -814,10 +806,9 @@ diff --git a/ide/src/doc/quickstart_memory_template.html b/ide/src/doc/quickstart_memory_template.html index 4b4f3cf3986f156fbdac3055f339ac36ee0ff4ff..e3a9cc1604d0172371c58c23ba6ab54474fbcd38 100644 --- a/ide/src/doc/quickstart_memory_template.html +++ b/ide/src/doc/quickstart_memory_template.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,38 +776,33 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
      + +

      系统内存抓取和展示说明

      系统内存分析模板帮助系统内存调优人员进行进程内存拆解。

      系统内存的抓取

      -

      系统内存的抓取配置参数

      +

      系统内存的抓取配置参数

      打开VM Tracker开关抓取内存数据。
      GitHub Logo

      -

      系统内存展示说明

      +

      系统内存展示说明

      将抓取的内存文件导入到smartperf中,查看进程内存的情况。
      GitHub Logo

      -

      系统内存中Ability Monitor泳道图显示

      +

      系统内存中Ability Monitor泳道图显示

      Ability Monitor泳道图分为MemoryTotal,Cached,SwapTotal,System Purgeable Total,System Purgeable Pin,DMA,Skia @@ -818,7 +810,7 @@
      GitHub Logo

      -

      系统内存中Ability Monitor泳道图点选功能

      +

      系统内存中Ability Monitor泳道图点选功能

      System Purgeable Total泳道图点选功能。 @@ -1116,14 +1108,14 @@ MinSize:Gpu内存的最小值。 >

    -

    VM Tracker下的smaps泳道图展示

    +

    VM Tracker下的smaps泳道图展示

    smaps泳道图分为Dirty,Swapped,RSS,PSS,USS泳道图。
    GitHub Logo

    -

    VM Tracker下的smaps泳道图的点选和框选功能

    +

    VM Tracker下的smaps泳道图的点选和框选功能

    点选Dirty,Swapped,RSS,PSS,USS的5个泳道图中任一个显示的都是一样的内容,会显示Smaps Statistic,Smaps @@ -1354,7 +1346,7 @@ ProcessCache: Total-RenderServiceCpu-SkiaCpu-GLESHostCache的值。 Smaps Statistic的tab页和Smaps sample的tab页展示(同点选)。

    -

    VM Tracker下的GPU泳道图展示

    +

    VM Tracker下的GPU泳道图展示

    GPU泳道图分为GL,Skia Gpu Dump Toal,Skia Gpu Dump Window,Skia Gpu Memory泳道图。 @@ -1569,10 +1561,9 @@ MinSize:对应窗口/模块/目录下size的最小值。 diff --git a/ide/src/doc/quickstart_native_memory.html b/ide/src/doc/quickstart_native_memory.html index 16eb6705594c17bd4226822505c1c7a9a99fd6cf..48948d3832d2321a8a6bed0f1bc6ae4ba6fd7810 100644 --- a/ide/src/doc/quickstart_native_memory.html +++ b/ide/src/doc/quickstart_native_memory.html @@ -190,6 +190,7 @@ position: relative; padding: 1em 1px 1px 0.9em; } + pre[dl] .line-highlight-wrapper { position: absolute; top: 1px; @@ -234,12 +235,12 @@ top: auto; bottom: 0.5em; } + html body { line-height: 1.6; font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -569,10 +570,13 @@ white-space: pre; } } + .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -654,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -669,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -776,502 +776,426 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    -

    Native Memory抓取和展示说明

    + +
    +

    Native Memory 抓取和展示说明

    -

    Native Memory是查看内存的分配和释放等情况。

    -

    Native Memory的抓取

    +

    Native Memory 是查看内存的分配和释放等情况。

    +

    Native Memory 的抓取

    -

    Native Memory抓取配置参数

    +

    Native Memory 抓取配置参数

    -

    - GitHub Logo -
    +

    GitHub Logo
    配置参数说明:

      -
    • ProcessId or ProcessName:设置抓取的进程ID或者进程名,此处以输入com.ohos.mms进程名为例。
    • -
    • Max unwind level:抓取的栈的最大深度。
    • -
    • Shared Memory Size:native_daemon和native_hook进程之间存储数据的共享内存大小。
    • -
    • Filter Memory Size:只抓取大于该size的malloc数据(free不受影响)。
    • -
    • Use Fp Unwind:Fp回栈。
    • +
    • Process:设置抓取的进程 ID 或者进程名,此处以输入 com.ohos.mms 进程名为例。
    • +
    • Use Fp Unwind:是否Fp 回栈。
    • +
    • Use Record Statistics:统计数据上报时间间隔设置。
    • +
    • Use Record Js Stack:是否抓js栈。
    • +
    +

    点击Advance Options进入高级配置界面
    + GitHub Logo +

    +
      +
    • Use Startup Mode: 抓取应用启动阶段的内存(默认是关闭,需要抓取应用启阶段内存可开启)。
    • +
    • Use Response Lib Mode:nativememory抓取支持So能力。
    • Use Record Accurately:不过滤数据,上报全量的。
    • Use Offline Symbolization:离线符号化。
    • -
    • Use Record Statistics:统计数据上报时间间隔设置。
    • -
    • Use Startup Mode :抓取应用启动阶段的内存(默认是关闭,需要抓取应用启阶段内存可开启)。
    • +
    • Sample Interval:采样间隔。
    • +
    • Shared Memory Size:native_daemon 和 native_hook 进程之间存储数据的共享内存大小。
    • +
    • Max unwind level:抓取的栈的最大深度。
    • +
    • Max Js Stack Depth:抓取的Js栈的最大深度。
    • +
    • Filter Memory Size:只抓取大于该 size 的 malloc 数据(free 不受影响)。
    • +
    • Filter Napi Name:fp模式过滤某个napi调用。
    -

    - 再点击Record setting,在output file path输入文件名hiprofiler_data_nativememory.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 -
    - GitHub Logo +

    再点击 Record setting,在 output file path 输入文件名 + hiprofiler_data_nativememory.htrace,拖动滚动条设置 buffer size 大小是 64MB,抓取时长是 50s。
    + GitHub Logo

    -

    - 点击Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。 -
    - GitHub Logo +

    点击 Trace command,就会根据上面的配置生成抓取命令,点击复制按钮,会将命令行复制。
    + GitHub Logo

    +

    命令行参数说明:

    -

    命令行参数说明:

      -
    • save_file:是否将hook数据保存成文件,不上报protobuf形式数据给hiprofilerd。
    • -
    • filter_size:过滤malloc的大小,最小值是0,默认值是4096Byte。
    • -
    • smb_pages:nativedeamon与libnativehook间的共享内存大小。
    • +
    • save_file:是否将 hook 数据保存成文件,不上报 protobuf 形式数据给 hiprofilerd。
    • +
    • filter_size:过滤 malloc 的大小,最小值是 0,默认值是 4096byte。
    • +
    • smb_pages:nativedeamon 与 libnativehook 间的共享内存大小。
    • max_stack_depth:最多回栈的层数,也就是抓取的栈的最大深度。
    • process_name:抓取的应用进程名。
    • string_compressed:是否进行字符串压缩。
    • -
    • fp_unwind:是否进行fp回栈。
    • +
    • fp_unwind:是否进行 fp 回栈。
    • callframe_compress: 是否进行栈帧压缩。
    • record_accurately: 是否不过滤数据,上报全量的。
    • offline_symbolization: 是否离线符号化。
    • statistics_interval: 统计模式下上报数据的时间间隔。
    • startup_mode: 是否需要抓取应用启动阶段内存。
    -

    - 输入hdc_std shell,进入设备,执行命令。 -
    - GitHub Logo -
    - 执行完成后,进入指定目录查看,在/data/local/tmp下就会生成trace文件。 -
    - GitHub Logo +

    输入 hdc shell,进入设备,执行命令。
    + GitHub Logo
    + 执行完成后,进入指定目录查看,在/data/local/tmp 下就会生成 trace 文件。
    + GitHub Logo

    -

    Native Memory展示说明

    +

    Native Memory 展示说明

    -

    将抓取的nativememory文件导入到smartperf工具中查看,查看内存的分配和释放等情况。

    -

    Native Memory泳道图展示类型

    +

    将抓取的 Native Memory 文件导入到 smartperf + 工具中查看,查看内存的分配和释放等情况。

    +

    Native Memory 泳道图展示类型

    -

    - 点击齿轮状的图标可以设置内存的展示单位。 -
    - GitHub Logo +

    点击齿轮状的图标可以设置内存的展示单位。
    + GitHub Logo

    • -
      -Current Bytes:以申请内存的size绘制泳道图。
      -
      +
      Current Bytes:以申请内存的size绘制泳道图。
      +          
    • -
      -Native Memory Density:以申请内存的数量绘制泳道图。
      -
      +
      Native Memory Density:以申请内存的数量绘制泳道图。
      +          
    • -
      -All Heap&AnonuymousVM:malloc分配和mmap分配的总量。
      -
      +
      All Heap&Anonymous VM:malloc分配和mmap分配的总量。
      +          
    • -
      -All Heap:malloc分配的内存。
      -
      +
      All Heap:malloc分配的内存。
      +          
    • -
      -All Anonymous VM:mmap分配的内存。
      -
      +
      All Anonymous VM:mmap分配的内存。
      +          
    -

    Native Memory泳道图的框选功能

    - -

    - 可以对内存的数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有四个tab页。 -
    - Statistics的Tab页,主要显示了统计明细类型。 -
    - GitHub Logo +

    Native Memory 泳道图的框选功能

    + +

    可以对内存的数据进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有五个 + tab 页。
    + Statistics 的 Tab 页,主要显示了统计明细类型。
    + GitHub Logo

    • -
      -Memory Type:内存的类型。
      -
      +
      Memory Type:内存的类型。
      +          
    • -
      -Existing:框选区域内申请没有释放的大小。
      -
      +
      Existing:框选区间内申请没有释放的大小。
      +          
    • -
      -#Existing:框选区域内申请没有释放的次数。
      -
      +
      #Existing:框选区间内申请没有释放的次数。
      +          
    • -
      -Transient:框选区域内释放的大小。
      -
      +
      Transient:框选区间内释放的大小。
      +          
    • -
      -#Transient:框选区域内释放的次数。
      -
      +
      #Transient:框选区间内释放的次数。
      +          
    • -
      -Total Bytes:框选区间内申请的大小。
      -
      +
      Total Bytes:框选区间内申请的大小。
      +          
    • -
      -#Total: 框选区间内申请的次数。
      -
      +
      #Total: 框选区间内申请的次数。
      +          
    • -
      -Peak Value: 框选区间内内存申请的峰值。
      -
      +
      Peak Value: 框选区间内内存申请的峰值。
      +          
    • -
      -Existing/Total:框选区间内剩余的内存比上申请的内存,其中浅紫色是框选区间内申请的大小/整个时间轴(申请+释放的总大小),深紫色是框选区间内(申请+释放)的大小/整个时间轴(申请+释放的总大小)。
      -
      +
      Existing/Total:框选区间内剩余的内存比上申请的内存,其中浅紫色是框选区间内申请的大小/整个时间轴(申请+释放的总大小),深紫色是框选区间内(申请+释放)的大小/整个时间轴(申请+释放的总大小)。
      +          
    -

    - Call Info的Tab页,主要显示了调用树详细类型。 -
    - GitHub Logo +

    Analysis 的 Tab 页,主要从Memory Type、Thread、Library、Function等维度展示内存统计信息。
    + GitHub Logo +

    +

    Call Info 的 Tab 页,主要显示了调用树详细类型。
    + GitHub Logo

    • -
      -Symbol Name:每个内存分配的调用栈。
      -
      +
      Symble Name:每个内存分配的调用栈。
      +          
    • -
      -Size:分配的总大小。
      -
      +
      Size:分配的总大小。
      +          
    • -
      -Count:相同调用栈出现的次数。
      -
      -
    • -
    -

    - Native Memory的Tab页,主要显示了单次分配信息列表。 -
    - GitHub Logo -

    -
      +
      Count:相同调用栈出现的次数。
      +          
      + Native Memory 的 Tab 页,主要显示了单次分配信息列表。
      + GitHub Logo
    • -
      -Address:内存块的地址。
      -
      +
      Address:内存块的地址。
      +          
    • -
      -Memory Type:内存分配的类型。
      -
      +
      Memory Type:内存分配的类型。
      +          
    • -
      -Timestamp:时间戳信息。
      -
      +
      Timestamp:时间戳信息。
      +          
    • -
      -State:内存地址当前状态Existed 表示框选范围内未释放,Freed表示已释放。
      -
      +
      State:内存地址当前状态Existed 表示框选区间内未释放,Freed表示已释放。
      +          
    • -
      -Size:该次申请分配内存的大小。
      -
      +
      Size:该次申请分配内存的大小。
      +          
    • -
      -Responsible Library :调用该函数的库。
      -
      +
      Responsible Library :调用该函数的库。
      +          
    • -
      -Responsible Caller  :调用该函数的方法。
      -
      -
    • -
    -

    - Snapshot List的Tab页,主要显示了各时刻内存的增长的差值。 -
    - GitHub Logo -

    -
      +
      Responsible Caller  :调用该函数的方法。
      +          
      + Snapshot List 的 Tab 页,主要显示了各时刻内存的增长的差值。
      + GitHub Logo
    • -
      -Snapshot:标记的打点说明。
      -
      +
      Snapshot:标记的打点说明。
      +          
    • -
      -Timestamp :时间戳信息。
      -
      +
      Timestamp :时间戳信息。
      +          
    • -
      -Net Growth :自从上次Snapshot的增长量,是计算分配和释放的。
      -
      +
      Net Growth :自从上次Snapshot的增长量,是计算分配和释放的。
      +          
    • -
      -Total Growth :自从上次Snapshot的增长量,是计算的每一次分配的。
      -
      +
      Total Growth :自从上次Snapshot的增长量,是计算每一次分配的。
      +          
    • -
      -#Existing  :仍然存在的内存数。
      -
      +
      #Existing  :仍然存在的内存数。
      +          
    -

    Native Memory的辅助信息功能

    +

    Native Memory 的辅助信息功能

    -

    - 在Call Info和Native Memory的Tab页,点击选中某一行,右边画红线处会显示出该行调用栈的树结构信息。 -
    - GitHub Logo +

    在 Call Info 和 Native Memory 的 Tab 页,点击选中某一行,右边画红线处会显示出该行调用栈的树结构信息。
    + GitHub Logo

    -

    Native Memory详细显示的过滤功能

    +

    Native Memory 详细显示的过滤功能

    -

    - 点击下方的All Allocations可以对Allocation lifeSpan进行过滤,有三个选择:All Allocations,Created & - Existing,Created & Destroyed。 -
    - GitHub Logo +

    点击下方的 All Allocations 可以对 Allocation Lifespan 进行过滤,有三个选择:All + Allocations,Created & Existing,Created & Destroyed。
    + GitHub Logo

    • -
      - All Allocations:所有的内存。
      -
      +
       All Allocations:所有的内存。
      +          
    • -
      - Created & Existing:创建且存活的内存。
      -
      +
       Created & Existing:创建且被存活的内存。
      +          
    • -
      - Created & Destroyed: 创建且被销毁的内存。
      -
      -
    • -
    -

    - 点击下方的All Heap&Anonymous VM可以对内存类型进行过滤。 -
    - GitHub Logo -

    -
      +
       Created & Destroyed: 创建且被销毁的内存。
      +          
      + 点击下方的 All Heap&Anonymous 可以对内存类型进行过滤。
      + GitHub Logo
    • -
      -All Heap&AnonuymousVM:Heap和AnonuymousVM的总量。
      -
      +
      All Heap&Anonymous VM:Heap和Anonymous VM的总量。
      +          
    • -
      -All Heap:malloc分配的内存。
      -
      +
      All Heap:malloc分配的内存。
      +          
    • -
      -All Anonymous VM:mmap的匿名页。
      -
      -
    • +
      All Anonymous VM:mmap的匿名页。
      +          
      + 点击下方的 Mark Snapshot 可以在时间轴上打标签。出现小旗的标志,通过标注多个时间点。点击到 + Snapshot List 标签页可以看到各个时间点的内存的增长值。
      + GitHub Logo
    -

    - 点击下方的Mark Snapshot可以在时间轴上打标签。出现小旗的标志,通过标注多个时间点。点击到Snapshot - List标签页可以看到各个时间点的内存的增长值。 -
    - GitHub Logo -

    -

    Native Memory的火焰图功能

    - -

    - 火焰图的展示跟Callinfo的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称,栈的所在库名,地址,size大小,栈的个数。 -
    - GitHub Logo -

    -

    基于函数进行调用栈(单个或多个)选择后可以在时间轴上显示内存操作点

    - -

    - 点击火焰图函数时,触发火焰图点击中,显示调用栈中该函数出现在时间轴范围的分布情况。 -
    - GitHub Logo -

    -

    内存搜索大小写不敏感,上层火焰图的大小和总内存需要根据搜索内容动态调整

    - -

    - 执行搜索的关键字大小写不区分,搜索的函数的parent只显示搜索的children的大小之和,且可以与点选联动。 -

    -

    焦点函数火焰图详细展开:选中函数的全部调用栈展示

    - -

    - 点击调用栈某个函数,点击函数调用的函数对应铺满画布,点击函数的parent,显示以及绘制的大小变化为点击函数的大小,如下图点击OHOS::EglCoreInit()函数,会显示该函数的全部调用栈。 -
    - GitHub Logo -

    -

    搜索框支持表达式输入

    - -

    - 调用栈默认显示火焰图,新增搜索框表达式输入。表达式作用范围为nativehook统计与非统计模式。其中处理的均为Responsible - Library与Responsible Caller,其中Responsible Library,Responsible Caller表示从下往上非libc++ - musl的第一条调用栈的lib跟symbol,如下图所示,由于最后一条 [ operator new(unsigned long) ] - libc++.so为libc++.so的函数,固跳过,所以该条调用栈的Responsible Library为 - libhilog.so - ,Responsible Caller为OHOS::HiviewDFX::GetDomainLevel(unsigned int) 。 -
    - GitHub Logo -
    - 表达式说明:在InputFilter输入框可以进行搜索过滤和表达式过滤,其中表达式必须以@开头,英文括号包起所需要过滤的内容,每个括号必须包括 - (Responsible Library,Responsible Caller)匹配全量以*表示,否则认为该输入为搜索过滤。 -

    +

    Native Memory 的火焰图功能

    + +

    火焰图的展示跟 Call Info 的 tab 页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称,栈的所在库名,地址, + 大小,采集次数。
    + GitHub Logo

    +

    + 基于函数进行调用栈(单个或多个)选择后可以在时间轴上显示内存操作点

    + +

    点击火焰图函数时,触发火焰图点击,显示调用栈中该函数出现在时间轴范围的分布情况。
    + GitHub Logo

    +

    + 内存搜索大小写不敏感,上层火焰图的大小和总内存需要根据搜索内容动态调整

    + +

    执行搜索的关键字大小写不区分,搜索的函数的 parent 只显示搜索的 children + 的大小之和,且可以与点选联动。

    +

    焦点函数火焰图详细展开:选中函数的全部调用栈展示

    + +

    点击调用栈某个函数,点击函数调用的函数对应铺满画布,点击函数的 + parent,显示以及绘制的大小变化为点击函数的大小,如下图点击 OHOS::EglCoreInit()函数,会显示该函数的全部调用栈。
    + GitHub Logo

    +

    搜索框支持表达式输入

    + +

    调用栈默认会显示火焰图,新增搜索框表达式输入。表达式作用范围为 nativehook + 的统计与非统计模式。其中处理的为 Responsible Library 与 Responsible Caller,其中 Responsible + Library 和Responsible Caller 表示从下往上非 libc++ musl 的第一条调用栈的 lib 跟 + symbol,如下图所示,由于最后一条 [ operator new(unsigned long) ] libc++.so + 为 libc++.so 的函数,故跳过,所以该条调用栈的 Responsible Library + 为 libhilog.so,Responsible Caller 为 + OHOS::HiviewDFX::GetDomainLevel(unsigned int) 。
    + GitHub Logo

    +

    表达式说明: 在 InputFilter + 输入框可以进行搜索过滤和表达式过滤,其中表达式必须以@开头,英文括号包起所需要过滤的内容,每个括号必须包括 + (Responsible Library,Responsible Caller)匹配全量以*表示,否则认为该输入为搜索过滤。

    - - - - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    表达式含义
    表达式含义
    @(libquickjs tryalloc)只显示 Responsible Library为libquickjs 且Responsible Caller包含tryalloc的数据
    @(libquickjs *)只显示Responsible Library包含libquickjs的数据
    @(* tryalloc codec bitmapcache skYUV) - 只显示 Responsible Library为任意值 且Responsible Caller包含tryalloc或codec或bitmapcache或skYUV的数据 -
    @(libglobal *,*resourceManager) - 只显示Responsible Library包含libglobal且 Responsible Caller为任意值的数据 或 Responsible - Library为任意值,Responsible Caller包含resourceManager的数据 -
    @(/data/user *)只显示Responsible Library路径/data/user且symbol为任意值的数据
    - @( - mali.so - *,libGLES_mali.so *) - 只显示Responsible Library包含mali.so或者libGLES_mali.so的数据
    @(* PixelMap:ReadImageData)只显示Responsible Caller包含PixelMap:ReadImageData的数据
    @-(libark jsvm table)不显示Responsible Library包含libark且Responsible Caller包含jsvm或者table的数据
    - @-(librender picture, libskia picture) -
    -
    不显示Responsible Library包含librender或者libskia且Responsible Caller中包含picture的数据
    @-(libark *)不显示Responsible Library包含libark的数据
    @-(* table)不显示Responsible Caller中table的数据
    @(* table) - (libark *)只显示Responsible Caller包含table且Responsible Library不为libark的数据
    @(libquickjs tryalloc)只显示 Responsible Library 为 libquickjs 且 Responsible Caller 包含 tryalloc 的数据
    @(libquickjs *)只显示 Responsible Library 包含 libquickjs 的数据
    @(* tryalloc codec bitmapcache skYUV)只显示 Responsible Library 为任意值 且 Responsible Caller 包含 tryalloc 或 codec 或 + bitmapcache 或 skYUV 的数据 +
    @(libglobal *,*resourceManager)只显示 Responsible Library 包含 libglobal 且 Responsible Caller 为任意值的数据 或 + Responsible Library 为任意值,Responsible Caller 包含 resourceManager 的数据 +
    @(/data/user *)只显示 Responsible Library 路径/data/user 且 symbol 为任意值的数据
    @(mali.so *,libGLES_mali.so *)只显示 Responsible Library 包含 mali.so 或者 libGLES_mali.so + 的数据 +
    @(* PixelMap:ReadImageData)只显示 Responsible Caller 包含 PixelMap:ReadImageData 的数据
    @-(libark jsvm table)不显示 Responsible Library 包含 libark 且 Responsible Caller 包含 jsvm 或者 table 的数据 +
    @-(librender picture, libskia picture)
    不显示 Responsible Library 包含 librender 或者 libskia 且 Responsible Caller 中包含 + picture 的数据 +
    @-(libark *)不显示 Responsible Library 包含 libark 的数据
    @-(* table)不显示 Responsible Caller 中 table 的数据
    @(_ table) - (libark _)只显示 Responsible Caller 包含 table 且 Responsible Library 不为 libark 的数据
    -

    Native Memory数据统计功能

    +

    Native Memory 数据统计功能

    -

    - 选择Use Record Statistics和statistics interval配置项抓取的数据,只会显示Call Info的Tab页,Call - Info相关功能同上。 -
    - GitHub Logo +

    选择 Use Record Statistics 和 statistics interval 配置项抓取的数据,只会显示 + Call Info 的 Tab 页,Call Info 相关功能同上。
    + GitHub Logo

    -

    Native Memory多进程数据显示

    +

    Native Memory 多进程数据显示

    -

    - 前端可以支持多进程数据的展示,通过在tab页切换不同进程,可以显示不同进程的hook数据。 -
    - GitHub Logo +

    前端可以支持多进程数据的展示,通过在 tab 页切换不同进程,可以显示不同进程的 + hook 数据。
    + GitHub Logo

    diff --git a/ide/src/doc/quickstart_page_fault.html b/ide/src/doc/quickstart_page_fault.html index ef9c90c3915f38204c17b953a5a2853d10ed2763..594c1ca3e39666c59b743369dca769802374708a 100644 --- a/ide/src/doc/quickstart_page_fault.html +++ b/ide/src/doc/quickstart_page_fault.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,24 +776,19 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    + +

    页内存的抓取和展示说明

    页内存从page层面更深层次剖析应用程序的虚拟内存操作。

    页内存的抓取

    -

    页内存抓取配置参数

    +

    页内存抓取配置参数

    GitHub Logo @@ -825,7 +817,7 @@ Max Unwind Level:配置抓取调用栈的最大深度。

    再点击Record setting,在output file path输入文件名hiprofiler_data_ebpf.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    @@ -833,7 +825,7 @@ Max Unwind Level:配置抓取调用栈的最大深度。
    GitHub Logo

    -

    页内存展示说明

    +

    页内存展示说明

    抓取结束后页内存的trace会自动加载展示。 @@ -856,12 +848,12 @@ Max Unwind Level:配置抓取调用栈的最大深度。

  • -黄色区域:辅助信息(Callstack)。
    +黄色区域:辅助信息(Call Stack)。
     
  • -

    页内存泳道图展示

    +

    页内存泳道图展示

    页内存泳道图展示事件(Operation)发生的次数,每个事件都有持续时间,鼠标悬浮以10ms为区间进行次数统计。 @@ -872,7 +864,7 @@ Max Unwind Level:配置抓取调用栈的最大深度。
    GitHub Logo

    -

    页内存泳道图的框选功能

    +

    页内存泳道图的框选功能

    可以对泳道图进行框选,框选后在最下方的弹出层中会展示框选数据的统计表格,总共有三个tab页。 @@ -924,6 +916,10 @@ Max Duration:最大时长。
    GitHub Logo
    + Analysis的Tab页如图: +
    + GitHub Logo +
    Page Fault Calltree的Tab页如图:
    GitHub Logo @@ -943,7 +939,13 @@ Local:为该调用方法自身占用的CPU时间。

  • -Weight:调用方法的执行占比。
    +Weight:为该调用方法占用的CPU时间。
    +
    +
  • +
  • +
    +%:为该调用方法占用的CPU时间占比。
     
  • @@ -991,10 +993,10 @@ Size:内存大小。 > -

    页内存支持多种Options展示风格

    +

    页内存支持多种Options展示风格

    - 点击Page Fault Calltree的Tab页底部的Options,会有两个CheckBox复选框。 + 点击Page Fault Calltree的Tab页底部的Options,会有四个CheckBox复选框。
    GitHub Logo

    @@ -1011,8 +1013,18 @@ Hide System so:隐藏系统库文件。 +
  • +
    +Hide Event:隐藏事件。 
    +
    +
  • +
  • +
    +Hide Thread:隐藏线程。 
    +
    +
  • -

    页内存支持过滤调用栈调用次数的展示风格

    +

    页内存支持过滤调用栈调用次数的展示风格

    点击Page Fault Calltree的Tab页底部的Sample Count @@ -1020,7 +1032,7 @@ Hide System so:隐藏系统库文件。
    GitHub Logo

    -

    页内存功能的调用栈Group展示-数据分析支持剪裁功能

    +

    页内存功能的调用栈Group展示-数据分析支持剪裁功能

    GitHub Logo

      @@ -1028,42 +1040,42 @@ Hide System so:隐藏系统库文件。 裁剪Callstack,点击Callstack上一个节点符号,再点击底部Symbol Filter按钮,则该符号自动被裁剪掉,同时将该节点往下所有的Callstack内容裁剪掉。 -
    • 裁剪Library,点击Library Filter按钮,则该库文件符号下所有的子节点也被裁剪。
    • -
    • 点击Reset按钮,将恢复选中的裁剪内容。
    • +
    • 裁剪Library,点击Library上一个节点符号,再点击底部Library Filter按钮,则该符号自动被裁剪掉,同时将该节点往下所有的Callstack内容裁剪掉。
    • +
    • 先选中要恢复的内容,再点击Reset按钮,将恢复选中的裁剪内容。
    -

    页内存功能的调用栈Group展示支持按条件过滤

    +

    页内存功能的调用栈Group展示支持按条件过滤

    在Input Filter输入关键字,会显示出带有该关键字的展示信息。
    GitHub Logo

    -

    页内存辅助信息区展示调用栈

    +

    页内存辅助信息区展示调用栈

    当在详细信息区选择一个符号时,将展示与该符号相关的完整的调用栈。如下图的Heaviest Stack Trace:
    GitHub Logo

    -

    页内存的事件类型的过滤

    +

    页内存的事件类型的过滤

    通过选择类型事件进行过滤。
    GitHub Logo

    -

    页内存的火焰图功能

    +

    页内存的火焰图功能

    点击Page Fault Calltree左下角的柱状图的图标,会切换到火焰图页面。
    GitHub Logo
    - 进入到火焰图页面,火焰图的展示跟Callinfo的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称和Duration时长。 + 进入到火焰图页面,火焰图的展示跟Callinfo的tab页的调用栈显示一致,鼠标放到色块上,悬浮框可以显示调用栈名称、所属Lib库、函数地址、耗时及其占比。
    GitHub Logo
    - 鼠标左键火焰图,会进入下一级界面,右键回到上一级。 + 鼠标左键火焰图,会进入下一级界面,左键上级则返回上一级界面。
    GitHub Logo

    @@ -1071,10 +1083,9 @@ Hide System so:隐藏系统库文件。 diff --git a/ide/src/doc/quickstart_parsing_ability.html b/ide/src/doc/quickstart_parsing_ability.html index aa321fec32928296b071138990aecc7e097fe2d2..b495caf5a293832896040d6f78c036d57f5181ca 100644 --- a/ide/src/doc/quickstart_parsing_ability.html +++ b/ide/src/doc/quickstart_parsing_ability.html @@ -190,6 +190,7 @@ position: relative; padding: 1em 1px 1px 0.9em; } + pre[dl] .line-highlight-wrapper { position: absolute; top: 1px; @@ -234,12 +235,12 @@ top: auto; bottom: 0.5em; } + html body { line-height: 1.6; font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -569,10 +570,13 @@ white-space: pre; } } + .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -654,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -669,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -776,29 +776,24 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    + +

    Trace解析能力增强

    Trace解析能力增强主要是提高Trace的解析能力。

    -

    焦点问题trace切割,选择焦点trace,聚焦问题发生时间范围,单独打开

    +

    焦点问题trace切割,选择焦点trace,聚焦问题发生时间范围,单独打开

    焦点问题切割是将现有的trace加载到界面时,对指定时间进行框选,截取框选时间范围内的trace数据通过跳转的方式去打开新的trace界面,新界面的trace数据就是按照这段时间范围去切割的。如下图框选一段时间范围,点击右上方的小剪刀图标对框选时间范围数据进行剪切。
    GitHub Logo

    -

    超大trace分段打开,超大trace按照固定大小切割,分段打开显示

    +

    超大trace分段打开,超大trace按照固定大小切割,分段打开显示

    超大trace分段打开是对现有配置抓取的同一种时钟源数据源的。也就是配置命令下发的抓取有效。Htrace数据按照端侧切割的大小分成多个文件,并将不能切割的hiperf、ebpf、arkts的数据单独存储。IDE通过将这几种源文件数据存储在IndexedDB,并调用trace @@ -860,14 +855,14 @@ Single file max size: trace文件分割的大小。
    GitHub Logo

    -

    web端支持已打开的trace文件转换成systrace,并可下载

    +

    web端支持已打开的trace文件转换成systrace,并可下载

    已打开的trace界面,增加convert to systrace按钮,支持将htrace和row trace转为systrace。
    GitHub Logo

    -

    +

    tracestreamer离线执行sql和metrics语句,对标trace_processor_shell –q和—run-metrics

    @@ -886,10 +881,9 @@ Single file max size: trace文件分割的大小。 diff --git a/ide/src/doc/quickstart_schedulinganalysis.html b/ide/src/doc/quickstart_schedulinganalysis.html index 15bebb797230ab7b856257c33929b633417eaa1d..d5a807b6a031c01dcac20e5b1ccbe458e5eca1da 100644 --- a/ide/src/doc/quickstart_schedulinganalysis.html +++ b/ide/src/doc/quickstart_schedulinganalysis.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,35 +776,30 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -
    + +

    Scheduling analysis抓取和展示说明

    抓取和展示CPU调度分析,线程调度分析相关数据。

    Scheduling analysis的抓取

    -

    Scheduling analysis抓取界面配置说明

    +

    Scheduling analysis抓取界面配置说明

    打开Scheduling analysis开关抓取调度分析数据。同时请打开对应的Flags标记(Disabled切换为Enabled)。
    GitHub Logo

    -

    Scheduling analysis文件的抓取

    +

    Scheduling analysis文件的抓取

    点击Record setting,在output file path输入文件名hiprofiler_dataScheduling.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    @@ -818,7 +810,7 @@

    Scheduling analysis功能介绍

    将抓取的文件导入到smartperf工具查看。

    -

    CPU频点分析

    +

    CPU频点分析

    点击下拉列表框选择CPU Frequency,可以看到各核CPU的各频点持续时长的占比图,以颜色区分各频点。 @@ -910,7 +902,7 @@ duration:运行总时长。 > -

    CPU Idle分析

    +

    CPU Idle分析

    点击下拉列表框选择CPU Idle,可以看到各CPU的Idle的时长占比饼图,以颜色区分各Idle。 @@ -959,7 +951,7 @@ duration:运行总时长。 > -

    CPU Irq分析

    +

    CPU Irq分析

    点击下拉列表框选择CPU Irq,可以看到各CPU的Irq的时长占比饼图,以颜色区分。 @@ -1014,14 +1006,14 @@ duration:运行总时长。 > -

    CPU占用率显示

    +

    CPU占用率显示

    以表格显示各CPU的占用率。
    GitHub Logo

    -

    Top20线程大中小核占用率

    +

    Top20线程大中小核占用率

    选择Thread Analysis标签页,各个CPU通过勾选big或者middle或者small来设置CPU的分类。 @@ -1099,7 +1091,7 @@ cpu..(us):运行总时长(..代表cpu号)。 > -

    单个线程频点分布

    +

    单个线程频点分布

    点击单个线程频点分布的标签,通过在Thread Search选择线程,来展示单个线程的频点分布情况。 @@ -1138,7 +1130,7 @@ duration:运行时长。 > -

    Top20单次运行超长线程

    +

    Top20单次运行超长线程

    通过点击Top20单次运行超长线程标签,显示线程的单次运行时长来统计出单次运行时长最大的20个线程。 @@ -1189,7 +1181,7 @@ timestamp:时间戳信息。 > -

    Top20进程线程数

    +

    Top20进程线程数

    通过点击Top20进程线程数标签,显示线程数量最多的20个进程,以饼图和表格方式显示。 @@ -1222,7 +1214,7 @@ thread count:线程数量。 > -

    Top20切换次数线程

    +

    Top20切换次数线程

    通过点击Top20切换次数线程标签,显示切换次数最多的20个进程,以饼图和表格方式显示。 @@ -1271,10 +1263,9 @@ sched_switch count:切换次数。 diff --git a/ide/src/doc/quickstart_sdk.html b/ide/src/doc/quickstart_sdk.html index 192a2a98dd5de4c0ef72a4718e365d0f386ad6d2..cfbe2f494237225201da68dc04b82b080820c8c3 100644 --- a/ide/src/doc/quickstart_sdk.html +++ b/ide/src/doc/quickstart_sdk.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,24 +776,19 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    Sdk抓取

    抓取Sdk数据。

    -

    Sdk的抓取

    +

    Sdk的抓取

    -

    Sdk抓取配置参数

    +

    Sdk抓取配置参数

    打开Start Custom Config开关抓取Sdk数据。 @@ -807,10 +799,9 @@ diff --git a/ide/src/doc/quickstart_sql_metrics.html b/ide/src/doc/quickstart_sql_metrics.html index 8028347c183a280719444cda7b7ed7148e262e55..426e2306b1c14e2c004fd6086f6dbb3ede220288 100644 --- a/ide/src/doc/quickstart_sql_metrics.html +++ b/ide/src/doc/quickstart_sql_metrics.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,50 +776,45 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    Sql分析和Metrics说明

    Sql功能是方便使用者查询sql语句查看相关业务,Metrics是更高级别的查询接口,无需手动键入任何SQL语句,只需要选择定制好的查询接口,就能获得想要跟踪的结果。

    -

    Sql分析功能介绍

    +

    Sql分析功能介绍

    点击Query(SQL),输入需要查询的sql语句,如select * from process,可以看到进程表数据。
    GitHub Logo

    -

    Metrics功能介绍

    +

    Metrics功能介绍

    Metrics是更高级别的查询接口,无需手动键入任何SQL语句,只需要选择定制好的查询接口,就能获得想要跟踪的结果。

    -

    Metrics查询接口展示

    +

    Metrics查询接口展示

    如下图,查询接口在下拉框中,如选择trace_task_names,点击run,就能展示线程和进程相关数据。
    GitHub Logo

    -

    Info和stats功能

    +

    Info和stats功能

    点击Info and stats,能查看到meta表和stats表信息。
    GitHub Logo

    -

    Download功能

    +

    Download功能

    点击DownLoad按钮,会将在线抓取的文件下载到本地。 @@ -833,10 +825,9 @@ diff --git a/ide/src/doc/quickstart_systemtrace.html b/ide/src/doc/quickstart_systemtrace.html index b2e27b2ad2977012633d9f481d73b9ea82ee5409..71c4f9280e5bb7e8bfcb7dcaa6e17d8efd96c055 100644 --- a/ide/src/doc/quickstart_systemtrace.html +++ b/ide/src/doc/quickstart_systemtrace.html @@ -190,6 +190,7 @@ position: relative; padding: 1em 1px 1px 0.9em; } + pre[dl] .line-highlight-wrapper { position: absolute; top: 1px; @@ -234,12 +235,12 @@ top: auto; bottom: 0.5em; } + html body { line-height: 1.6; font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -569,10 +570,13 @@ white-space: pre; } } + .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -654,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -669,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -776,36 +776,31 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    web端加载trace说明

    从web端查看trace文件,进行性能检测的分析。

    -

    文件加载入口

    +

    文件加载入口

    将抓取的trace导入查看。
    - GitHub Logo + GitHub Logo

    说明:

    • Open trace file:导入离线trace文件入口。
    • -
    • Open long trace file:导入大文件入口。
    • +
    • Open long trace:导入大文件入口。
    • Record new trace:抓取新的trace文件入口。
    • Record template:抓取指定模块的trace入口。
    -

    导入trace文件后显示页面

    +

    导入trace文件后显示页面

    GitHub Logo @@ -814,15 +809,15 @@

    • - 操作说明:在当前页面可以通过键盘上的wasd四个键位操纵当前的时间轴进行缩放,w为放大,s为缩小,a为左移,d为右移。 + 操作说明:在当前页面可以通过键盘上的wasd四个键位操作当前的时间轴进行缩放,w为放大,s为缩小,a为左移,d为右移。
    -

    trace功能介绍

    +

    trace功能介绍

    trace模块从上往下主要展示时间轴、cpu使用率、cpu使用情况、进程间通讯数据的方法调用情况、进程、线程和方法调用情况。

    -

    时间轴和cpu使用率

    +

    时间轴和cpu使用率

    GitHub Logo @@ -833,13 +828,13 @@
    GitHub Logo
    - 在白色背景时间轴区域内可以点击后拖拽鼠标,可以对从鼠标按下到拖拽完成鼠标松开的区域内的数据进行筛选,高亮显示的部分为当前所选区域,如上图所示。 + 在白色背景时间轴区域内点击后拖拽鼠标,对从鼠标按下到拖拽完成鼠标松开的区域内的数据进行筛选,高亮显示的部分为当前所选区域,如上图所示。

    -

    cpu使用情况

    +

    cpu使用情况

    GitHub Logo

    - 如上图所示,当前抓取数据有4个cpu工作,前四组数据对应的是当前调用cpu的线程和对应的进程情况,以颜色作为区分。后四组数据则为cpu的使用频率信息。鼠标移动到相应的线程上还会将当前选中的进程信息全部置为高亮,其他的进程会置灰,如下图所示。 + 如上图所示,当前抓取数据有4个cpu工作,前四组数据对应的是当前调用cpu的线程和对应的进程情况,以颜色作为区分。后四组数据则为cpu的使用频率信息。鼠标移动到相应的线程,还会将该线程对应的进程全部置为高亮,同时其他的进程会置灰,如下图所示。
    GitHub Logo

    @@ -857,7 +852,7 @@
    GitHub Logo
    - CPU Usage的Tab页,主要显示了在框选时间区间内,该频率时间占比前三的信息。 + CPU Usage的Tab页,主要显示了在框选时间区间内,各个cpu频率时间占比前三的信息。
    GitHub Logo
    @@ -872,30 +867,30 @@ GitHub Logo
    Sched - Priority的Tab页,按优先级显示调度,显示框选范围内所有Running以及Running之前的Runnable线程的最小,最大,平均耗时。 + Priority的Tab页,按优先级大小显示调度,显示框选范围内所有Running以及Running之前的Runnable线程的数量,持续时长,最小,最大,平均耗时。
    GitHub Logo
    Thread States、Thread - Switches的2个Tab页,点击移动到某一行,鼠标会变成一个小手的标志,并且会高亮,点击一下,就会进入辅助信息界面,会将选中行的辅助信息展示出来,包括开始时间、进程、线程、线程状态、对应的CPU、优先级等信息如下图。 + Switches的2个Tab页,鼠标移动到某一行,鼠标会变成一个小手的标志,并且会高亮,点击一下,就会进入辅助信息界面,会将选中行的辅助信息展示出来,包括开始时间、进程、线程、线程状态、对应的CPU、优先级等信息如下图。
    GitHub Logo

    cpu使用情况的单选功能

    - 单选CPU使用情况数据会在选中的色块外层加上深色边框,能够突出当前选中色块,弹出层中会展示当前CPU上的进程名,线程名,开始时间的相对时间,开始时间的绝对时间,运行时长,线程结束状态信息。 + 单选CPU使用情况数据会在选中的色块外层加上深色边框,能够突出当前选中色块,弹出层中会展示当前CPU上的进程名,线程名,开始时间的相对时间,开始时间的绝对时间,运行时长,优先级,线程结束状态信息。
    GitHub Logo

    -

    线程唤醒关系树

    +

    线程唤醒关系树

    线程唤醒关系树功能是点击GetWakeupList会以链式结构和表格分别在泳道图和tab上展示线程的唤醒关系树信息,点击GetWakeupList按钮旁边的星号按钮可以对唤醒树对应的泳道图一键收藏,对优先级最低且运行时长最长或者运行时长最长的线程会以红色字体高亮显示。
    GitHub Logo

    -

    进程、线程和方法数据

    +

    进程、线程和方法数据

    下图是进程数据,左边部分展示进程名称和id,右边显示线程切换关系,线程的调用方法,进程间内存信息等。 @@ -965,7 +960,7 @@
    GitHub Logo

    -

    trace的其他功能

    +

    trace的其他功能

    小旗标志的功能

    @@ -992,7 +987,7 @@
    GitHub Logo

    -

    Tab页信息和泳道图可跳转(点击和框选场景,框选类似搜索)

    +

    Tab页信息和泳道图可跳转(点击和框选场景,框选类似搜索)

    泳道图高亮场景:框选Cpu Frequency 或者Cpu State泳道图后,弹出Cpu Frequency或Cpu State @@ -1010,7 +1005,7 @@
    GitHub Logo

    -

    M键测量功能

    +

    M键测量功能

    放大trace中的色块,选中色块,键盘按下M,会出现像标尺一样的形状。 @@ -1021,10 +1016,9 @@ diff --git a/ide/src/doc/quickstart_taskpool.html b/ide/src/doc/quickstart_taskpool.html index c4445358056c9d8c130450544d9920c0326f3311..d201910b149b0d00b15d7760f560c3ed0b59d52f 100644 --- a/ide/src/doc/quickstart_taskpool.html +++ b/ide/src/doc/quickstart_taskpool.html @@ -240,7 +240,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -572,9 +571,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -656,11 +657,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -671,7 +668,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -778,37 +775,32 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    TaskPool抓取和展示说明

    TaskPool分析模块主要展示应用程序使用taskpool时,任务的关联关系,任务调度开销和任务并发度分析情况,任务各阶段耗时情况,线程池的状态统计,队列任务数,任务是否超时。

    TaskPool的抓取

    -

    TaskPool的抓取配置参数

    +

    TaskPool的抓取配置参数

    打开Task pool开关抓取taskpool数据。同时请打开对应的Flags标记(Disabled切换为Enabled)。
    GitHub Logo

    -

    TaskPool展示说明

    +

    TaskPool展示说明

    将抓取的taskpool文件导入到smartperf中,查看任务的关联关系等信息。
    GitHub Logo

    -

    TaskPool的任务关联关系跟踪

    +

    TaskPool的任务关联关系跟踪

    任务关联关系就是根据任务的executeId,把一个taskpool任务的各个执行的函数调用栈连接起来,用于表示一个任务从开始分发到执行,再到最后任务结束的整个过程。 @@ -838,14 +830,14 @@ H:Task PerformTask End: taskId : 2, executeId : 2, performResult : Successful: > -

    TaskPool的并发度

    +

    TaskPool的并发度

    点选或者框选任务状态为执行会进行任务并发度展示,如图所示并发度是3。
    GitHub Logo

    -

    TaskPool泳道图的点选功能

    +

    TaskPool泳道图的点选功能

    点选taskpool的Slice,展示该taskpool信息的tab页。 @@ -878,7 +870,7 @@ depth:调用栈层级。 > -

    TaskPool泳道图的框选功能

    +

    TaskPool泳道图的框选功能

    框选taskpool的泳道图,展示Frames的tab页。 @@ -917,14 +909,14 @@ Return Time(ms):返回耗时(任务返回的结束时间 – 任务执行的 > -

    TaskPool的队列任务数和线程池里线程状态统计

    +

    TaskPool的队列任务数和线程池里线程状态统计

    GitHub Logo
    如上图,H:threadNum,H:runningThreadNum,H:idleThreadNum,H:timeoutThreadNum是线程池里线程状态统计,H:taskNum是队列任务数。

    -

    TaskPool的任务超时退出

    +

    TaskPool的任务超时退出

    在带有H:Thread Timeout Exit的调用栈的泳道图会采用黄色圆圈,中间为白色反叹号标记,代表任务超时退出。 @@ -935,10 +927,9 @@ Return Time(ms):返回耗时(任务返回的结束时间 – 任务执行的 diff --git a/ide/src/doc/quickstart_trace_streamer.html b/ide/src/doc/quickstart_trace_streamer.html index 3ca9d30ef055bdf32134ff76693a654c5f2e9b72..5676d805f5325b8dc5807621f1da3feaf6a39721 100644 --- a/ide/src/doc/quickstart_trace_streamer.html +++ b/ide/src/doc/quickstart_trace_streamer.html @@ -892,7 +892,7 @@ TraceStreamer在解析数据过程中,使用ipid(internal pid)唯一标识进 lightBackGround[i].style.backgroundColor = '#32373F'; } } - }); + }) \ No newline at end of file diff --git a/ide/src/doc/quickstart_web_record.html b/ide/src/doc/quickstart_web_record.html index 5ceae0794992b99d85422935134fb961ef57b89c..cde31b29cc99a78c501bcdbcf4c92e6ea99012ba 100644 --- a/ide/src/doc/quickstart_web_record.html +++ b/ide/src/doc/quickstart_web_record.html @@ -241,7 +241,6 @@ font-size: 16px; color: #333333; overflow: initial; - background-color: #ffffff; word-wrap: break-word; font-family: Helvetica; box-sizing: border-box; @@ -573,9 +572,11 @@ } .smartperf-preview { - width: 99%; + width: 68vw; height: 99%; box-sizing: border-box; + overflow: hidden; + background-color: #fff; } .smartperf-preview .pagebreak, @@ -657,11 +658,7 @@ html body[for='html-export']:not([dpm]) { position: relative; width: 99%; - height: 99%; - top: 1px; - left: 1px; - margin: 1px; - padding: 1px; + height: 99%;; overflow: auto; } @@ -672,7 +669,7 @@ @media screen and (min-width: 914px) { html body[for='html-export']:not([dpm]) .smartperf-preview { - padding: 2em calc(50% - 458px + 2em); + padding: 2em; } } @@ -779,22 +776,17 @@ } } - html body[for='html-export']:not([dpm]):not([hsst]) .smartperf-preview { - left: 50%; - transform: translateX(-50%); - } - html body[for='html-export']:not([dpm]):not([hsst]) .md-sidebar-toc { display: none; } - -

    + +

    web端抓取trace说明

    从web端抓取trace文件的配置和方法。

    -

    界面配置说明

    +

    界面配置说明

    GitHub Logo @@ -805,7 +797,7 @@

  • Record:trace抓取按钮。
  • Add HDC Device:连接设备。
  • -

    trace文件的在线抓取

    +

    trace文件的在线抓取

    点击Add HDC Device在弹出的框里选择HDC-配对,点击连接,连接设备。 @@ -839,7 +831,7 @@

    再点击Record setting,在output file path输入文件名hiprofiler_data_example.htrace,拖动滚动条设置buffer - size大小是64M,抓取时长是50s。 + size大小是64MB,抓取时长是50s。
    GitHub Logo
    @@ -859,10 +851,9 @@ diff --git a/ide/src/figures/AbilityMonitor/abilitycommand.jpg b/ide/src/figures/AbilityMonitor/abilitycommand.jpg index e1aa5372774340e5228fefd5b1c36bafd2a7bd02..33dda73f08e93972e5aa143bfbc094b86fbf825f 100644 Binary files a/ide/src/figures/AbilityMonitor/abilitycommand.jpg and b/ide/src/figures/AbilityMonitor/abilitycommand.jpg differ diff --git a/ide/src/figures/AbilityMonitor/abilityset.jpg b/ide/src/figures/AbilityMonitor/abilityset.jpg index 32c6a705d6934772354329bf17dcec883f5d5696..a407a87e073b3b938a706202f60efc1b25b3a671 100644 Binary files a/ide/src/figures/AbilityMonitor/abilityset.jpg and b/ide/src/figures/AbilityMonitor/abilityset.jpg differ diff --git a/ide/src/figures/AbilityMonitor/abilitysetting.jpg b/ide/src/figures/AbilityMonitor/abilitysetting.jpg index 7b10a98900ad422fe742481425f99b9e52f32fc5..0b9af09c3a296f7fd3b2905a47a90de8ef3a76bc 100644 Binary files a/ide/src/figures/AbilityMonitor/abilitysetting.jpg and b/ide/src/figures/AbilityMonitor/abilitysetting.jpg differ diff --git a/ide/src/figures/Allmemory/vgpuwindowdrag.jpg b/ide/src/figures/Allmemory/vgpuwindowdrag.jpg index e0b0ae1912ebd827bd924fb83bb46a4e3f205f64..ea1ba4e73ff59d526dbab1dcded8609721fa82c6 100644 Binary files a/ide/src/figures/Allmemory/vgpuwindowdrag.jpg and b/ide/src/figures/Allmemory/vgpuwindowdrag.jpg differ diff --git a/ide/src/figures/Bio/BioCalltree.jpg b/ide/src/figures/Bio/BioCalltree.jpg index ee3f25ddb028fbda43662b7baf976fc990407de8..2c2cd0db04f383900136cf9952942bee1c6770c2 100644 Binary files a/ide/src/figures/Bio/BioCalltree.jpg and b/ide/src/figures/Bio/BioCalltree.jpg differ diff --git a/ide/src/figures/Bio/BioOptions.jpg b/ide/src/figures/Bio/BioOptions.jpg index 80dd5a57e9f373cccf373c6b7fda9c3fc513ff15..0072e3b3c0e6c3b56c8bb3b80e4cb13e9cca7cb2 100644 Binary files a/ide/src/figures/Bio/BioOptions.jpg and b/ide/src/figures/Bio/BioOptions.jpg differ diff --git a/ide/src/figures/Bio/Biocounter.jpg b/ide/src/figures/Bio/Biocounter.jpg index c2eedd02185175fe09cd6c180fc3af8777aeb283..d89ad36c6d911cd33e019ba8fc42f0c9a6bbb7c1 100644 Binary files a/ide/src/figures/Bio/Biocounter.jpg and b/ide/src/figures/Bio/Biocounter.jpg differ diff --git a/ide/src/figures/Bio/Biodatamining.jpg b/ide/src/figures/Bio/Biodatamining.jpg index abc7a5dd5bc29966d066e8dacca88f0c6a974948..091888d714b1a84902d9c824aefb1ce3fc0cb651 100644 Binary files a/ide/src/figures/Bio/Biodatamining.jpg and b/ide/src/figures/Bio/Biodatamining.jpg differ diff --git a/ide/src/figures/Bio/Biofilter.jpg b/ide/src/figures/Bio/Biofilter.jpg index 851944c928003870a4693ecae15d08c30c17c50c..968bd97abc4432c0d3d3a9bd1591e9addbbd305c 100644 Binary files a/ide/src/figures/Bio/Biofilter.jpg and b/ide/src/figures/Bio/Biofilter.jpg differ diff --git a/ide/src/figures/Bio/Bioflame.jpg b/ide/src/figures/Bio/Bioflame.jpg index 592e6b343243a00ecdefc4aef63b7c6e5d5bc51b..90dcf11790ec9d0da72f7eb1a1e63df64a7da542 100644 Binary files a/ide/src/figures/Bio/Bioflame.jpg and b/ide/src/figures/Bio/Bioflame.jpg differ diff --git a/ide/src/figures/Bio/Bioflamelevel.jpg b/ide/src/figures/Bio/Bioflamelevel.jpg index 78d2f14c2ca40f20a231c7dc060a667f08356914..7e7388050866c5e7816b962491b48616adb7efea 100644 Binary files a/ide/src/figures/Bio/Bioflamelevel.jpg and b/ide/src/figures/Bio/Bioflamelevel.jpg differ diff --git a/ide/src/figures/Bio/Bioflameshow.jpg b/ide/src/figures/Bio/Bioflameshow.jpg index f7e8f9974ee4a6131e87f2164dde82009e2cf0a9..fd4617809f61fb3f60137e4816149f3073c1a14d 100644 Binary files a/ide/src/figures/Bio/Bioflameshow.jpg and b/ide/src/figures/Bio/Bioflameshow.jpg differ diff --git a/ide/src/figures/Bio/Bioheaviesttrace.jpg b/ide/src/figures/Bio/Bioheaviesttrace.jpg index e76b66303697967022de21c22e4b7bad1f2e1c93..69cb891f5e35da17dbc62de8f5a1a3ee5eec59f7 100644 Binary files a/ide/src/figures/Bio/Bioheaviesttrace.jpg and b/ide/src/figures/Bio/Bioheaviesttrace.jpg differ diff --git a/ide/src/figures/Bio/Bioinputfilter.jpg b/ide/src/figures/Bio/Bioinputfilter.jpg index 6d6e6b1a8b250e0eb01b5ba7882d2a0da8f00cc5..a291449f783fc90884f3701daaa2e07fac6ba61c 100644 Binary files a/ide/src/figures/Bio/Bioinputfilter.jpg and b/ide/src/figures/Bio/Bioinputfilter.jpg differ diff --git a/ide/src/figures/Bio/Biorecord.jpg b/ide/src/figures/Bio/Biorecord.jpg index d4aed0679233db239eb1b34cb06759d88d500399..db42d56e306c89475abbff7cab35e50b32192118 100644 Binary files a/ide/src/figures/Bio/Biorecord.jpg and b/ide/src/figures/Bio/Biorecord.jpg differ diff --git a/ide/src/figures/Bio/Biostatistics.jpg b/ide/src/figures/Bio/Biostatistics.jpg index 259a9bc8f77c6db6f5516b57b60ed27915406ff5..c0998a558b9d8d6b72e70c5f562541dc8317cbc7 100644 Binary files a/ide/src/figures/Bio/Biostatistics.jpg and b/ide/src/figures/Bio/Biostatistics.jpg differ diff --git a/ide/src/figures/Bio/Biosummary.jpg b/ide/src/figures/Bio/Biosummary.jpg index 9d102cd8d03af610d7fa905664401df8334cb539..00281fd2f146656ec044fbfec7c172f1a3ce391d 100644 Binary files a/ide/src/figures/Bio/Biosummary.jpg and b/ide/src/figures/Bio/Biosummary.jpg differ diff --git a/ide/src/figures/Bio/Biotimes.jpg b/ide/src/figures/Bio/Biotimes.jpg index 60cd75aca70a6d55a66a26f9bd766fbefe7c6f33..5ed852a42cd50aaaf8f899a1ee57cac477230e0c 100644 Binary files a/ide/src/figures/Bio/Biotimes.jpg and b/ide/src/figures/Bio/Biotimes.jpg differ diff --git a/ide/src/figures/Bio/hdc.jpg b/ide/src/figures/Bio/hdc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..836ba5c2edf390c5a1385a83dc68f63271731d69 Binary files /dev/null and b/ide/src/figures/Bio/hdc.jpg differ diff --git a/ide/src/figures/EBPF/Analysis.jpg b/ide/src/figures/EBPF/Analysis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d0608303115a042a104a3af3a6e0baae7cc94921 Binary files /dev/null and b/ide/src/figures/EBPF/Analysis.jpg differ diff --git a/ide/src/figures/EBPF/VMCalltree.jpg b/ide/src/figures/EBPF/VMCalltree.jpg index a8bcf0dbd3231bb8f62186234ac33ba31c36cb90..6cfc359ad3626e9dd0154561ba9fc53ef3f0bb37 100644 Binary files a/ide/src/figures/EBPF/VMCalltree.jpg and b/ide/src/figures/EBPF/VMCalltree.jpg differ diff --git a/ide/src/figures/EBPF/VMfilter.jpg b/ide/src/figures/EBPF/VMfilter.jpg index 8ac44d11f7861b8b180b0dbafce04279ef1ac89a..015af43b8405b3fd1a236bfa5b574f57c0fac944 100644 Binary files a/ide/src/figures/EBPF/VMfilter.jpg and b/ide/src/figures/EBPF/VMfilter.jpg differ diff --git a/ide/src/figures/EBPF/ebpf_bythread.jpg b/ide/src/figures/EBPF/ebpf_bythread.jpg index bac0e25fa0bc771e1e3f5f8e531742b2cffde100..2db0979d00418bc745e79100fde8619b76094914 100644 Binary files a/ide/src/figures/EBPF/ebpf_bythread.jpg and b/ide/src/figures/EBPF/ebpf_bythread.jpg differ diff --git a/ide/src/figures/EBPF/ebpfrecord.jpg b/ide/src/figures/EBPF/ebpfrecord.jpg index 706f7b8271eb363eeb2c93cc2be677176a21b32e..5eb7b517b2912f332f299afd80fef3425099cbff 100644 Binary files a/ide/src/figures/EBPF/ebpfrecord.jpg and b/ide/src/figures/EBPF/ebpfrecord.jpg differ diff --git a/ide/src/figures/EBPF/ebpfsummary.jpg b/ide/src/figures/EBPF/ebpfsummary.jpg index db5ddf667e1a0306d04dc55a004edfc92205fa42..c6d8f5bd207d8f194f5a41ebcd4727f032fe3125 100644 Binary files a/ide/src/figures/EBPF/ebpfsummary.jpg and b/ide/src/figures/EBPF/ebpfsummary.jpg differ diff --git a/ide/src/figures/EBPF/vmOptions.jpg b/ide/src/figures/EBPF/vmOptions.jpg index 9882c3cd4fd07bc256f76dc9d56a8df7cd3d6493..26f318392550939e46874d895215e1b9a860a69d 100644 Binary files a/ide/src/figures/EBPF/vmOptions.jpg and b/ide/src/figures/EBPF/vmOptions.jpg differ diff --git a/ide/src/figures/EBPF/vmcounter.jpg b/ide/src/figures/EBPF/vmcounter.jpg index 40119bd7d2daa113ff2fa2b798f12e5a2cf7d58a..4dc7979f70dd426405eab0c9d487505381b44070 100644 Binary files a/ide/src/figures/EBPF/vmcounter.jpg and b/ide/src/figures/EBPF/vmcounter.jpg differ diff --git a/ide/src/figures/EBPF/vmdatamining.jpg b/ide/src/figures/EBPF/vmdatamining.jpg index 5b2417582bf55e1352cb568438580d9cabce0d03..b90c0e089773cd12a0e7baed453044b890c4fdba 100644 Binary files a/ide/src/figures/EBPF/vmdatamining.jpg and b/ide/src/figures/EBPF/vmdatamining.jpg differ diff --git a/ide/src/figures/EBPF/vmflame.jpg b/ide/src/figures/EBPF/vmflame.jpg index 6681178216885068aa3e5d0a9987013746b91e5d..5ec9ddc80d00ff75caa3567a7d91713f780d494f 100644 Binary files a/ide/src/figures/EBPF/vmflame.jpg and b/ide/src/figures/EBPF/vmflame.jpg differ diff --git a/ide/src/figures/EBPF/vmflamelevel.jpg b/ide/src/figures/EBPF/vmflamelevel.jpg index 37b9b4f64420deeca9f587483e8ff4efffa5dd0f..b8723f559e8f6a13642c60535e88e3f312ab15c4 100644 Binary files a/ide/src/figures/EBPF/vmflamelevel.jpg and b/ide/src/figures/EBPF/vmflamelevel.jpg differ diff --git a/ide/src/figures/EBPF/vmflameshow.jpg b/ide/src/figures/EBPF/vmflameshow.jpg index a9cef6d91b3affcc951cbe090c5476e7c364aa6a..f115ac4cbbf7310707ee6560015479eafc4effae 100644 Binary files a/ide/src/figures/EBPF/vmflameshow.jpg and b/ide/src/figures/EBPF/vmflameshow.jpg differ diff --git a/ide/src/figures/EBPF/vmheaviesttrace.jpg b/ide/src/figures/EBPF/vmheaviesttrace.jpg index abb016ba8164506fc0a4b8b01889b052fbce5342..263313dfd8353f7cec60d576302fff6d948e1e1f 100644 Binary files a/ide/src/figures/EBPF/vmheaviesttrace.jpg and b/ide/src/figures/EBPF/vmheaviesttrace.jpg differ diff --git a/ide/src/figures/EBPF/vminputfilter.jpg b/ide/src/figures/EBPF/vminputfilter.jpg index 726051576941b38419465d02d72069c1f9de71c1..9b046c8082de0f532639830cad24b944779d6439 100644 Binary files a/ide/src/figures/EBPF/vminputfilter.jpg and b/ide/src/figures/EBPF/vminputfilter.jpg differ diff --git a/ide/src/figures/EBPF/vmstatistics.jpg b/ide/src/figures/EBPF/vmstatistics.jpg index f056cd5a267f550870943f079bdcbb717b957c6b..6eb060d1b7ecd941459b2725d16bea196668d70f 100644 Binary files a/ide/src/figures/EBPF/vmstatistics.jpg and b/ide/src/figures/EBPF/vmstatistics.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemCalltree.jpg b/ide/src/figures/FileSystem/FileSystemCalltree.jpg index 6e7e2de008c1e5d6b670e9d6109292fc1a21e10e..80eeb983ee91242a0f4416a7cb77fba0be3d9015 100644 Binary files a/ide/src/figures/FileSystem/FileSystemCalltree.jpg and b/ide/src/figures/FileSystem/FileSystemCalltree.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemdatamining.jpg b/ide/src/figures/FileSystem/FileSystemdatamining.jpg index dbcd816b0ac0db534f97f05d263e8aca4db12019..b6cd9665d3911dc9e37d0cc734c1cc7d853526c7 100644 Binary files a/ide/src/figures/FileSystem/FileSystemdatamining.jpg and b/ide/src/figures/FileSystem/FileSystemdatamining.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemevents.jpg b/ide/src/figures/FileSystem/FileSystemevents.jpg index 5914209c0352e4cb950f361af79fa2395fe9508f..dadc3e758e0efc58ae06cb6b19f2ab8eec7949bb 100644 Binary files a/ide/src/figures/FileSystem/FileSystemevents.jpg and b/ide/src/figures/FileSystem/FileSystemevents.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemflame.jpg b/ide/src/figures/FileSystem/FileSystemflame.jpg index d644c143e7a782d2a7e03708a589c2bc701d92d5..b07271f73f8cdf053efe834085df2f11cf5f0289 100644 Binary files a/ide/src/figures/FileSystem/FileSystemflame.jpg and b/ide/src/figures/FileSystem/FileSystemflame.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemflamelevel.jpg b/ide/src/figures/FileSystem/FileSystemflamelevel.jpg index 2cff0eeb107da9e4155944eca57590011ed8b34e..18fe5b6c5687f811067b5e4f1d6484ff2f1fa5fd 100644 Binary files a/ide/src/figures/FileSystem/FileSystemflamelevel.jpg and b/ide/src/figures/FileSystem/FileSystemflamelevel.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemflameshow.jpg b/ide/src/figures/FileSystem/FileSystemflameshow.jpg index b03f7b31ca17606e26768406a0effab4a3ec5cee..4f05381a690a701087f49ffd295f99a10db2b0dd 100644 Binary files a/ide/src/figures/FileSystem/FileSystemflameshow.jpg and b/ide/src/figures/FileSystem/FileSystemflameshow.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemheaviesttrace.jpg b/ide/src/figures/FileSystem/FileSystemheaviesttrace.jpg index 2644870c90be8fcaa7a8ecc370a35faacdee2534..67d728b3d92a5a83bbaca6441c60982443ed13d8 100644 Binary files a/ide/src/figures/FileSystem/FileSystemheaviesttrace.jpg and b/ide/src/figures/FileSystem/FileSystemheaviesttrace.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemhistory.jpg b/ide/src/figures/FileSystem/FileSystemhistory.jpg index 2cf792ddc44796d32114a4be2c4463c192a74b3e..b89b77f2a48342fd2cd05cbb593d159738bbabe2 100644 Binary files a/ide/src/figures/FileSystem/FileSystemhistory.jpg and b/ide/src/figures/FileSystem/FileSystemhistory.jpg differ diff --git a/ide/src/figures/FileSystem/FileSysteminputfilter.jpg b/ide/src/figures/FileSystem/FileSysteminputfilter.jpg index ec0965db18378980c4f63be7a812a19ded10aaa9..3700e76df914a87426549b497b61d7360404af01 100644 Binary files a/ide/src/figures/FileSystem/FileSysteminputfilter.jpg and b/ide/src/figures/FileSystem/FileSysteminputfilter.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemsamplecounter.jpg b/ide/src/figures/FileSystem/FileSystemsamplecounter.jpg index 666200868fce4b88495e1f3a95741ee84cf11ade..d573efdfeea7bbf7f4d88f0ade3c41c8394d1414 100644 Binary files a/ide/src/figures/FileSystem/FileSystemsamplecounter.jpg and b/ide/src/figures/FileSystem/FileSystemsamplecounter.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemsummary.jpg b/ide/src/figures/FileSystem/FileSystemsummary.jpg index b2e201cc6dca939ff309c5aca740bca190c07dd0..adcdb48e28c51a4bddb61433d7e859f10f18c967 100644 Binary files a/ide/src/figures/FileSystem/FileSystemsummary.jpg and b/ide/src/figures/FileSystem/FileSystemsummary.jpg differ diff --git a/ide/src/figures/FileSystem/FileSystemtimeslice.jpg b/ide/src/figures/FileSystem/FileSystemtimeslice.jpg index 570ada550e41b1850a01c55cc51444f2be922b2c..cee345f560056083749ba52e430bbb9fd1477671 100644 Binary files a/ide/src/figures/FileSystem/FileSystemtimeslice.jpg and b/ide/src/figures/FileSystem/FileSystemtimeslice.jpg differ diff --git a/ide/src/figures/FileSystem/filesystemfilter.jpg b/ide/src/figures/FileSystem/filesystemfilter.jpg index 39bffd42a0f6c667ad1aad05ee27b31c2782fa9b..15adf4b4241ea504837eba3ba68f907d4c0c9ae4 100644 Binary files a/ide/src/figures/FileSystem/filesystemfilter.jpg and b/ide/src/figures/FileSystem/filesystemfilter.jpg differ diff --git a/ide/src/figures/FileSystem/filesystemrecord.jpg b/ide/src/figures/FileSystem/filesystemrecord.jpg index f6130bb8c8c222bbd58b40d8a562575c07e1270e..08a4b30e79b5d2694efdae5db75b79c3f25b3ed2 100644 Binary files a/ide/src/figures/FileSystem/filesystemrecord.jpg and b/ide/src/figures/FileSystem/filesystemrecord.jpg differ diff --git a/ide/src/figures/Frame/frameset.jpg b/ide/src/figures/Frame/frameset.jpg index ef19dc8a8862f640a6bf2d63824a20dcd9dc6c0d..44023e2605e72f1b5592bfc9da52ea6f3d89c128 100644 Binary files a/ide/src/figures/Frame/frameset.jpg and b/ide/src/figures/Frame/frameset.jpg differ diff --git a/ide/src/figures/Frame/framesetting.jpg b/ide/src/figures/Frame/framesetting.jpg index 11b9586f41f8ed200522becc352c02a60477f89d..b7648259a335b690cd7ac098922f785bb5c3977b 100644 Binary files a/ide/src/figures/Frame/framesetting.jpg and b/ide/src/figures/Frame/framesetting.jpg differ diff --git a/ide/src/figures/HiSystemEvent/hisystemeventrecord.jpg b/ide/src/figures/HiSystemEvent/hisystemeventrecord.jpg index 8ef5587d40bf09e2325f5d696cd9761380ca21e5..9ae9a951633eed3b35632b2b3759da07e3bf8d76 100644 Binary files a/ide/src/figures/HiSystemEvent/hisystemeventrecord.jpg and b/ide/src/figures/HiSystemEvent/hisystemeventrecord.jpg differ diff --git a/ide/src/figures/ImportSo/Hiperf_import_Fuc.jpg b/ide/src/figures/ImportSo/Hiperf_import_Fuc.jpg index 7a6d41b2da5569b10db334e8e1070c39494d96cf..6815529375190533ce2bdfbe59bc90037ada805a 100644 Binary files a/ide/src/figures/ImportSo/Hiperf_import_Fuc.jpg and b/ide/src/figures/ImportSo/Hiperf_import_Fuc.jpg differ diff --git a/ide/src/figures/ImportSo/Hiperf_import_all.jpg b/ide/src/figures/ImportSo/Hiperf_import_all.jpg index 7ecdff2968f20cce3cf498a9f2c9a95a34219acc..3dbd611ed5946122dc9bb42f5374d012c9a5e5f3 100644 Binary files a/ide/src/figures/ImportSo/Hiperf_import_all.jpg and b/ide/src/figures/ImportSo/Hiperf_import_all.jpg differ diff --git a/ide/src/figures/ImportSo/Hiperf_import_lib.jpg b/ide/src/figures/ImportSo/Hiperf_import_lib.jpg index e72b2d7e00879fa60330be85d000b78ad0d30dec..dfe1b68c8baa5a8b28edae9423455cd6be7a5c0b 100644 Binary files a/ide/src/figures/ImportSo/Hiperf_import_lib.jpg and b/ide/src/figures/ImportSo/Hiperf_import_lib.jpg differ diff --git a/ide/src/figures/ImportSo/Hiperf_import_thread.jpg b/ide/src/figures/ImportSo/Hiperf_import_thread.jpg index 0c1712b5c00bf1a58b337e55ee47e10fb586b49d..94948d9c2a4de6e6a7b6b20779bcb85d898fa97a 100644 Binary files a/ide/src/figures/ImportSo/Hiperf_import_thread.jpg and b/ide/src/figures/ImportSo/Hiperf_import_thread.jpg differ diff --git a/ide/src/figures/ImportSo/Native_import_thread.jpg b/ide/src/figures/ImportSo/Native_import_thread.jpg new file mode 100644 index 0000000000000000000000000000000000000000..637dae5382b799cc51e3e20dcbd840a63ff75518 Binary files /dev/null and b/ide/src/figures/ImportSo/Native_import_thread.jpg differ diff --git a/ide/src/figures/Jsmemory/jsmemoryset.jpg b/ide/src/figures/Jsmemory/jsmemoryset.jpg index ad353a41ebd9148ecade30f0e4d087086fa96128..82039a395511ff50df5202a8ea721edeb6cac44e 100644 Binary files a/ide/src/figures/Jsmemory/jsmemoryset.jpg and b/ide/src/figures/Jsmemory/jsmemoryset.jpg differ diff --git a/ide/src/figures/Jsmemory/jsmemorysetting.jpg b/ide/src/figures/Jsmemory/jsmemorysetting.jpg index eaaab9d3b8fadbef4a4911f01513116da6041047..c605729caae0247885df43fcf0f521c1716b0646 100644 Binary files a/ide/src/figures/Jsmemory/jsmemorysetting.jpg and b/ide/src/figures/Jsmemory/jsmemorysetting.jpg differ diff --git a/ide/src/figures/Metrics/Sql.jpg b/ide/src/figures/Metrics/Sql.jpg index 24dcde8f9216b9ef5a8dc59af3a61371b09a29ca..b54ccbd45fc747fdff52a5e2dd63e6fc65c1d393 100644 Binary files a/ide/src/figures/Metrics/Sql.jpg and b/ide/src/figures/Metrics/Sql.jpg differ diff --git a/ide/src/figures/Metrics/download.jpg b/ide/src/figures/Metrics/download.jpg index 227a292968d3ddefe6ac0252a620ec36e179d2cd..ace05a9ba4ef525e609e7a51e04d96b68acddc33 100644 Binary files a/ide/src/figures/Metrics/download.jpg and b/ide/src/figures/Metrics/download.jpg differ diff --git a/ide/src/figures/NativeMemory/AllocationType.jpg b/ide/src/figures/NativeMemory/AllocationType.jpg index b4372e720d7f3e0786603dfb0c7a535483e232eb..a566958a71f8db6741c50e68b170d4b3286c64e7 100644 Binary files a/ide/src/figures/NativeMemory/AllocationType.jpg and b/ide/src/figures/NativeMemory/AllocationType.jpg differ diff --git a/ide/src/figures/NativeMemory/Analysis.png b/ide/src/figures/NativeMemory/Analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..fdcf3b33c3819a5a0851b7f007996a318ff0d32a Binary files /dev/null and b/ide/src/figures/NativeMemory/Analysis.png differ diff --git a/ide/src/figures/NativeMemory/CallInfo.jpg b/ide/src/figures/NativeMemory/CallInfo.jpg deleted file mode 100644 index 347a3106c492f364c24bab24a8996928c84ad853..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/NativeMemory/CallInfo.jpg and /dev/null differ diff --git a/ide/src/figures/NativeMemory/CallInfo.png b/ide/src/figures/NativeMemory/CallInfo.png new file mode 100644 index 0000000000000000000000000000000000000000..3df78eef485cb9a47d317687ff49af5859652bde Binary files /dev/null and b/ide/src/figures/NativeMemory/CallInfo.png differ diff --git a/ide/src/figures/NativeMemory/Generation.jpg b/ide/src/figures/NativeMemory/Generation.jpg index 91424c0d513ac85e677d0c114d3b8959f2f18520..d149eeb0cfbbb63150715adbb69469ebefb814f8 100644 Binary files a/ide/src/figures/NativeMemory/Generation.jpg and b/ide/src/figures/NativeMemory/Generation.jpg differ diff --git a/ide/src/figures/NativeMemory/NativeChart.jpg b/ide/src/figures/NativeMemory/NativeChart.jpg deleted file mode 100644 index adac97a1428ad42bd8a040a4f4656a2b69346f46..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/NativeMemory/NativeChart.jpg and /dev/null differ diff --git a/ide/src/figures/NativeMemory/NativeChart.png b/ide/src/figures/NativeMemory/NativeChart.png new file mode 100644 index 0000000000000000000000000000000000000000..6a5ce7795e9fb1339f9fb3f0909de5dab8256c19 Binary files /dev/null and b/ide/src/figures/NativeMemory/NativeChart.png differ diff --git a/ide/src/figures/NativeMemory/NativeMemory.jpg b/ide/src/figures/NativeMemory/NativeMemory.jpg deleted file mode 100644 index 4790f80f37bb4e3b146da8a65c344f56f9d7934a..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/NativeMemory/NativeMemory.jpg and /dev/null differ diff --git a/ide/src/figures/NativeMemory/NativeMemory.png b/ide/src/figures/NativeMemory/NativeMemory.png new file mode 100644 index 0000000000000000000000000000000000000000..4d6d144debe217518f1f5822efed8b3905b6d6e4 Binary files /dev/null and b/ide/src/figures/NativeMemory/NativeMemory.png differ diff --git a/ide/src/figures/NativeMemory/Snapshotlist.jpg b/ide/src/figures/NativeMemory/Snapshotlist.jpg deleted file mode 100644 index 126208381afb6229ed169c1fb00ed81490e954c9..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/NativeMemory/Snapshotlist.jpg and /dev/null differ diff --git a/ide/src/figures/NativeMemory/Snapshotlist.png b/ide/src/figures/NativeMemory/Snapshotlist.png new file mode 100644 index 0000000000000000000000000000000000000000..9508eef4eceefd85bdb8ece74e9524aace4cf342 Binary files /dev/null and b/ide/src/figures/NativeMemory/Snapshotlist.png differ diff --git a/ide/src/figures/NativeMemory/Statistics.jpg b/ide/src/figures/NativeMemory/Statistics.jpg deleted file mode 100644 index 466a3822cb995cc704323c89571e9dc5adf9d1ae..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/NativeMemory/Statistics.jpg and /dev/null differ diff --git a/ide/src/figures/NativeMemory/Statistics.png b/ide/src/figures/NativeMemory/Statistics.png new file mode 100644 index 0000000000000000000000000000000000000000..6331c741ad45a06bb22e78e5f0940094ae751aec Binary files /dev/null and b/ide/src/figures/NativeMemory/Statistics.png differ diff --git a/ide/src/figures/NativeMemory/lifespan.jpg b/ide/src/figures/NativeMemory/lifespan.jpg index f1976a4d15ea68334eff34cf60c21ffb9211c691..815fdc31c98cef0c8f4d8b3841659be3f82ad82d 100644 Binary files a/ide/src/figures/NativeMemory/lifespan.jpg and b/ide/src/figures/NativeMemory/lifespan.jpg differ diff --git a/ide/src/figures/NativeMemory/nativecallstack.jpg b/ide/src/figures/NativeMemory/nativecallstack.jpg deleted file mode 100644 index 18714303c76bb94aabb7d5a94ab95e15999152cf..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/NativeMemory/nativecallstack.jpg and /dev/null differ diff --git a/ide/src/figures/NativeMemory/nativecallstack.png b/ide/src/figures/NativeMemory/nativecallstack.png new file mode 100644 index 0000000000000000000000000000000000000000..2319d150831981252e7f576298fe6f78ab48f44a Binary files /dev/null and b/ide/src/figures/NativeMemory/nativecallstack.png differ diff --git a/ide/src/figures/NativeMemory/nativememoryAdvoption.jpg b/ide/src/figures/NativeMemory/nativememoryAdvoption.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9b7ad7434514fb399e4a7083a58e1942ac4e8098 Binary files /dev/null and b/ide/src/figures/NativeMemory/nativememoryAdvoption.jpg differ diff --git a/ide/src/figures/NativeMemory/nativememoryAdvoption.png b/ide/src/figures/NativeMemory/nativememoryAdvoption.png new file mode 100644 index 0000000000000000000000000000000000000000..96640a41d4596bad432887c97703d93a1d901eae Binary files /dev/null and b/ide/src/figures/NativeMemory/nativememoryAdvoption.png differ diff --git a/ide/src/figures/NativeMemory/nativememorycommand.jpg b/ide/src/figures/NativeMemory/nativememorycommand.jpg index 154238591488a130d63632180e6c973b03987ff5..6427b23fcb6279516bb08536044307f343e52a6a 100644 Binary files a/ide/src/figures/NativeMemory/nativememorycommand.jpg and b/ide/src/figures/NativeMemory/nativememorycommand.jpg differ diff --git a/ide/src/figures/NativeMemory/nativememoryset.jpg b/ide/src/figures/NativeMemory/nativememoryset.jpg deleted file mode 100644 index f536eb23db314c642530744d14833566eee2f572..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/NativeMemory/nativememoryset.jpg and /dev/null differ diff --git a/ide/src/figures/NativeMemory/nativememoryset.png b/ide/src/figures/NativeMemory/nativememoryset.png new file mode 100644 index 0000000000000000000000000000000000000000..f21e8d19551f58ee6970b7c188f409afbff8076f Binary files /dev/null and b/ide/src/figures/NativeMemory/nativememoryset.png differ diff --git a/ide/src/figures/NativeMemory/nativememorysetting.jpg b/ide/src/figures/NativeMemory/nativememorysetting.jpg deleted file mode 100644 index d0e96c7994f03b579f872ae0dd543dcdad73df22..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/NativeMemory/nativememorysetting.jpg and /dev/null differ diff --git a/ide/src/figures/NativeMemory/nativememorysetting.png b/ide/src/figures/NativeMemory/nativememorysetting.png new file mode 100644 index 0000000000000000000000000000000000000000..eef7a5929b6d2b4c44e74e59aa941057bf922bb6 Binary files /dev/null and b/ide/src/figures/NativeMemory/nativememorysetting.png differ diff --git a/ide/src/figures/OperationSkills/disimport.jpg b/ide/src/figures/OperationSkills/disimport.jpg new file mode 100644 index 0000000000000000000000000000000000000000..30970dbc076d94f4c6d37ce8a4d67529cde4f40d Binary files /dev/null and b/ide/src/figures/OperationSkills/disimport.jpg differ diff --git a/ide/src/figures/OperationSkills/distributeline.jpg b/ide/src/figures/OperationSkills/distributeline.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa1fa81c13f16a8ec6be21ad17e529df9a87c613 Binary files /dev/null and b/ide/src/figures/OperationSkills/distributeline.jpg differ diff --git a/ide/src/figures/OperationSkills/distributetab.jpg b/ide/src/figures/OperationSkills/distributetab.jpg new file mode 100644 index 0000000000000000000000000000000000000000..afe84e3020b3fccc16d5119547c758619a148873 Binary files /dev/null and b/ide/src/figures/OperationSkills/distributetab.jpg differ diff --git a/ide/src/figures/OperationSkills/distributetrace.jpg b/ide/src/figures/OperationSkills/distributetrace.jpg new file mode 100644 index 0000000000000000000000000000000000000000..26b2a6ad39a3d05899e3c289164dc9e2be2e07c7 Binary files /dev/null and b/ide/src/figures/OperationSkills/distributetrace.jpg differ diff --git a/ide/src/figures/Schedulinganalysis/Top20Threadduration.jpg b/ide/src/figures/Schedulinganalysis/Top20Threadduration.jpg index 077fc47358044518b0f22b868f4413ebcda37a5c..a2fb15d8384a0c9a344d08feadde327e14dd9da9 100644 Binary files a/ide/src/figures/Schedulinganalysis/Top20Threadduration.jpg and b/ide/src/figures/Schedulinganalysis/Top20Threadduration.jpg differ diff --git a/ide/src/figures/Schedulinganalysis/Top20Threadnum.jpg b/ide/src/figures/Schedulinganalysis/Top20Threadnum.jpg index 87c07c29eaded212e8ecd7833a3fa7c2285eac1a..fce3b65384a44a28805a7f41a2616843729e47a1 100644 Binary files a/ide/src/figures/Schedulinganalysis/Top20Threadnum.jpg and b/ide/src/figures/Schedulinganalysis/Top20Threadnum.jpg differ diff --git a/ide/src/figures/Schedulinganalysis/scheduset.jpg b/ide/src/figures/Schedulinganalysis/scheduset.jpg index ef19dc8a8862f640a6bf2d63824a20dcd9dc6c0d..fd3978e3fe1f2d8693551d96cef25730fa27cb01 100644 Binary files a/ide/src/figures/Schedulinganalysis/scheduset.jpg and b/ide/src/figures/Schedulinganalysis/scheduset.jpg differ diff --git a/ide/src/figures/Schedulinganalysis/schedusetting.jpg b/ide/src/figures/Schedulinganalysis/schedusetting.jpg index 3d977ff703d8c44045172553ee3da3444c7f61ef..3cec4ebd9e7e3bf654b596e59791bd8850e3da5a 100644 Binary files a/ide/src/figures/Schedulinganalysis/schedusetting.jpg and b/ide/src/figures/Schedulinganalysis/schedusetting.jpg differ diff --git a/ide/src/figures/Web/M.jpg b/ide/src/figures/Web/M.jpg index ce0f3a70467df39d5828d926e75ee511427c44f9..4032676bd0ddfcf852f0d06454842564c095831e 100644 Binary files a/ide/src/figures/Web/M.jpg and b/ide/src/figures/Web/M.jpg differ diff --git a/ide/src/figures/Web/Singe_loop.jpg b/ide/src/figures/Web/Singe_loop.jpg index 18f580d0b0c7695b281e168836fa9bd51bb275be..aa81b51857ae23e33f167385adc994340b0843d6 100644 Binary files a/ide/src/figures/Web/Singe_loop.jpg and b/ide/src/figures/Web/Singe_loop.jpg differ diff --git a/ide/src/figures/Web/Tabskill.jpg b/ide/src/figures/Web/Tabskill.jpg index 2fa1182218179ac7f7505a35ccedcb936dc50605..3c68cb079ad841a4069b3247660f05df9002d176 100644 Binary files a/ide/src/figures/Web/Tabskill.jpg and b/ide/src/figures/Web/Tabskill.jpg differ diff --git a/ide/src/figures/Web/cpu.jpg b/ide/src/figures/Web/cpu.jpg index 380844847cbee92fb55ee3de61b31e91d8920930..f6c584f3e490190c35f09bbc5f0b593b2e8c78d1 100644 Binary files a/ide/src/figures/Web/cpu.jpg and b/ide/src/figures/Web/cpu.jpg differ diff --git a/ide/src/figures/Web/cpubythread.jpg b/ide/src/figures/Web/cpubythread.jpg index e90123157395d53a00380a2a93ace64a57a625e4..3fb57cbeadd984a3d6f1e1dadd2c1744a0ebfb19 100644 Binary files a/ide/src/figures/Web/cpubythread.jpg and b/ide/src/figures/Web/cpubythread.jpg differ diff --git a/ide/src/figures/Web/highlit.jpg b/ide/src/figures/Web/highlit.jpg index b1510be13e026713af3008f9012bda4686dcb1f1..f232df49081c83817e9af94ff6dcf4226eb21052 100644 Binary files a/ide/src/figures/Web/highlit.jpg and b/ide/src/figures/Web/highlit.jpg differ diff --git a/ide/src/figures/Web/opentrace.jpg b/ide/src/figures/Web/opentrace.jpg deleted file mode 100644 index 72d65cd6da7325f4f80b7e786e14e952ffc15e3a..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/Web/opentrace.jpg and /dev/null differ diff --git a/ide/src/figures/Web/opentrace.png b/ide/src/figures/Web/opentrace.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0dd8479bf1ce10b6e7ed01393ddab83f142950 Binary files /dev/null and b/ide/src/figures/Web/opentrace.png differ diff --git a/ide/src/figures/Web/search.jpg b/ide/src/figures/Web/search.jpg index b627aacd2fc3f514955945cbe2ded31a5eb8ef8f..4ebd2f95346470b1ae44a3f58e4162e9a557b9a2 100644 Binary files a/ide/src/figures/Web/search.jpg and b/ide/src/figures/Web/search.jpg differ diff --git a/ide/src/figures/Web/searchcallstack.jpg b/ide/src/figures/Web/searchcallstack.jpg index cbc35743df82df6b22399d20477fc6b0782649d3..ccf92ae4f8a6b292e3bc2b9e37fdbe67dd3db64b 100644 Binary files a/ide/src/figures/Web/searchcallstack.jpg and b/ide/src/figures/Web/searchcallstack.jpg differ diff --git a/ide/src/figures/Web/threadselect.jpg b/ide/src/figures/Web/threadselect.jpg index 06906e063de93c3df787d64eb0999b16e3afb934..356408dc844962109742858ca111e06b0911d947 100644 Binary files a/ide/src/figures/Web/threadselect.jpg and b/ide/src/figures/Web/threadselect.jpg differ diff --git a/ide/src/figures/Web/threadstates.jpg b/ide/src/figures/Web/threadstates.jpg index 964136bfc4139104bb27580d1c831438f2a28e19..dc355d49cf03e224faaf77a75dcae7a4c679d422 100644 Binary files a/ide/src/figures/Web/threadstates.jpg and b/ide/src/figures/Web/threadstates.jpg differ diff --git a/ide/src/figures/Web/time.jpg b/ide/src/figures/Web/time.jpg index b1ce34575cbb2c294251ba56fe31de12215012d4..8ad2ff6578134a82dcb33e74bf7d965675856095 100644 Binary files a/ide/src/figures/Web/time.jpg and b/ide/src/figures/Web/time.jpg differ diff --git a/ide/src/figures/Web/trace.jpg b/ide/src/figures/Web/trace.jpg index 8cd0df9b8bfc37483d25fa84af1725611712535a..6d2d9ee6f6f217830ce94851bcada0c2dca55cb3 100644 Binary files a/ide/src/figures/Web/trace.jpg and b/ide/src/figures/Web/trace.jpg differ diff --git a/ide/src/figures/arkts/cpuprofilerconfig.jpg b/ide/src/figures/arkts/cpuprofilerconfig.jpg index 1bc9ac5a1250212568c7f66314e1cdcac0c0bdf5..069f8f67f5f9c4581b765afe8152f0abb9513c54 100644 Binary files a/ide/src/figures/arkts/cpuprofilerconfig.jpg and b/ide/src/figures/arkts/cpuprofilerconfig.jpg differ diff --git a/ide/src/figures/hdc/Device.jpg b/ide/src/figures/hdc/Device.jpg index e8174d7d6ff5e50b7d6623c091ccade8bc85c8b2..12c4f5b85af49281778d7bed7565a50e0bdcb1b8 100644 Binary files a/ide/src/figures/hdc/Device.jpg and b/ide/src/figures/hdc/Device.jpg differ diff --git a/ide/src/figures/hdc/Schedulingdetails.jpg b/ide/src/figures/hdc/Schedulingdetails.jpg index 27d3dc9354922634b3dea53a956bf141b202f652..d406c8bc05c0528cc50efa41d6e426cf097ab75b 100644 Binary files a/ide/src/figures/hdc/Schedulingdetails.jpg and b/ide/src/figures/hdc/Schedulingdetails.jpg differ diff --git a/ide/src/figures/hdc/examplerecord.jpg b/ide/src/figures/hdc/examplerecord.jpg index ccfb6b35eba8903e4c25b1b562919f481e34cc6e..0359ee12ec7b52c38e3acdb3dc274547d635d17f 100644 Binary files a/ide/src/figures/hdc/examplerecord.jpg and b/ide/src/figures/hdc/examplerecord.jpg differ diff --git a/ide/src/figures/hdc/hdc.jpg b/ide/src/figures/hdc/hdc.jpg index 68920afca2ae0b4452174c06367d94daa5fd929d..836ba5c2edf390c5a1385a83dc68f63271731d69 100644 Binary files a/ide/src/figures/hdc/hdc.jpg and b/ide/src/figures/hdc/hdc.jpg differ diff --git a/ide/src/figures/hdc/hdcfile.jpg b/ide/src/figures/hdc/hdcfile.jpg index d5d56f9abdab6f8ce697daaf82a8c0449f909c82..18ee3677f119314fa663a005755e3ff9cf829694 100644 Binary files a/ide/src/figures/hdc/hdcfile.jpg and b/ide/src/figures/hdc/hdcfile.jpg differ diff --git a/ide/src/figures/hiprofilercmd/Scheduling.jpg b/ide/src/figures/hiprofilercmd/Scheduling.jpg deleted file mode 100644 index 725d7f6588e32949847d5def5a1e24dbe874ee2b..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/hiprofilercmd/Scheduling.jpg and /dev/null differ diff --git a/ide/src/figures/hiprofilercmd/Scheduling.png b/ide/src/figures/hiprofilercmd/Scheduling.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffa25493c83c0070b7f0d5f385ab9c5b5d21262 Binary files /dev/null and b/ide/src/figures/hiprofilercmd/Scheduling.png differ diff --git a/ide/src/figures/hiprofilercmd/systraceconfig.jpg b/ide/src/figures/hiprofilercmd/systraceconfig.jpg index 3d3fabe97909c1f9895c0c021c24e1a6ed16b303..0a5015ecfadce177b26afaa84258a28c95d210f0 100644 Binary files a/ide/src/figures/hiprofilercmd/systraceconfig.jpg and b/ide/src/figures/hiprofilercmd/systraceconfig.jpg differ diff --git a/ide/src/figures/hiprofilercmd/tracesetting.jpg b/ide/src/figures/hiprofilercmd/tracesetting.jpg deleted file mode 100644 index e490d6a13a5c7ad743717924312b2c0c9b3fd86a..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/hiprofilercmd/tracesetting.jpg and /dev/null differ diff --git a/ide/src/figures/hiprofilercmd/tracesetting.png b/ide/src/figures/hiprofilercmd/tracesetting.png new file mode 100644 index 0000000000000000000000000000000000000000..708a3e3e48a7918dd1ef2be90c8fa6091972b606 Binary files /dev/null and b/ide/src/figures/hiprofilercmd/tracesetting.png differ diff --git a/ide/src/figures/perf/Options.jpg b/ide/src/figures/perf/Options.jpg index 5af18c3ec43c67b590da4523cb5dd6bab8f69825..03d7f8599eb22226f5dba56996b4c2732bd5449f 100644 Binary files a/ide/src/figures/perf/Options.jpg and b/ide/src/figures/perf/Options.jpg differ diff --git a/ide/src/figures/perf/PerfProfile.jpg b/ide/src/figures/perf/PerfProfile.jpg index 2baef6afffc3ba6b1901deb066115c7613bb4bb0..198b990976e6c7fb8001602e64906db9451111bc 100644 Binary files a/ide/src/figures/perf/PerfProfile.jpg and b/ide/src/figures/perf/PerfProfile.jpg differ diff --git a/ide/src/figures/perf/Samplelist.jpg b/ide/src/figures/perf/Samplelist.jpg index 6931c510d32f203f4206855947d2e5b2be46de01..e323b9810960c9ccc888880fa5a5aac34699d9cb 100644 Binary files a/ide/src/figures/perf/Samplelist.jpg and b/ide/src/figures/perf/Samplelist.jpg differ diff --git a/ide/src/figures/perf/callstack.jpg b/ide/src/figures/perf/callstack.jpg index fbcc33cf142a373fc381be32a1636b80096f7878..2f3512cea3d58c71b961aa777b775fc4849d69d5 100644 Binary files a/ide/src/figures/perf/callstack.jpg and b/ide/src/figures/perf/callstack.jpg differ diff --git a/ide/src/figures/perf/chart.jpg b/ide/src/figures/perf/chart.jpg index c17758ab78a2fd465bed0c13eeb84ad9e95fe588..f092a3e95caa5e353f4b06d6a221b7ec531502b3 100644 Binary files a/ide/src/figures/perf/chart.jpg and b/ide/src/figures/perf/chart.jpg differ diff --git a/ide/src/figures/perf/cpuandthreadrow.jpg b/ide/src/figures/perf/cpuandthreadrow.jpg index abc00251b23238fd4643ec21a1f1b36e02055192..3143b94b37167304cb0deffb3200ff903a978b15 100644 Binary files a/ide/src/figures/perf/cpuandthreadrow.jpg and b/ide/src/figures/perf/cpuandthreadrow.jpg differ diff --git a/ide/src/figures/perf/datamining.jpg b/ide/src/figures/perf/datamining.jpg index 20d73817c0e33b2ea80960d79903c84c9baa498c..f5b272925ff1050dd542b73d833507bb29ce1fc5 100644 Binary files a/ide/src/figures/perf/datamining.jpg and b/ide/src/figures/perf/datamining.jpg differ diff --git a/ide/src/figures/perf/flame.jpg b/ide/src/figures/perf/flame.jpg index 0a270ec83a9918a2286183210821460f0455ded8..e4dc388411d3e4d394ce63bd7674ff3295f3651d 100644 Binary files a/ide/src/figures/perf/flame.jpg and b/ide/src/figures/perf/flame.jpg differ diff --git a/ide/src/figures/perf/flameshow.jpg b/ide/src/figures/perf/flameshow.jpg index cc80933cbe5c11b5f667c4aece7d2c0cbb7b4942..fa459bd6fa2d1e4150040acc61f7573c5d9f1bc5 100644 Binary files a/ide/src/figures/perf/flameshow.jpg and b/ide/src/figures/perf/flameshow.jpg differ diff --git a/ide/src/figures/perf/heaviesttrace1.jpg b/ide/src/figures/perf/heaviesttrace1.jpg index d390a8531441fd474bd09226820e1c56ed87e36a..5a598ad394cd90af8bf62d89bba902b4d2e54159 100644 Binary files a/ide/src/figures/perf/heaviesttrace1.jpg and b/ide/src/figures/perf/heaviesttrace1.jpg differ diff --git a/ide/src/figures/perf/inputfilter.jpg b/ide/src/figures/perf/inputfilter.jpg index a923053749c182d66b27047add93e18f18318cf7..37077de445c91a85bb8764a101883aba172e3e0b 100644 Binary files a/ide/src/figures/perf/inputfilter.jpg and b/ide/src/figures/perf/inputfilter.jpg differ diff --git a/ide/src/figures/perf/perf_analysisjump.jpg b/ide/src/figures/perf/perf_analysisjump.jpg index 737c3dac3bd51180e834300709aa80a60f8e2f4c..30ec8503670cd74a87d41d1eb22dc4fdc8eaac36 100644 Binary files a/ide/src/figures/perf/perf_analysisjump.jpg and b/ide/src/figures/perf/perf_analysisjump.jpg differ diff --git a/ide/src/figures/perf/perf_hide.jpg b/ide/src/figures/perf/perf_hide.jpg index bdd6512ee069ff8b91f18f28189c33378aff11ba..d17abf9b686f0852e15f2fe9f4a8d2738c943e78 100644 Binary files a/ide/src/figures/perf/perf_hide.jpg and b/ide/src/figures/perf/perf_hide.jpg differ diff --git a/ide/src/figures/perf/perf_jumpframe.jpg b/ide/src/figures/perf/perf_jumpframe.jpg index d7bf38c1983d47d7ec77b156fe0bcd481b30d64c..3cd36fc20f0adc8b5f248d03ef97a8ac1fb7815b 100644 Binary files a/ide/src/figures/perf/perf_jumpframe.jpg and b/ide/src/figures/perf/perf_jumpframe.jpg differ diff --git a/ide/src/figures/perf/perfset.jpg b/ide/src/figures/perf/perfset.jpg index 3032dac77c2d5a53ccab6c8634fdf4933fa82efe..a4855f897f98bb6462e64626326cfbb4434b9cdb 100644 Binary files a/ide/src/figures/perf/perfset.jpg and b/ide/src/figures/perf/perfset.jpg differ diff --git a/ide/src/figures/perf/perfsetting.jpg b/ide/src/figures/perf/perfsetting.jpg index 35de22f253d8143b2e9285a8dec4f245feb95fe9..169ab5173bac443ac27304db44193da7ff93d698 100644 Binary files a/ide/src/figures/perf/perfsetting.jpg and b/ide/src/figures/perf/perfsetting.jpg differ diff --git a/ide/src/figures/perf/samplecounter.jpg b/ide/src/figures/perf/samplecounter.jpg index 3a32db0363da5cb6f6e3eca97e70f781f55e7069..b5539821824c622fa87f0d289e97d67b54847ba2 100644 Binary files a/ide/src/figures/perf/samplecounter.jpg and b/ide/src/figures/perf/samplecounter.jpg differ diff --git a/ide/src/figures/perf/showevent.jpg b/ide/src/figures/perf/showevent.jpg index d9ae4daf4fe2c3261bd4b29545937f003b553376..7822763f9516bb5a1ab74c027c24accd8ceaafc8 100644 Binary files a/ide/src/figures/perf/showevent.jpg and b/ide/src/figures/perf/showevent.jpg differ diff --git a/ide/src/figures/perf/summary.jpg b/ide/src/figures/perf/summary.jpg index 594d28fba25ab4f038a194d1804292fb9cb40c86..4bb4e32fa0311bbd5be7135c520e1e394ec5b547 100644 Binary files a/ide/src/figures/perf/summary.jpg and b/ide/src/figures/perf/summary.jpg differ diff --git a/ide/src/figures/traceStreamer/db_hisys_event.png b/ide/src/figures/traceStreamer/db_hisys_event.png index 215265182de684f1b4a31fd7158309f8c7532053..5d11959408d51c4d138e22fedb0489fe9ec96bed 100644 Binary files a/ide/src/figures/traceStreamer/db_hisys_event.png and b/ide/src/figures/traceStreamer/db_hisys_event.png differ diff --git a/ide/src/figures/traceStreamer/dump_and_mem.png b/ide/src/figures/traceStreamer/dump_and_mem.png index 2c3f59eef7476de91cafb8f59832c93fe4117e51..28ceec2db96cacef83c2fc79cee990ed9f80434d 100644 Binary files a/ide/src/figures/traceStreamer/dump_and_mem.png and b/ide/src/figures/traceStreamer/dump_and_mem.png differ diff --git a/ide/src/figures/traceStreamer/frames.jpg b/ide/src/figures/traceStreamer/frames.jpg deleted file mode 100644 index b0cd54de43e8ca22de9e33fe19aaa0800bec3ef7..0000000000000000000000000000000000000000 Binary files a/ide/src/figures/traceStreamer/frames.jpg and /dev/null differ diff --git a/ide/src/figures/traceStreamer/frames.png b/ide/src/figures/traceStreamer/frames.png new file mode 100644 index 0000000000000000000000000000000000000000..0855f36016ecd64aad0a1f374b618338a6d99c6b Binary files /dev/null and b/ide/src/figures/traceStreamer/frames.png differ diff --git a/ide/src/figures/traceStreamer/perf.png b/ide/src/figures/traceStreamer/perf.png index 9fc88ad255cece0040093392329e639e261c8bd9..1ce6be71bb76f5b90f8c2577f494c92557c52d22 100644 Binary files a/ide/src/figures/traceStreamer/perf.png and b/ide/src/figures/traceStreamer/perf.png differ diff --git a/ide/src/hdc/HdcDeviceManager.ts b/ide/src/hdc/HdcDeviceManager.ts index 5181ffafd6a37054dd6e392eaf465024eddee4f3..55b6e54d6ef8acc7801cccefbde789f24cd4ee4f 100644 --- a/ide/src/hdc/HdcDeviceManager.ts +++ b/ide/src/hdc/HdcDeviceManager.ts @@ -133,8 +133,11 @@ export class HdcDeviceManager { * Execute shell on the currently connected device and return the result as a string * * @param cmd cmd + * @param isSkipResult isSkipResult + * @param shellResultHandleFun shellResultHandleFun */ - public static async shellResultAsString(cmd: string, isSkipResult: boolean): Promise { + public static async shellResultAsString(cmd: string, isSkipResult: boolean, shellResultHandleFun?: Function): + Promise { if (this.currentHdcClient) { const hdcStream = new HdcStream(this.currentHdcClient, false); await hdcStream.DoCommand(cmd); @@ -151,7 +154,11 @@ export class HdcDeviceManager { await hdcStream.closeStream(); return Promise.resolve('The device is abnormal'); } - result += dataMessage.getDataToString(); + let dataResult = dataMessage.getDataToString(); + result += dataResult; + if (shellResultHandleFun && cmd.endsWith('CONFIG')) { + shellResultHandleFun(dataResult); + } } await hdcStream.closeStream(); await hdcStream.DoCommandRemote(new FormatCommand(HdcCommand.CMD_KERNEL_CHANNEL_CLOSE, '0', false)); @@ -186,57 +193,53 @@ export class HdcDeviceManager { public static startShell( resultCallBack: (res: DataMessage) => void ): ((keyboardEvent: KeyboardEvent | string) => void | undefined) | undefined { - if (!this.currentHdcClient) { - return; - } - const hdcShellStream = new HdcStream(this.currentHdcClient, false); - this.shellInit(hdcShellStream, resultCallBack); - return (keyboardEvent: KeyboardEvent | string): void => { - let code = undefined; - if (keyboardEvent instanceof KeyboardEvent) { - const cmd = keyboardEvent.key; - if (keyboardEvent.shiftKey && keyboardEvent.key.toUpperCase() === 'SHIFT') { - return; - } else if (keyboardEvent.metaKey) { - return; - } else if (keyboardEvent.ctrlKey) { - // @ts-ignore - code = this.ctrlKey[keyboardEvent.key]; - if (!code) { + if (this.currentHdcClient) { + const hdcShellStream = new HdcStream(this.currentHdcClient, false); + this.shellInit(hdcShellStream, resultCallBack); + return (keyboardEvent: KeyboardEvent | string): void => { + let code = undefined; + if (keyboardEvent instanceof KeyboardEvent) { + const cmd = keyboardEvent.key; + if (keyboardEvent.shiftKey && keyboardEvent.key.toUpperCase() === 'SHIFT') { + return; + } else if (keyboardEvent.metaKey) { + return; + } else if (keyboardEvent.ctrlKey) { + // @ts-ignore + code = this.ctrlKey[keyboardEvent.key]; + if (!code) { + return; + } else { + const dataArray = new Uint8Array(code); + hdcShellStream.sendToDaemon( + new FormatCommand(HdcCommand.CMD_SHELL_DATA, cmd, false), + dataArray, + dataArray.length + ); + } + } else if (keyboardEvent.altKey) { return; } else { - const dataArray = new Uint8Array(code); - hdcShellStream.sendToDaemon( - new FormatCommand(HdcCommand.CMD_SHELL_DATA, cmd, false), - dataArray, - dataArray.length - ); - } - return; - } else if (keyboardEvent.altKey) { - return; - } else { - // @ts-ignore - code = this.escapeCharacterDict[cmd]; - if (code) { - const dataArray = new Uint8Array(code); - hdcShellStream.sendToDaemon( - new FormatCommand(HdcCommand.CMD_SHELL_DATA, cmd, false), - dataArray, - dataArray.length - ); - } else { - if (cmd.length === 1) { - hdcShellStream.DoCommand(cmd); + // @ts-ignore + code = this.escapeCharacterDict[cmd]; + if (code) { + const dataArray = new Uint8Array(code); + hdcShellStream.sendToDaemon( + new FormatCommand(HdcCommand.CMD_SHELL_DATA, cmd, false), + dataArray, + dataArray.length + ); + } else { + if (cmd.length === 1) { + hdcShellStream.DoCommand(cmd); + } } } - return; + } else { + hdcShellStream.DoCommand(HdcDeviceManager.processCommand(keyboardEvent)); } - } else { - hdcShellStream.DoCommand(HdcDeviceManager.processCommand(keyboardEvent)); - } - return; - }; + }; + } } private static processCommand(command: string): string {