blob: 26c8b8ef47eb5dce69bc656f89b8b1328ee0e781 (
plain)
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
## mm-leak
本功能统计内核态一段时间内,分配了但是没有释放的内存。并输出分配这些内存的调用链,以及泄漏次数。
### 查看帮助信息
通过如下命令查看本功能的帮助信息:
```
diagnose-tools mm-leak --help
```
结果如下:
```
mm-leak usage:
--help mm-leak help info
--activate
--deactivate
--verbose VERBOSE
--report dump log with text.
```
### 安装KO
参见《安装和卸载KO》一节
### 激活功能
激活本功能的命令是:
```
diagnose-tools mm-leak --activate
```
如果成功,将输出:
```
mm-leak activated
```
### 设置参数
本功能可用参数为:
-v, --verbose 该参数设置输出级别,暂时未用。
例如,如下命令设置输出级别为1:
```
diagnose-tools mm-leak --verbose=1
```
该命令在控制台会输出如下结果:
```
set verbose for mm-leak: 1, ret is 0
```
### 测试用例
无
### 查看设置参数
使用如下命令查看本功能的设置参数:
```
diagnose-tools mm-leak --settings
```
结果如下:
```
功能设置:
是否激活:√
输出级别:1
```
### 查看结果
执行如下命令查看本功能的输出结果:
```
diagnose-tools mm-leak --report
```
输出结果示例如下:
```
内存泄漏,次数:25337
内核态堆栈:
#@ 0xffffffff8103ddef save_stack_trace_tsk ([kernel.kallsyms])
#@ 0xffffffffa1b09289 diagnose_save_stack_trace [diagnose] ([kernel.kallsyms])
#@ 0xffffffffa1b0d7cf ali_stack_desc_find_alloc [diagnose] ([kernel.kallsyms])
#@ 0xffffffffa1b24461 trace_kmem_cache_alloc_hit [diagnose] ([kernel.kallsyms])
#@ 0xffffffff812264f7 kmem_cache_alloc ([kernel.kallsyms])
#@ 0xffffffff8128c141 alloc_buffer_head ([kernel.kallsyms])
#@ 0xffffffff8128c467 alloc_page_buffers ([kernel.kallsyms])
#@ 0xffffffff8128c4de create_empty_buffers ([kernel.kallsyms])
#@ 0xffffffff8128c621 create_page_buffers ([kernel.kallsyms])
#@ 0xffffffff8128e9aa __block_write_begin_int ([kernel.kallsyms])
#@ 0xffffffff812bb631 iomap_write_begin ([kernel.kallsyms])
#@ 0xffffffff812bb8c8 iomap_write_actor ([kernel.kallsyms])
#@ 0xffffffff812bbf31 iomap_apply ([kernel.kallsyms])
#@ 0xffffffff812bc020 iomap_file_buffered_write ([kernel.kallsyms])
#@ 0xffffffffa017144c xfs_file_buffered_aio_write [xfs] ([kernel.kallsyms])
#@ 0xffffffffa0171743 xfs_file_write_iter [xfs] ([kernel.kallsyms])
#@ 0xffffffff8125251e new_sync_write ([kernel.kallsyms])
#@ 0xffffffff812526c6 __vfs_write ([kernel.kallsyms])
#@ 0xffffffff81252ce5 vfs_write ([kernel.kallsyms])
#@ 0xffffffff812541a5 SyS_write ([kernel.kallsyms])
#@ 0xffffffff81003c04 do_syscall_64 ([kernel.kallsyms])
#@ 0xffffffff8174bfce entry_SYSCALL_64_after_swapgs ([kernel.kallsyms])
内存泄漏,次数:13562
```
每次输出结果后,历史数据将被清空。
### 关闭功能
通过如下命令关闭本功能:
```
diagnose-tools mm-leak --deactivate
```
如果成功,将输出:
```
mm-leak is not activated
```
关闭功能后,本功能将不会对系统带来性能影响。
|