• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 调用栈可视化和不同库函数调用占比说明
2调用栈可视化可以将开发者编译的so符号化结果展示出来,不同库函数的占比通过饼图的方式展示出来。
3## Native Memory文件的不同库函数占比
4Native Memory分为三级统计,分别按照内存分配的类型(Alloc/Mmap),lib库,函数进行统计分析。其中lib跟函数为每一条调用栈,从栈顶往下查找,非musl库与c++库的第一条函数及其lib为每次分配归属的函数及lib库。
5点击Analysis的Tab页,先以内存分配的类型去统计。
6![GitHub Logo](../../figures/ImportSo/Native_import_all.jpg)
7+     Memory Type:事件类型。
8+     Existing:框选区域内申请没有释放的大小。
9+     #Existing:框选区域内申请没有释放的次数。
10+     Total Bytes:框选区间内申请的大小。
11+     #Total:框选区间内申请的次数。
12+     Transient:框选区域内释放的大小。
13+     #Transient:框选区域内释放的次数。
14+     %:各个显示项的占比。
15以lib库去统计,如图显示的是AllocEvent的so占比的饼图和Table表。
16![GitHub Logo](../../figures/ImportSo/Native_import_so_Existing.jpg)
17+     Library:So名称。
18+     Existing:框选区域内申请没有释放的大小。
19+     #Existing:框选区域内申请没有释放的次数。
20+     Total Bytes:框选区间内申请的大小。
21+     #Total:框选区间内申请的次数。
22+     Transient:框选区域内释放的大小。
23+     #Transient:框选区域内释放的次数。
24+     %:各个显示项的占比。
25以函数去统计,如图显示的是AllocEvent/libmali-bifrost-g52-g2p0-ohos.so的函数占比的饼图和Table表。
26![GitHub Logo](../../figures/ImportSo/Native_import_so_function.jpg)
27+     Function:函数名称。
28+     Existing:框选区域内申请没有释放的大小。
29+     #Existing:框选区域内申请没有释放的次数。
30+     Total Bytes:框选区间内申请的大小。
31+     #Total:框选区间内申请的次数。
32+     Transient:框选区域内释放的大小。
33+     #Transient:框选区域内释放的次数。
34+     %:各个显示项的占比。
35## Hiperf文件的不同库函数占比
36Hiperf分为四级统计,分别按照进程,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈的栈顶函数及其lib。
37点击Analysis的Tab页,先以进程去统计。
38![GitHub Logo](../../figures/ImportSo/Hiperf_import_all.jpg)
39+     ProcessName:进程名。
40+     Weight:该进程下的调用方法的执行次数。
41+     %:该进程下的调用方法的执行占比。
42以线程统计,如图显示的是hiperf进程下的线程的饼图和Table表。
43![GitHub Logo](../../figures/ImportSo/Hiperf_import_thread.jpg)
44+     ThreadName:线程名。
45+     Weight:该线程下的调用方法的执行次数。
46+     %:该线程下的调用方法的执行占比。
47以lib库统计,如图显示的是hiperf线程下的各so占比饼图和Table表。
48![GitHub Logo](../../figures/ImportSo/Hiperf_import_lib.jpg)
49+     Library:so的名称。
50+     Weight:该so的调用方法的执行次数。
51+     %:该so的调用方法的执行占比。
52以函数统计,如图显示的是ld-musl-aarch64.so.1下的各函数占比饼图和Table表。
53![GitHub Logo](../../figures/ImportSo/Hiperf_import_Fuc.jpg)
54+     Library:so的名称。
55+     Weight:该so的调用方法的执行次数。
56+     %:该so的调用方法的执行占比。
57## FileSystem文件的不同库函数占比
58FileSystem分为五级统计,分别按照进程,系统调用类型,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈,从栈顶往下查找,非musl库与c++库的第一条函数及其lib为每次分配归属的函数及lib库。
59点击Analysis的Tab页,先以进程去统计。
60![GitHub Logo](../../figures/ImportSo/filesystem_import_process.jpg)
61+     ProcessName:进程名。
62+     Duration:总时长。
63+     %:总时长占比。
64以系统调用类型统计,如图显示的是grep进程下的Read和Write系统调用的时长占比饼图和Table表。
65![GitHub Logo](../../figures/ImportSo/filesystem_import_Type.jpg)
66+     Type:系统调用类型(Read和Write)。
67+     Duration:系统调用的总时长。
68+     %:总时长占比。
69以线程统计,如图显示的是系统调用是Read类型的线程的占比饼图和Table表。
70![GitHub Logo](../../figures/ImportSo/filesystem_import_thread.jpg)
71+     ThreadName:线程名。
72+     Duration:该线程的系统调用的总时长。
73+     %:总时长占比。
74以lib库统计,如图显示toybox的lib库的占比饼图和Table表。
75![GitHub Logo](../../figures/ImportSo/filesystem_import_lib.jpg)
76+     Library:so的名称。
77+     Duration:该so的系统调用的总时长。
78+     %:总时长占比。
79以函数统计,如图显示0x558111afbc (toybox)的函数占比饼图和Table表。
80![GitHub Logo](../../figures/ImportSo/filesystem_import_func.jpg)
81+     Function:函数名称。
82+     Duration:该函数的系统调用的总时长。
83+     %:总时长占比。
84## Bio文件的不同库函数占比
85Bio分为五级统计,分别按照进程,系统调用类型,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈,从栈顶往下查找,非submit_bio第一条函数及其lib为每次分配归属的函数及lib库。
86点击Analysis的Tab页,先以进程去统计。
87![GitHub Logo](../../figures/ImportSo/bio_import_process.jpg)
88+     ProcessName:进程名。
89+     Duration:总时长。
90+     %:总时长占比。
91以系统调用类型统计,如图显示的是jbd2/mmcblk0p11进程下的DATA_WRITE系统调用的时长占比饼图和Table表。
92![GitHub Logo](../../figures/ImportSo/bio_import_Type.jpg)
93+     Type:系统调用类型。
94+     Duration:系统调用的总时长。
95+     %:总时长占比。
96以线程统计,如图显示的是系统调用是DATA_WRITE类型的线程的占比饼图和Table表。
97![GitHub Logo](../../figures/ImportSo/bio_import_thread.jpg)
98+     ThreadName:线程名。
99+     Duration:该线程的系统调用的总时长。
100+     %:总时长占比。
101以lib库统计,如图显示kallsyms的lib库的占比饼图和Table表。
102![GitHub Logo](../../figures/ImportSo/bio_import_lib.jpg)
103+     Library:so的名称。
104+     Duration:该so的系统调用的总时长。
105+     %:总时长占比。
106以函数统计,如图显示submit_bh的函数占比饼图和Table表。
107![GitHub Logo](../../figures/ImportSo/bio_import_func.jpg)
108+     Function:函数名称。
109+     Duration:该函数的系统调用的总时长。
110+     %:总时长占比。
111## Page Fault文件的不同库函数占比
112Page Fault分为五级统计,分别按照进程,系统调用类型,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈,从栈顶往下查找,非musl库与c++库的第一条函数及其lib为每次分配归属的函数及lib库。
113点击Analysis的Tab页,先以进程去统计。
114![GitHub Logo](../../figures/ImportSo/pagefault_import_process.jpg)
115+     ProcessName:进程名。
116+     Duration:总时长。
117+     %:总时长占比。
118以系统调用类型统计,如图显示的是1.ui进程下的File Backed In和Copy On Writer系统调用的时长占比饼图和Table表。
119![GitHub Logo](../../figures/ImportSo/pagefault_import_Type.jpg)
120+     Type:系统调用类型。
121+     Duration:系统调用的总时长。
122+     %:总时长占比。
123以线程统计,如图显示的是系统调用是File Backed In类型的线程的占比饼图和Table表。
124![GitHub Logo](../../figures/ImportSo/pagefault_import_thread.jpg)
125+     ThreadName:线程名。
126+     Duration:该线程的系统调用的总时长。
127+     %:总时长占比。
128以lib库统计,如图显示各lib库的占比饼图和Table表。
129![GitHub Logo](../../figures/ImportSo/pagefault_import_lib.jpg)
130+     Library:so的名称。
131+     Duration:该so的系统调用的总时长。
132+     %:总时长占比。
133以函数统计,如图显示各函数占比饼图和Table表。
134![GitHub Logo](../../figures/ImportSo/pagefault_import_func.jpg)
135+     Function:函数名称。
136+     Duration:该函数的系统调用的总时长。
137+     %:总时长占比。