1# 调用栈可视化和不同库函数调用占比说明 2调用栈可视化可以将开发者编译的so符号化结果展示出来,不同库函数的占比通过饼图的方式展示出来。 3## Native Memory文件的不同库函数占比 4Native Memory分为三级统计,分别按照内存分配的类型(Alloc/Mmap),lib库,函数进行统计分析。其中lib跟函数为每一条调用栈,从栈顶往下查找,非musl库与c++库的第一条函数及其lib为每次分配归属的函数及lib库。 5点击Analysis的Tab页,先以内存分配的类型去统计。 6 7+ Memory Type:事件类型。 8+ Existing:框选区域内申请没有释放的大小。 9+ #Existing:框选区域内申请没有释放的次数。 10+ Total Bytes:框选区间内申请的大小。 11+ #Total:框选区间内申请的次数。 12+ Transient:框选区域内释放的大小。 13+ #Transient:框选区域内释放的次数。 14+ %:各个显示项的占比。 15以lib库去统计,如图显示的是AllocEvent的so占比的饼图和Table表。 16 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 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 39+ ProcessName:进程名。 40+ Weight:该进程下的调用方法的执行次数。 41+ %:该进程下的调用方法的执行占比。 42以线程统计,如图显示的是hiperf进程下的线程的饼图和Table表。 43 44+ ThreadName:线程名。 45+ Weight:该线程下的调用方法的执行次数。 46+ %:该线程下的调用方法的执行占比。 47以lib库统计,如图显示的是hiperf线程下的各so占比饼图和Table表。 48 49+ Library:so的名称。 50+ Weight:该so的调用方法的执行次数。 51+ %:该so的调用方法的执行占比。 52以函数统计,如图显示的是ld-musl-aarch64.so.1下的各函数占比饼图和Table表。 53 54+ Library:so的名称。 55+ Weight:该so的调用方法的执行次数。 56+ %:该so的调用方法的执行占比。 57## FileSystem文件的不同库函数占比 58FileSystem分为五级统计,分别按照进程,系统调用类型,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈,从栈顶往下查找,非musl库与c++库的第一条函数及其lib为每次分配归属的函数及lib库。 59点击Analysis的Tab页,先以进程去统计。 60 61+ ProcessName:进程名。 62+ Duration:总时长。 63+ %:总时长占比。 64以系统调用类型统计,如图显示的是grep进程下的Read和Write系统调用的时长占比饼图和Table表。 65 66+ Type:系统调用类型(Read和Write)。 67+ Duration:系统调用的总时长。 68+ %:总时长占比。 69以线程统计,如图显示的是系统调用是Read类型的线程的占比饼图和Table表。 70 71+ ThreadName:线程名。 72+ Duration:该线程的系统调用的总时长。 73+ %:总时长占比。 74以lib库统计,如图显示toybox的lib库的占比饼图和Table表。 75 76+ Library:so的名称。 77+ Duration:该so的系统调用的总时长。 78+ %:总时长占比。 79以函数统计,如图显示0x558111afbc (toybox)的函数占比饼图和Table表。 80 81+ Function:函数名称。 82+ Duration:该函数的系统调用的总时长。 83+ %:总时长占比。 84## Bio文件的不同库函数占比 85Bio分为五级统计,分别按照进程,系统调用类型,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈,从栈顶往下查找,非submit_bio第一条函数及其lib为每次分配归属的函数及lib库。 86点击Analysis的Tab页,先以进程去统计。 87 88+ ProcessName:进程名。 89+ Duration:总时长。 90+ %:总时长占比。 91以系统调用类型统计,如图显示的是jbd2/mmcblk0p11进程下的DATA_WRITE系统调用的时长占比饼图和Table表。 92 93+ Type:系统调用类型。 94+ Duration:系统调用的总时长。 95+ %:总时长占比。 96以线程统计,如图显示的是系统调用是DATA_WRITE类型的线程的占比饼图和Table表。 97 98+ ThreadName:线程名。 99+ Duration:该线程的系统调用的总时长。 100+ %:总时长占比。 101以lib库统计,如图显示kallsyms的lib库的占比饼图和Table表。 102 103+ Library:so的名称。 104+ Duration:该so的系统调用的总时长。 105+ %:总时长占比。 106以函数统计,如图显示submit_bh的函数占比饼图和Table表。 107 108+ Function:函数名称。 109+ Duration:该函数的系统调用的总时长。 110+ %:总时长占比。 111## Page Fault文件的不同库函数占比 112Page Fault分为五级统计,分别按照进程,系统调用类型,线程,lib库,函数进行统计。其中lib跟函数为每一条调用栈,从栈顶往下查找,非musl库与c++库的第一条函数及其lib为每次分配归属的函数及lib库。 113点击Analysis的Tab页,先以进程去统计。 114 115+ ProcessName:进程名。 116+ Duration:总时长。 117+ %:总时长占比。 118以系统调用类型统计,如图显示的是1.ui进程下的File Backed In和Copy On Writer系统调用的时长占比饼图和Table表。 119 120+ Type:系统调用类型。 121+ Duration:系统调用的总时长。 122+ %:总时长占比。 123以线程统计,如图显示的是系统调用是File Backed In类型的线程的占比饼图和Table表。 124 125+ ThreadName:线程名。 126+ Duration:该线程的系统调用的总时长。 127+ %:总时长占比。 128以lib库统计,如图显示各lib库的占比饼图和Table表。 129 130+ Library:so的名称。 131+ Duration:该so的系统调用的总时长。 132+ %:总时长占比。 133以函数统计,如图显示各函数占比饼图和Table表。 134 135+ Function:函数名称。 136+ Duration:该函数的系统调用的总时长。 137+ %:总时长占比。