1 /*
2 * Copyright (c) 2023-2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "unified_collection_stat.h"
17
18 #include "file_util.h"
19 #include "hisysevent.h"
20 #include "hiview_logger.h"
21 #include "decorator_util.h"
22
23 #ifdef UNIFIED_COLLECTOR_CPU_ENABLE
24 #include "cpu_decorator.h"
25 #endif
26
27 #ifdef UNIFIED_COLLECTOR_GPU_ENABLE
28 #include "gpu_decorator.h"
29 #endif
30
31 #ifdef UNIFIED_COLLECTOR_GRAPHIC_ENABLE
32 #include "graphic_memory_decorator.h"
33 #endif
34
35 #ifdef UNIFIED_COLLECTOR_EBPF_ENABLE
36 #include "hiebpf_decorator.h"
37 #endif
38
39 #ifdef UNIFIED_COLLECTOR_HILOG_ENABLE
40 #include "hilog_decorator.h"
41 #endif
42
43 #ifdef UNIFIED_COLLECTOR_IO_ENABLE
44 #include "io_decorator.h"
45 #endif
46
47 #ifdef HAS_HIPROFILER
48 #include "mem_profiler_decorator.h"
49 #endif
50
51 #ifdef UNIFIED_COLLECTOR_MEMORY_ENABLE
52 #include "memory_decorator.h"
53 #endif
54
55 #ifdef UNIFIED_COLLECTOR_NETWORK_ENABLE
56 #include "network_decorator.h"
57 #endif
58
59 #ifdef HAS_HIPERF
60 #include "perf_decorator.h"
61 #endif
62
63 #ifdef UNIFIED_COLLECTOR_PROCESS_ENABLE
64 #include "process_decorator.h"
65 #endif
66
67 #ifdef UNIFIED_COLLECTOR_THERMAL_ENABLE
68 #include "thermal_decorator.h"
69 #endif
70
71 #ifdef UNIFIED_COLLECTOR_TRACE_ENABLE
72 #include "trace_decorator.h"
73 #endif
74
75 #ifdef UNIFIED_COLLECTOR_WM_ENABLE
76 #include "wm_decorator.h"
77 #endif
78
79 namespace OHOS {
80 namespace HiviewDFX {
81 namespace UCollectUtil {
82 DEFINE_LOG_TAG("UCollectUtil-UCStat");
83
84 std::string UnifiedCollectionStat::date_ = GetCurrentDate();
85
Report()86 void UnifiedCollectionStat::Report()
87 {
88 if (date_ == GetCurrentDate()) {
89 return;
90 }
91 HIVIEW_LOGI("date_=%{public}s, curDate=%{public}s", date_.c_str(), GetCurrentDate().c_str());
92 SaveAllStatInfo();
93 ResetAllStatInfo();
94 date_ = GetCurrentDate();
95 }
96
SaveAllStatInfo()97 void UnifiedCollectionStat::SaveAllStatInfo()
98 {
99 WriteLinesToFile({UC_STAT_DATE, date_}, true, UC_STAT_LOG_PATH);
100 WriteLinesToFile({UC_API_STAT_TITLE, UC_API_STAT_ITEM}, false, UC_STAT_LOG_PATH);
101
102 #ifdef UNIFIED_COLLECTOR_CPU_ENABLE
103 CpuDecorator::SaveStatCommonInfo();
104 #endif
105
106 #ifdef UNIFIED_COLLECTOR_GPU_ENABLE
107 GpuDecorator::SaveStatCommonInfo();
108 #endif
109
110 #ifdef UNIFIED_COLLECTOR_GRAPHIC_ENABLE
111 GraphicMemoryDecorator::SaveStatCommonInfo();
112 #endif
113
114 #ifdef UNIFIED_COLLECTOR_EBPF_ENABLE
115 HiebpfDecorator::SaveStatCommonInfo();
116 #endif
117
118 #ifdef UNIFIED_COLLECTOR_HILOG_ENABLE
119 HilogDecorator::SaveStatCommonInfo();
120 #endif
121
122 #ifdef UNIFIED_COLLECTOR_IO_ENABLE
123 IoDecorator::SaveStatCommonInfo();
124 #endif
125
126 #ifdef UNIFIED_COLLECTOR_MEMORY_ENABLE
127 MemoryDecorator::SaveStatCommonInfo();
128 #endif
129
130 #ifdef UNIFIED_COLLECTOR_NETWORK_ENABLE
131 NetworkDecorator::SaveStatCommonInfo();
132 #endif
133
134 #ifdef UNIFIED_COLLECTOR_PROCESS_ENABLE
135 ProcessDecorator::SaveStatCommonInfo();
136 #endif
137
138 #ifdef UNIFIED_COLLECTOR_THERMAL_ENABLE
139 ThermalDecorator::SaveStatCommonInfo();
140 #endif
141
142 #ifdef HAS_HIPROFILER
143 MemProfilerDecorator::SaveStatCommonInfo();
144 #endif
145
146 #ifdef HAS_HIPERF
147 PerfDecorator::SaveStatCommonInfo();
148 #endif
149
150 #ifdef UNIFIED_COLLECTOR_WM_ENABLE
151 WmDecorator::SaveStatCommonInfo();
152 #endif
153
154 #ifdef UNIFIED_COLLECTOR_TRACE_ENABLE
155 TraceDecorator::SaveStatSpecialInfo();
156 #endif
157
158 int32_t ret = HiSysEventWrite(
159 HiSysEvent::Domain::HIVIEWDFX,
160 "UC_API_STAT",
161 HiSysEvent::EventType::FAULT,
162 "STAT_DATE", date_);
163 if (ret != 0) {
164 HIVIEW_LOGW("report collection stat event fail, ret=%{public}d", ret);
165 }
166 }
167
ResetAllStatInfo()168 void UnifiedCollectionStat::ResetAllStatInfo()
169 {
170 #ifdef UNIFIED_COLLECTOR_CPU_ENABLE
171 CpuDecorator::ResetStatInfo();
172 #endif
173
174 #ifdef UNIFIED_COLLECTOR_GPU_ENABLE
175 GpuDecorator::ResetStatInfo();
176 #endif
177
178 #ifdef UNIFIED_COLLECTOR_GRAPHIC_ENABLE
179 GraphicMemoryDecorator::ResetStatInfo();
180 #endif
181
182 #ifdef UNIFIED_COLLECTOR_EBPF_ENABLE
183 HiebpfDecorator::ResetStatInfo();
184 #endif
185
186 #ifdef UNIFIED_COLLECTOR_HILOG_ENABLE
187 HilogDecorator::ResetStatInfo();
188 #endif
189
190 #ifdef UNIFIED_COLLECTOR_IO_ENABLE
191 IoDecorator::ResetStatInfo();
192 #endif
193
194 #ifdef UNIFIED_COLLECTOR_MEMORY_ENABLE
195 MemoryDecorator::ResetStatInfo();
196 #endif
197
198 #ifdef UNIFIED_COLLECTOR_NETWORK_ENABLE
199 NetworkDecorator::ResetStatInfo();
200 #endif
201
202 #ifdef UNIFIED_COLLECTOR_PROCESS_ENABLE
203 ProcessDecorator::ResetStatInfo();
204 #endif
205
206 #ifdef UNIFIED_COLLECTOR_THERMAL_ENABLE
207 ThermalDecorator::ResetStatInfo();
208 #endif
209
210 #ifdef UNIFIED_COLLECTOR_TRACE_ENABLE
211 TraceDecorator::ResetStatInfo();
212 #endif
213
214 #ifdef UNIFIED_COLLECTOR_WM_ENABLE
215 WmDecorator::ResetStatInfo();
216 #endif
217
218 #ifdef HAS_HIPROFILER
219 MemProfilerDecorator::ResetStatInfo();
220 #endif
221
222 #ifdef HAS_HIPERF
223 PerfDecorator::ResetStatInfo();
224 #endif
225 }
226 } // namespace UCollectUtil
227 } // namespace HiviewDFX
228 } // namespace OHOS
229