内存使用
命令功能
进行内存分配、释放性能数据采集,检查应用中的内存分配未释放的情况。
命令格式
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 ...]
参数说明
参数 |
参数选项 |
说明 |
---|---|---|
-h/--help |
- |
获取帮助信息。 |
-d/--duration |
- |
设置采集时长,单位为秒,默认为采集应用运行结束,可使用Ctrl+C停止采集并进入分析。 |
-i/--interval |
- |
设置采集间隔(以秒为单位)。默认为1秒,取值范围1至60秒,且不可超过采集时长。 |
-l/--log-level |
0/1/2/3 |
设置日志级别,默认为2。
|
-o/--output |
- |
设置报告数据生成文件名,默认为当前所在目录。 |
--package |
- |
设置是否将数据导入数据库,并在指定输出路径中生成压缩包。 |
-t/--top |
- |
设置采集内存使用最大的top N个堆栈信息,默认为5,取值范围为5至15个(报告输出内容按堆栈大小排序)。 |
-z/--min-size |
- |
设置采集到的每次内存使用的最小值,单位为字节,需大于等于1。 |
-Z/--max-size |
- |
设置采集到的每次内存使用的最大值,单位为字节,需大于等于2。 |
-p/--pid |
- |
指定采集的进程PID,默认为-1,表示采集内核态内存使用情况。 |
使用示例
devkit doctor memalloc -d 1 -i 1 -t 5

若需针对应用采集,可在命令后方添加应用的可执行文件路径。
返回信息如下:
Attaching to kernel allocators, Ctrl+C to quit. Memory Allocate Summary Report-1 Time:2024/07/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 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 2 stack ───────────────────────────────────────────────────────────────── stack_name kmem_cache_alloc+0x188 [kernel] stack_id 15249 alloc_size 292352B alloc_count 1142 alloc_distribution 256B-512B 1142 stack_info: 0xffff000008333188 kmem_cache_alloc+0x188 [kernel] 0xffff000008333188 kmem_cache_alloc+0x188 [kernel] 0xffff00000836fd94 __alloc_file+0x34 [kernel] 0xffff0000083701a0 alloc_empty_file+0x68 [kernel] 0xffff0000083819cc path_openat+0x4c [kernel] 0xffff0000083830e0 do_filp_open+0x88 [kernel] 0xffff00000836aa58 do_sys_open+0x1a8 [kernel] 0xffff00000836ab4c __arm64_sys_openat+0x2c [kernel] 0xffff0000080999f0 el0_svc_common+0x78 [kernel] 0xffff000008099b28 el0_svc_handler+0x38 [kernel] 0xffff000008084188 el0_svc+0x8 [kernel] Top 3 stack ───────────────────────────────────────────────────────────────── stack_name __alloc_pages_nodemask+0x208 [kernel] stack_id 10583 alloc_size 262144B alloc_count 4 alloc_distribution 64KB-128KB 4 stack_info: 0xffff0000082aed48 __alloc_pages_nodemask+0x208 [kernel] 0xffff0000082aed48 __alloc_pages_nodemask+0x208 [kernel] 0xffff000008323eb8 alloc_pages_current+0x88 [kernel] 0xffff00000833127c allocate_slab+0x43c [kernel] 0xffff0000083313fc new_slab+0x64 [kernel] 0xffff000008332e04 ___slab_alloc+0x40c [kernel] 0xffff000008332fe4 __slab_alloc+0x5c [kernel] 0xffff0000083331dc kmem_cache_alloc+0x1dc [kernel] 0xffff00000836fd94 __alloc_file+0x34 [kernel] 0xffff0000083701a0 alloc_empty_file+0x68 [kernel] 0xffff0000083819cc path_openat+0x4c [kernel] 0xffff0000083830e0 do_filp_open+0x88 [kernel] 0xffff00000836aa58 do_sys_open+0x1a8 [kernel] 0xffff00000836ab4c __arm64_sys_openat+0x2c [kernel] 0xffff0000080999f0 el0_svc_common+0x78 [kernel] 0xffff000008099b28 el0_svc_handler+0x38 [kernel] 0xffff000008084188 el0_svc+0x8 [kernel] Top 4 stack ───────────────────────────────────────────────────────────────── stack_name __alloc_pages_nodemask+0x208 [kernel] stack_id 10847 alloc_size 196608B alloc_count 3 alloc_distribution 64KB-128KB 3 stack_info: 0xffff0000082aed48 __alloc_pages_nodemask+0x208 [kernel] 0xffff0000082aed48 __alloc_pages_nodemask+0x208 [kernel] 0xffff000008323eb8 alloc_pages_current+0x88 [kernel] 0xffff0000082e960c __do_fault+0xf4 [kernel] 0xffff0000082eedb8 do_cow_fault+0x118 [kernel] 0xffff0000082f0b18 __handle_mm_fault+0x3d0 [kernel] 0xffff0000082f1048 handle_mm_fault+0xd8 [kernel] 0xffff000008ab9fb0 do_page_fault+0x210 [kernel] 0xffff000008aba340 do_translation_fault+0xa8 [kernel] 0xffff0000080812d0 do_mem_abort+0x68 [kernel] 0xffff000008083210 el1_da+0x20 [kernel] 0xffff000008a94b80 __arch_clear_user+0x20 [kernel] 0xffff0000083fe884 load_elf_binary+0x874 [kernel] 0xffff000008377bec search_binary_handler+0xcc [kernel] 0xffff0000083787b8 __do_execve_file.isra.13+0x608 [kernel] 0xffff000008378a10 do_execve+0x48 [kernel] 0xffff000008378c80 __arm64_sys_execve+0x30 [kernel] 0xffff0000080999f0 el0_svc_common+0x78 [kernel] 0xffff000008099b28 el0_svc_handler+0x38 [kernel] 0xffff000008084188 el0_svc+0x8 [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 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界面查看图形化信息;导入详情请参见任务管理中的任务导入部分内容。
父主题: 系统诊断