summaryrefslogtreecommitdiff
path: root/documents/high-order.md
blob: 6d38e14771ba1c2b131105502891eabd5a1949dd (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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
## high-order
###  查看帮助信息
通过如下命令查看本功能的帮助信息:
```
diagnose-tools high-order --help
```
结果如下:
```
    high-order usage:
        --help high-order help info
        --activate
          verbose VERBOSE
          order threshold value
        --deactivate
        --settins dump settings with text.
        --report dump log with text.
        --test testcase for high-order.
```

###  安装KO
参见《安装和卸载KO》一节
###  激活功能
激活本功能的命令是:
```
diagnose-tools alloc-top --activate
```
在激活本功能时,可用参数为:
* verbose 输出级别,目前未用。
* order只有当分配的内存阶数高于此值才输出。
例如,下面的命令将分配阶数设置为2:
```
diagnose-tools high-order --activate='order=2'
```
如果成功,将输出:
```
功能设置成功,返回值:0
    ORDER:2
    输出级别:0
```

如果失败,将输出:
```
功能设置失败,返回值:-16
    ORDER:2
    输出级别:0
```

###  测试用例
使用如下命令将启动本功能的测试用例:
```
sh /usr/diagnose-tools/test.sh high-order
```
###  查看设置参数
使用如下命令查看本功能的设置参数:
```
diagnose-tools high-order --settings
```
结果如下:
```
功能设置:
    是否激活:×
    ORDER:2
    输出级别:0
```
###  查看结果
执行如下命令查看本功能的输出结果:
```
diagnose-tools high-order --report
```
结果示例如下:
```
##CGROUP:[/]  5180      [48191]  采样命中[3]
    内核态堆栈:
#@        0xffffffff8103ddef save_stack_trace_tsk  ([kernel.kallsyms])
#@        0xffffffffa1b49289 diagnose_save_stack_trace	[diagnose]  ([kernel.kallsyms])
#@        0xffffffffa1b49bae ali_diag_task_kern_stack	[diagnose]  ([kernel.kallsyms])
#@        0xffffffffa1b5d232 trace_mm_page_alloc_hit	[diagnose]  ([kernel.kallsyms])
#@        0xffffffff811d20ac __alloc_pages_nodemask  ([kernel.kallsyms])
#@        0xffffffff81229ba5 alloc_pages_current  ([kernel.kallsyms])
#@        0xffffffff81629889 alloc_skb_with_frags  ([kernel.kallsyms])
#@        0xffffffff816249d0 sock_alloc_send_pskb  ([kernel.kallsyms])
#@        0xffffffff816fdf17 unix_stream_sendmsg  ([kernel.kallsyms])
#@        0xffffffff8161ea48 sock_sendmsg  ([kernel.kallsyms])
#@        0xffffffff8161eae5 sock_write_iter  ([kernel.kallsyms])
#@        0xffffffff81262f89 do_iter_readv_writev  ([kernel.kallsyms])
#@        0xffffffff8126499e do_readv_writev  ([kernel.kallsyms])
#@        0xffffffff81264c8c vfs_writev  ([kernel.kallsyms])
#@        0xffffffff81264d01 do_writev  ([kernel.kallsyms])
#@        0xffffffff81265ee0 SyS_writev  ([kernel.kallsyms])
#@        0xffffffff81003c04 do_syscall_64  ([kernel.kallsyms])
#@        0xffffffff817691ce entry_SYSCALL_64_after_swapgs  ([kernel.kallsyms])
    用户态堆栈:
#~        0x7efef7266b80 __writev ([symbol])
#*        0xffffffffffffff gnome-shell (UNKNOWN)
    进程链信息:
#^        0xffffffffffffff /usr/bin/gnome-shell  (UNKNOWN)
#^        0xffffffffffffff /usr/libexec/gnome-session-binary --session gnome-classic  (UNKNOWN)
#^        0xffffffffffffff gdm-session-worker [pam/gdm-password]  (UNKNOWN)
#^        0xffffffffffffff /usr/sbin/gdm  (UNKNOWN)
#^        0xffffffffffffff /usr/lib/systemd/systemd --switched-root --system --deserialize 22  (UNKNOWN)
##
```

###  关闭功能
通过如下命令关闭本功能:
```
diagnose-tools high-order --deactivate 
```
如果成功,将输出:
```
high-order is not activated
```
如果失败,将输出:
```
deactivate high-order fail, ret is -1
```
关闭功能后,本功能将不会对系统带来任何影响。