• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2021 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 #ifndef ACTIVITY_MONITOR_STDTYPE_H
17 #define ACTIVITY_MONITOR_STDTYPE_H
18 #include "base_stdtype.h"
19 
20 namespace SysTuning {
21 namespace TraceStdtype {
22 class Hidump : public CacheBase {
23 public:
24     size_t AppendNewHidumpInfo(uint64_t timeStamp, uint32_t fps);
25     const std::deque<uint32_t>& Fpss() const;
26     void Clear() override;
27 
28 private:
29     std::deque<uint32_t> fpss_ = {};
30 };
31 
32 class DiskIOData : public CacheBase {
33 public:
34     DiskIOData() = default;
35     ~DiskIOData() = default;
36     void AppendNewData(uint64_t ts,
37                        uint64_t dur,
38                        uint64_t rd,
39                        uint64_t wr,
40                        uint64_t rdPerSec,
41                        uint64_t wrPerSec,
42                        double rdCountPerSec,
43                        double wrCountPerSec,
44                        uint64_t rdCount,
45                        uint64_t wrCount);
46     const std::deque<uint64_t>& Durs() const;
47     const std::deque<uint64_t>& RdDatas() const;
48     const std::deque<uint64_t>& WrDatas() const;
49     const std::deque<double>& RdSpeedDatas() const;
50     const std::deque<double>& WrSpeedDatas() const;
51     const std::deque<double>& RdCountPerSecDatas() const;
52     const std::deque<double>& WrCountPerSecDatas() const;
53     const std::deque<uint64_t>& RdCountDatas() const;
54     const std::deque<uint64_t>& WrCountDatas() const;
55     void Clear() override;
56 
57 private:
58     std::deque<uint64_t> durs_ = {};
59     std::deque<uint64_t> rdDatas_ = {};
60     std::deque<uint64_t> wrDatas_ = {};
61     std::deque<double> wrPerSec_ = {};
62     std::deque<double> rdPerSec_ = {};
63     std::deque<double> wrCountPerSec_ = {};
64     std::deque<double> rdCountPerSec_ = {};
65     std::deque<uint64_t> rdCountDatas_ = {};
66     std::deque<uint64_t> wrCountDatas_ = {};
67 };
68 
69 class LiveProcessDetailData : public CacheBase {
70 public:
71     size_t AppendNewData(uint64_t newTimeStamp,
72                          uint64_t dur,
73                          int32_t processID,
74                          std::string processName,
75                          int32_t parentProcessID,
76                          int32_t uid,
77                          std::string userName,
78                          double cpuUsage,
79                          int32_t pssInfo,
80                          uint64_t cpuTime,
81                          int32_t threads,
82                          int64_t diskWrites,
83                          int64_t diskReads);
84     const std::deque<uint64_t>& Durs() const;
85     const std::deque<int32_t>& ProcessID() const;
86     const std::deque<std::string>& ProcessName() const;
87     const std::deque<int32_t>& ParentProcessID() const;
88     const std::deque<int32_t>& Uid() const;
89     const std::deque<std::string>& UserName() const;
90     const std::deque<double>& CpuUsage() const;
91     const std::deque<int32_t>& PssInfo() const;
92     const std::deque<int32_t>& Threads() const;
93     const std::deque<int64_t>& DiskWrites() const;
94     const std::deque<int64_t>& DiskReads() const;
95     const std::deque<uint64_t>& CpuTimes() const;
96     void Clear() override;
97 
98 private:
99     std::deque<uint64_t> durs_ = {};
100     std::deque<int32_t> processID_ = {};
101     std::deque<std::string> processName_ = {};
102     std::deque<int32_t> parentProcessID_ = {};
103     std::deque<int32_t> uid_ = {};
104     std::deque<std::string> userName_ = {};
105     std::deque<double> cpuUsage_ = {};
106     std::deque<int32_t> pssInfo_ = {};
107     std::deque<int32_t> threads_ = {};
108     std::deque<int64_t> diskWrites_ = {};
109     std::deque<int64_t> diskReads_ = {};
110     std::deque<uint64_t> cpuTimes_ = {};
111 };
112 
113 class CpuUsageDetailData : public CacheBase {
114 public:
115     size_t AppendNewData(uint64_t newTimeStamp,
116                          uint64_t dur,
117                          double totalLoad,
118                          double userLoad,
119                          double systemLoad,
120                          int64_t threads);
121     const std::deque<uint64_t>& Durs() const;
122     const std::deque<double>& TotalLoad() const;
123     const std::deque<double>& UserLoad() const;
124     const std::deque<double>& SystemLoad() const;
125     const std::deque<int64_t>& Threads() const;
126     void Clear() override;
127 
128 private:
129     std::deque<uint64_t> durs_ = {};
130     std::deque<double> totalLoad_ = {};
131     std::deque<double> userLoad_ = {};
132     std::deque<double> systemLoad_ = {};
133     std::deque<int64_t> threads_ = {};
134 };
135 
136 class NetDetailData : public CacheBase {
137 public:
138     size_t AppendNewNetData(uint64_t newTimeStamp,
139                             uint64_t tx,
140                             uint64_t rx,
141                             uint64_t dur,
142                             double rxSpeed,
143                             double txSpeed,
144                             uint64_t packetIn,
145                             double packetInSec,
146                             uint64_t packetOut,
147                             double packetOutSec,
148                             const std::string& netType);
149     const std::deque<uint64_t>& Durs() const;
150     const std::deque<double>& RxSpeed() const;
151     const std::deque<double>& TxSpeed() const;
152     const std::deque<std::string>& NetTypes() const;
153     const std::deque<uint64_t>& RxDatas() const;
154     const std::deque<uint64_t>& TxDatas() const;
155     const std::deque<uint64_t>& PacketIn() const;
156     const std::deque<double>& PacketInSec() const;
157     const std::deque<uint64_t>& PacketOut() const;
158     const std::deque<double>& PacketOutSec() const;
159     void Clear() override;
160 
161 private:
162     std::deque<uint64_t> rxs_ = {};
163     std::deque<uint64_t> txs_ = {};
164     std::deque<uint64_t> durs_ = {};
165     std::deque<double> rxSpeeds_ = {};
166     std::deque<double> txSpeeds_ = {};
167     std::deque<uint64_t> packetIn_ = {};
168     std::deque<double> packetInSec_ = {};
169     std::deque<uint64_t> packetOut_ = {};
170     std::deque<double> packetOutSec_ = {};
171     std::deque<std::string> netTypes_ = {};
172 };
173 
174 class SmapsData : public CacheBase {
175 public:
176     void AppendNewData(uint64_t timeStamp,
177                        uint64_t ipid,
178                        std::string startAddr,
179                        std::string endAddr,
180                        uint64_t dirty,
181                        uint64_t swapper,
182                        uint64_t rss,
183                        uint64_t pss,
184                        uint64_t size,
185                        double reside,
186                        DataIndex protectionId,
187                        DataIndex pathId,
188                        uint64_t sharedClean,
189                        uint64_t sharedDirty,
190                        uint64_t privateClean,
191                        uint64_t privateDirty,
192                        uint64_t swap,
193                        uint64_t swapPss,
194                        uint32_t type);
195     const std::deque<uint64_t>& Id() const;
196     const std::deque<uint64_t>& TimeStamps() const;
197     const std::deque<uint64_t>& Ipids() const;
198     const std::deque<std::string>& StartAddrs() const;
199     const std::deque<std::string>& EndAddrs() const;
200     const std::deque<uint64_t>& Dirtys() const;
201     const std::deque<uint64_t>& Swappers() const;
202     const std::deque<uint64_t>& Rss() const;
203     const std::deque<uint64_t>& Pss() const;
204     const std::deque<uint64_t>& Sizes() const;
205     const std::deque<double>& Resides() const;
206     const std::deque<DataIndex>& ProtectionIds() const;
207     const std::deque<DataIndex>& PathIds() const;
208     const std::deque<uint64_t>& SharedClean() const;
209     const std::deque<uint64_t>& SharedDirty() const;
210     const std::deque<uint64_t>& PrivateClean() const;
211     const std::deque<uint64_t>& PrivateDirty() const;
212     const std::deque<uint64_t>& Swap() const;
213     const std::deque<uint64_t>& SwapPss() const;
214     const std::deque<uint32_t>& Type() const;
215     void Clear() override;
216 
217 private:
218     std::deque<uint64_t> ipids_ = {};
219     std::deque<std::string> startAddrs_ = {};
220     std::deque<std::string> endAddrs_ = {};
221     std::deque<uint64_t> dirtys_ = {};
222     std::deque<uint64_t> swappers_ = {};
223     std::deque<uint64_t> rss_ = {};
224     std::deque<uint64_t> pss_ = {};
225     std::deque<uint64_t> sizes_ = {};
226     std::deque<double> resides_ = {};
227     std::deque<DataIndex> protectionIds_ = {};
228     std::deque<DataIndex> pathIds_ = {};
229     std::deque<uint64_t> sharedClean_ = {};
230     std::deque<uint64_t> sharedDirty_ = {};
231     std::deque<uint64_t> privateClean_ = {};
232     std::deque<uint64_t> privateDirty_ = {};
233     std::deque<uint64_t> swap_ = {};
234     std::deque<uint64_t> swapPss_ = {};
235     std::deque<uint32_t> type_ = {};
236     uint32_t rowCount_ = 0;
237 };
238 
239 class AshMemData : public CacheBase {
240 public:
241     void AppendNewData(InternalPid ipid,
242                        uint64_t ts,
243                        uint32_t adj,
244                        uint32_t fd,
245                        DataIndex ashmemNameId,
246                        uint64_t size,
247                        uint64_t pss,
248                        uint32_t ashmemId,
249                        uint64_t time,
250                        uint64_t refCount,
251                        uint64_t purged,
252                        uint32_t flag);
253     const std::deque<InternalPid>& Ipids() const;
254     const std::deque<uint32_t>& Adjs() const;
255     const std::deque<uint32_t>& Fds() const;
256     const std::deque<DataIndex>& AshmemNameIds() const;
257     const std::deque<uint64_t>& Sizes() const;
258     const std::deque<uint64_t>& Psss() const;
259     const std::deque<uint32_t>& AshmemIds() const;
260     const std::deque<uint64_t>& Times() const;
261     const std::deque<uint64_t>& RefCounts() const;
262     const std::deque<uint64_t>& Purgeds() const;
263     const std::deque<uint32_t>& Flags() const;
264     void SetFlag(uint64_t rowId, uint32_t flag);
265     void Clear() override;
266 
267 private:
268     std::deque<InternalPid> ipids_ = {};
269     std::deque<uint32_t> adjs_ = {};
270     std::deque<uint32_t> fds_ = {};
271     std::deque<DataIndex> ashmemNameIds_ = {};
272     std::deque<uint64_t> sizes_ = {};
273     std::deque<uint64_t> psss_ = {};
274     std::deque<uint32_t> ashmemIds_ = {};
275     std::deque<uint64_t> times_ = {};
276     std::deque<uint64_t> refCounts_ = {};
277     std::deque<uint64_t> purgeds_ = {};
278     std::deque<uint32_t> flags_ = {};
279     uint32_t rowCount_ = 0;
280 };
281 
282 class DmaMemData : public CacheBase {
283 public:
284     void AppendNewData(InternalPid ipid,
285                        uint64_t ts,
286                        uint32_t fd,
287                        uint64_t size,
288                        uint32_t ino,
289                        uint32_t expPid,
290                        DataIndex expTaskCommId,
291                        DataIndex bufNameId,
292                        DataIndex expNameId,
293                        uint32_t flag);
294     const std::deque<InternalPid>& Ipids() const;
295     const std::deque<uint32_t>& Fds() const;
296     const std::deque<uint64_t>& Sizes() const;
297     const std::deque<uint32_t>& Inos() const;
298     const std::deque<uint32_t>& ExpPids() const;
299     const std::deque<DataIndex>& ExpTaskCommIds() const;
300     const std::deque<DataIndex>& BufNameIds() const;
301     const std::deque<DataIndex>& ExpNameIds() const;
302     const std::deque<uint32_t>& Flags() const;
303     void SetFlag(uint64_t rowId, uint32_t flag);
304     void Clear() override;
305 
306 private:
307     std::deque<InternalPid> ipids_ = {};
308     std::deque<uint32_t> fds_ = {};
309     std::deque<uint64_t> sizes_ = {};
310     std::deque<uint32_t> inos_ = {};
311     std::deque<uint32_t> expPids_ = {};
312     std::deque<DataIndex> expTaskCommIds_ = {};
313     std::deque<DataIndex> bufNameIds_ = {};
314     std::deque<DataIndex> expNameIds_ = {};
315     std::deque<uint32_t> flags_ = {};
316     uint32_t rowCount_ = 0;
317 };
318 
319 class GpuProcessMemData : public CacheBase {
320 public:
321     void AppendNewData(uint64_t ts,
322                        DataIndex gpuNameId,
323                        uint64_t allGpuSize,
324                        std::string addr,
325                        InternalPid ipid,
326                        InternalPid itid,
327                        uint64_t usedGpuSize);
328     const std::deque<DataIndex>& GpuNameIds() const;
329     const std::deque<uint64_t>& AllGpuSizes() const;
330     const std::deque<std::string>& Addrs() const;
331     const std::deque<InternalPid>& Ipids() const;
332     const std::deque<InternalPid>& Itids() const;
333     const std::deque<uint64_t>& UsedGpuSizes() const;
334     void Clear() override;
335 
336 private:
337     std::deque<DataIndex> gpuNameIds_ = {};
338     std::deque<uint64_t> allGpuSizes_ = {};
339     std::deque<std::string> addrs_ = {};
340     std::deque<InternalPid> ipids_ = {};
341     std::deque<InternalPid> itids_ = {};
342     std::deque<uint64_t> usedGpuSizes_ = {};
343     uint32_t rowCount_ = 0;
344 };
345 class GpuWindowMemData : public CacheBase {
346 public:
347     void AppendNewData(uint64_t ts,
348                        DataIndex windowNameId,
349                        uint64_t windowId,
350                        DataIndex moduleNameId,
351                        DataIndex categoryNameId,
352                        uint64_t size,
353                        uint32_t count,
354                        uint64_t purgeableSize);
355     void RevicesIpid(const std::map<DataIndex, InternalPid>& windowIdToIpidMap);
356     const std::deque<DataIndex>& WindowNameIds() const;
357     const std::deque<uint64_t>& WindowIds() const;
358     const std::deque<DataIndex>& ModuleNameIds() const;
359     const std::deque<DataIndex>& CategoryNameIds() const;
360     const std::deque<uint64_t>& Sizes() const;
361     const std::deque<uint32_t>& Counts() const;
362     const std::deque<uint64_t>& PurgeableSizes() const;
363     const std::deque<InternalPid>& Ipids() const;
364     void Clear() override;
365 
366 private:
367     std::deque<DataIndex> windowNameIds_ = {};
368     std::deque<uint64_t> windowIds_ = {};
369     std::deque<DataIndex> moduleNameIds_ = {};
370     std::deque<DataIndex> categoryNameIds_ = {};
371     std::deque<uint64_t> sizes_ = {};
372     std::deque<uint32_t> counts_ = {};
373     std::deque<uint64_t> purgeableSizes_ = {};
374     std::deque<InternalPid> ipids_ = {};
375     uint32_t rowCount_ = 0;
376 };
377 class CpuDumpInfo : public CacheBase {
378 public:
379     void AppendNewData(uint64_t timestamp, uint64_t size);
380     const std::deque<uint64_t>& TotalSizes() const;
381     void Clear() override;
382 
383 private:
384     std::deque<uint64_t> totalSizes_ = {};
385 };
386 
387 class ProfileMemInfo : public CacheBase {
388 public:
389     void AppendNewData(uint64_t timestamp, DataIndex channelIndex, uint64_t size);
390     const std::deque<uint64_t>& ChannelIndexs() const;
391     const std::deque<uint64_t>& TotalSizes() const;
392     void Clear() override;
393 
394 private:
395     std::deque<DataIndex> channelIndexs_ = {};
396     std::deque<uint64_t> totalSizes_ = {};
397 };
398 class RSImageDumpInfo : public CacheBase {
399 public:
400     void AppendNewData(uint64_t timestamp, uint64_t memSize, DataIndex typeIndex, InternalPid ipid, DataIndex name);
401     const std::deque<uint64_t>& MemSizes() const;
402     const std::deque<DataIndex>& TypeIndexs() const;
403     const std::deque<InternalPid>& Ipids() const;
404     const std::deque<DataIndex>& SurfaceNameIndexs() const;
405     void Clear() override;
406 
407 private:
408     std::deque<uint64_t> memSizes_ = {};
409     std::deque<DataIndex> typeIndexs_ = {};
410     std::deque<InternalPid> ipids_ = {};
411     std::deque<DataIndex> surfaceNameIndexs_ = {};
412 };
413 } // namespace TraceStdtype
414 } // namespace SysTuning
415 #endif // ACTIVITY_MONITOR_STDTYPE_H
416