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