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