中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

内存使用

命令功能

进行内存分配、释放性能数据采集,检查应用中的内存分配未释放的情况。

命令格式

1
devkit doctor memalloc [-h] [-l {0,1,2,3}] [--package] [-o <file>] [-d <sec>] [-i <sec>] [-t n] [-z <byte>] [-Z <byte>] [-p PID] [workload ...] 
  • 工具可采集指定应用,命令中[workload workload...]替换为应用路径加应用参数。
  • 不支持在SUSE Linux操作系统使用。
  • 该功能基于eBPF能力实现,采集时需使用root用户,判断环境是否符合请参见eBPF环境检查

参数说明

表1 参数说明

参数

参数选项

说明

-h/--help

-

获取帮助信息。

-d/--duration

-

设置采集时长,单位为秒,默认为采集应用运行结束,可使用Ctrl+C停止采集并进入分析。

-i/--interval

-

设置采集间隔(以秒为单位)。默认为1秒,取值范围1至60秒,且不可超过采集时长。

-l/--log-level

0/1/2/3

设置日志级别,默认为2。
  • 0:日志级别为DEBUG。
  • 1:日志级别为INFO。
  • 2:日志级别为WARNING。
  • 3:日志级别为ERROR。

-o/--output

-

设置报告数据生成文件名,默认为当前所在目录。

--package

-

设置是否将数据导入数据库,并在指定输出路径中生成压缩包。

-t/--top

-

设置采集内存使用最大的top N个堆栈信息,默认为5,取值范围为5至15个(报告输出内容按堆栈大小排序)。

-z/--min-size

-

设置采集到的每次内存使用的最小值,单位为字节,需大于等于1。

-Z/--max-size

-

设置采集到的每次内存使用的最大值,单位为字节,需大于等于2。

-p/--pid

-

指定采集的进程PID,默认为-1,表示采集内核态内存使用情况。

使用示例

1
devkit doctor memalloc -d 1 -i 1 -t 5

若需针对应用采集,可在命令后方添加应用的可执行文件路径。

返回信息如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Attaching to kernel allocators, Ctrl+C to quit.
Memory Allocate Summary Report-1                        Time:2024/11/17 15:40:43
================================================================================
Top 5 stacks with outstanding allocations:
Top 1 stack
─────────────────────────────────────────────────────────────────
stack_name                __alloc_pages_nodemask+0x208 [kernel]
stack_id                  3305
alloc_size                3407872B
alloc_count               52
alloc_distribution        64KB-128KB 52
alloc_pid                 1181280

stack_info:
0xffff0000082aed48        __alloc_pages_nodemask+0x208 [kernel]
0xffff0000082aed48        __alloc_pages_nodemask+0x208 [kernel]
0xffff000008325ad0        alloc_pages_vma+0x90 [kernel]
0xffff0000082e9978        wp_page_copy+0xa0 [kernel]
0xffff0000082ed468        do_wp_page+0xd8 [kernel]
0xffff0000082f0c80        __handle_mm_fault+0x538 [kernel]
0xffff0000082f1048        handle_mm_fault+0xd8 [kernel]
0xffff000008ab9fb0        do_page_fault+0x210 [kernel]
0xffff0000080812d0        do_mem_abort+0x68 [kernel]
0xffff000008083b64        el0_da+0x24 [kernel]

...
...
...
...

Top 5 stack
─────────────────────────────────────────────────────────────────
stack_name                __alloc_pages_nodemask+0x208 [kernel]
stack_id                  8792
alloc_size                196608B
alloc_count               3
alloc_distribution        64KB-128KB 3
alloc_pid                 1181280

stack_info:
0xffff0000082aed48        __alloc_pages_nodemask+0x208 [kernel]
0xffff0000082aed48        __alloc_pages_nodemask+0x208 [kernel]
0xffff000008323eb8        alloc_pages_current+0x88 [kernel]
0xffff0000082a9560        __get_free_pages+0x28 [kernel]
0xffff0000082fb890        tlb_remove_table+0xa8 [kernel]
0xffff0000082ea818        free_pgd_range+0x168 [kernel]
0xffff0000082eab3c        free_pgtables+0x12c [kernel]
0xffff0000082f8278        exit_mmap+0xe8 [kernel]
0xffff0000080f60bc        mmput+0x74 [kernel]
0xffff0000080ff530        do_exit+0x300 [kernel]
0xffff0000080ff8cc        do_group_exit+0x3c [kernel]
0xffff0000080ff98c        __arm64_sys_exit_group+0x24 [kernel]
0xffff0000080999f0        el0_svc_common+0x78 [kernel]
0xffff000008099b28        el0_svc_handler+0x38 [kernel]
0xffff000008084188        el0_svc+0x8 [kernel]

通过--package参数打包生成TAR包,可将TAR包导入Web界面查看图形化信息;导入详情请参见任务管理中的任务导入部分内容。