summaryrefslogtreecommitdiff
path: root/documents/utilization.md
blob: 0cfa32dad5e58e02b5e3272e750a6f9501c0cd24 (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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
##  utilization
本功能监控系统资源利用率,找到CPU被哪些野进程干扰,以及进程对内存的使用情况。

###  查看帮助信息
通过如下命令查看本功能的帮助信息:
```
diagnose-tools utilization --help
```
结果如下:
```
utilization usage:
        --activate
            verbose VERBOSE
            style dump style: 0 - common, 1 - process chains
            cpu cpu-list that monitored
        --deactivate
        --settings print settings.
        --report dump log with text.
        --isolate CPU CGROUP set isolated cgroup name for cpu.
```
###  安装KO
参见《安装和卸载KO》一节
###  激活功能
激活本功能的命令是:
```
diagnose-tools utilization --activate
```
在激活本功能时,可用的参数有:
cpu 被监控的cpu列表;
verbose 该参数设置输出级别,暂时未用。
style如果为1,输出进程链。其他值不输出。
例如,如下命令将设置输出类型为1,即输出进程链:
```
diagnose-tools utilization --activate='style=1'
```
如果成功,将输出:
```
功能设置成功,返回值:0
    STYLE:	1
    输出级别:	0
    CPUS:		
```
如果失败,将输出:
```
功能设置失败,返回值:-16
    STYLE:	1
    输出级别:	0
    CPUS:	

```
###  设置参数
本功能可用参数为:
--isolate CPU CGROUP 设置某个CPU上独享CPU的CGROUP组,这些CGROUP组的进程不作为野进程对待。
如下命令设置CPU 1的独占CGROUP名称为tdc:
```
diagnose-tools utilization --isolate="1 tdc"
```
如果成功,将输出:
```
set isolate for utilization: 1, tdc, ret is 0
```
如果失败,将输出:
```
set isolate for utilization: 1, tdc, ret is -1
```
###  测试用例
运行如下命令启动本功能的测试用例:
```
sh /usr/diagnose-tools/test.sh utilization
```
###  查看设置参数
使用如下命令查看本功能的设置参数:
```
diagnose-tools utilization --settings
```
结果如下:
```
功能设置:
    是否激活:	×
    输出级别:	0
    STYLE:	0
    CPUS:	0-1
```
###  查看结果
执行如下命令查看本功能的输出结果:
```
diagnose-tools utilization --report
```
输出结果中包含野进程在CPU上运行的时间,分配的内存数量。
每次输出结果后,历史数据将被清空。

###  输出火焰图

可以生成三种火焰图:

1. CPU执行时间火焰图
2. 内存分配火焰图
3. 野进程干扰火焰图

以下三个命令分别用于生成这三个图:
1、CPU执行时间火焰图
```
diagnose-tools utilization --report | awk '{if (substr($1,1,2) == "**") {print substr($0, 3)}}' | /usr/diagnose-tools/flame-graph/flamegraph.pl > utilization.svg
```
2、内存分配火焰图
```
diagnose-tools utilization --report | awk '{if (substr($1,1,2) == "*#") {print substr($0, 3)}}' | /usr/diagnose-tools/flame-graph/flamegraph.pl > utilization.svg
```
3、野进程干扰火焰图
```
diagnose-tools utilization --report | awk '{if (substr($1,1,2) == "*^") {print substr($0, 3)}}' | /usr/diagnose-tools/flame-graph/flamegraph.pl > utilization.svg
```
该命令将生成的火焰图保存到utilization.svg中。该命令的含义是:
首先调用report命令输出内核中保存的结果,然后使用awk命令将”*”开头的行提取出来,最后的一个pl脚本将堆栈符号生成火焰图。
使用浏览器打开utilization.svg,如下所示:

![](./utilization.png)

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