1/* 2 * Copyright (C) 2022 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 16export interface ProfilerSessionConfigBufferConfig { 17 pages: number; 18 policy: ProfilerSessionConfigBufferConfigPolicy; 19} 20 21export enum ProfilerSessionConfigBufferConfigPolicy { 22 RECYCLE = 0, 23 FLATTEN = 1, 24 UNRECOGNIZED = 2, 25} 26 27export interface ProfilerSessionConfig { 28 buffers: ProfilerSessionConfigBufferConfig[]; 29 sessionMode: ProfilerSessionConfigMode; 30 splitFile?: boolean; 31 splitFileMaxSizeMb?: number; 32 splitFileMaxNum?: number; 33 /** for OFFLINE mode, result file max size in KB */ 34 resultMaxSize: number; 35 /** if set to non-zero value, session will auto-destroyed after CreateSession in ms */ 36 keepAliveTime: number; 37} 38 39export enum ProfilerSessionConfigMode { 40 /** OFFLINE - save all plugin results to result file. */ 41 OFFLINE = 0, 42 /** ONLINE - push all plugin results to host PC with streamed FetchDataResponse. */ 43 ONLINE = 1, 44 UNRECOGNIZED = -1, 45} 46 47export interface TracePluginConfig { 48 /** kernel event set */ 49 ftraceEvents: string[]; 50 /** bytrace event set */ 51 hitraceCategories: string[]; 52 /** bytrace app set */ 53 hitraceApps: string[]; 54 /** kernel trace buffer size */ 55 bufferSizeKb: number; 56 /** time interval in milliseconds to notify service process */ 57 flushIntervalMs: number; 58 /** buffer water mark threshold to notify service process */ 59 flushThresholdKb: number; 60 /** parse /proc/kallsyms or not */ 61 parseKsyms: boolean; 62 /** value for trace_clock */ 63 clock: string; 64 /** time interval in milliseconds to read kernel trace buffer */ 65 tracePeriodMs: number; 66 /** raw data file prefix for debug */ 67 rawDataPrefix: string; 68 /** time duration in millisconds for trace actions */ 69 traceDurationMs: number; 70 /** enable debug options */ 71 debugOn: boolean; 72} 73 74export interface CreateSessionRequest { 75 requestId: number; 76 sessionConfig: ProfilerSessionConfig | undefined; 77 pluginConfigs: ProfilerPluginConfig<unknown>[]; 78} 79 80export interface ProfilerPluginConfig<T> { 81 pluginName: string; 82 sampleInterval?: number; 83 configData: T; 84 is_protobuf_serialize?: boolean; 85} 86 87export interface HiebpfConfig { 88 cmdLine: string; 89 outfileName: string; 90 splitOutfileName?: string; 91} 92 93export interface MemoryConfig { 94 /** set true to report process list */ 95 reportProcessTree: boolean; 96 /** set true to report memory counter from /proc/meminfo */ 97 reportSysmemMemInfo: boolean; 98 /** set required counter list of system meminfo, eg:MemTotal, MemFree, etc. */ 99 sysMeminfoCounters: SysMeminfoType[]; 100 /** set true to report memory counter from /proc/vmstat */ 101 reportSysmemVmemInfo: boolean; 102 /** set required counter list of virtual system meminfo, eg:nr_free_pages, nr_anon_pages, etc. */ 103 sysVmeminfoCounters: SysVMeminfoType[]; 104 /** set true to report process meminfo from /proc/${pid}/stat */ 105 reportProcessMemInfo: boolean; 106 /** set true to report application memory usage summary, eg:java heap memory, native heap, stack memory, etc. */ 107 reportAppMemInfo: boolean; 108 /** 109 * set true to report application memory by memory service, otherwise, 110 * application memory will count up by /proc/${pid}/smaps information 111 */ 112 reportAppMemByMemoryService: boolean; 113 /** set required pid list */ 114 pid: number[]; 115 /** set true to report smaps meminfo from /proc/${pid}/smaps */ 116 reportSmapsMemInfo?: boolean; 117 /** set true to report ashmem meminfo from /proc/purgeable_ashmem_trigger*/ 118 reportPurgeableAshmemInfo?: boolean; 119 /** set true to report DMA meminfo from /proc/process_dmabuf_info. */ 120 reportDmaMemInfo?: boolean; 121 /** set true to report gpu meminfo from /proc/gpu_memory. */ 122 reportGpuMemInfo?: boolean; 123 /** set true to report gpu info from hidumper. */ 124 reportGpuDumpInfo?: boolean; 125} 126 127const switchCase = (object: unknown): SysVMeminfoType => { 128 if (typeof object === 'number') { 129 let sysVMemInfos = Object.keys(SysVMeminfoType); 130 if (object < 0) { 131 let sysInfo = sysVMemInfos[0]; 132 // @ts-ignore 133 return SysVMeminfoType[sysInfo]; 134 } else { 135 let infoType = sysVMemInfos[object + 1]; 136 if (infoType) { 137 // @ts-ignore 138 return SysVMeminfoType[infoType]; 139 } 140 } 141 return SysVMeminfoType.UNRECOGNIZED; 142 } else { 143 // @ts-ignore 144 return SysVMeminfoType[object]; 145 } 146}; 147 148export function sysVMeminfoTypeFromJSON(object: unknown): SysVMeminfoType { 149 return switchCase(object); 150} 151 152export enum SysVMeminfoType { 153 UNRECOGNIZED = 'UNRECOGNIZED', 154 VMEMINFO_UNSPECIFIED = 'VMEMINFO_UNSPECIFIED', 155 VMEMINFO_NR_FREE_PAGES = 'VMEMINFO_NR_FREE_PAGES', 156 VMEMINFO_NR_ALLOC_BATCH = 'VMEMINFO_NR_ALLOC_BATCH', 157 VMEMINFO_NR_INACTIVE_ANON = 'VMEMINFO_NR_INACTIVE_ANON', 158 VMEMINFO_NR_ACTIVE_ANON = 'VMEMINFO_NR_ACTIVE_ANON', 159 VMEMINFO_NR_INACTIVE_FILE = 'VMEMINFO_NR_INACTIVE_FILE', 160 VMEMINFO_NR_ACTIVE_FILE = 'VMEMINFO_NR_ACTIVE_FILE', 161 VMEMINFO_NR_UNEVICTABLE = 'VMEMINFO_NR_UNEVICTABLE', 162 VMEMINFO_NR_MLOCK = 'VMEMINFO_NR_MLOCK', 163 VMEMINFO_NR_ANON_PAGES = 'VMEMINFO_NR_ANON_PAGES', 164 VMEMINFO_NR_MAPPED = 'VMEMINFO_NR_MAPPED', 165 VMEMINFO_NR_FILE_PAGES = 'VMEMINFO_NR_FILE_PAGES', 166 VMEMINFO_NR_DIRTY = 'VMEMINFO_NR_DIRTY', 167 VMEMINFO_NR_WRITEBACK = 'VMEMINFO_NR_WRITEBACK', 168 VMEMINFO_NR_SLAB_RECLAIMABLE = 'VMEMINFO_NR_SLAB_RECLAIMABLE', 169 VMEMINFO_NR_SLAB_UNRECLAIMABLE = 'VMEMINFO_NR_SLAB_UNRECLAIMABLE', 170 VMEMINFO_NR_PAGE_TABLE_PAGES = 'VMEMINFO_NR_PAGE_TABLE_PAGES', 171 VMEMINFO_NR_KERNEL_STACK = 'VMEMINFO_NR_KERNEL_STACK', 172 VMEMINFO_NR_OVERHEAD = 'VMEMINFO_NR_OVERHEAD', 173 VMEMINFO_NR_UNSTABLE = 'VMEMINFO_NR_UNSTABLE', 174 VMEMINFO_NR_BOUNCE = 'VMEMINFO_NR_BOUNCE', 175 VMEMINFO_NR_VMSCAN_WRITE = 'VMEMINFO_NR_VMSCAN_WRITE', 176 VMEMINFO_NR_VMSCAN_IMMEDIATE_RECLAIM = 'VMEMINFO_NR_VMSCAN_IMMEDIATE_RECLAIM', 177 VMEMINFO_NR_WRITEBACK_TEMP = 'VMEMINFO_NR_WRITEBACK_TEMP', 178 VMEMINFO_NR_ISOLATED_ANON = 'VMEMINFO_NR_ISOLATED_ANON', 179 VMEMINFO_NR_ISOLATED_FILE = 'VMEMINFO_NR_ISOLATED_FILE', 180 VMEMINFO_NR_SHMEM = 'VMEMINFO_NR_SHMEM', 181 VMEMINFO_NR_DIRTIED = 'VMEMINFO_NR_DIRTIED', 182 VMEMINFO_NR_WRITTEN = 'VMEMINFO_NR_WRITTEN', 183 VMEMINFO_NR_PAGES_SCANNED = 'VMEMINFO_NR_PAGES_SCANNED', 184 VMEMINFO_WORKINGSET_REFAULT = 'VMEMINFO_WORKINGSET_REFAULT', 185 VMEMINFO_WORKINGSET_ACTIVATE = 'VMEMINFO_WORKINGSET_ACTIVATE', 186 VMEMINFO_WORKINGSET_NODERECLAIM = 'VMEMINFO_WORKINGSET_NODERECLAIM', 187 VMEMINFO_NR_ANON_TRANSPARENT_HUGEPAGES = 'VMEMINFO_NR_ANON_TRANSPARENT_HUGEPAGES', 188 VMEMINFO_NR_FREE_CMA = 'VMEMINFO_NR_FREE_CMA', 189 VMEMINFO_NR_SWAPCACHE = 'VMEMINFO_NR_SWAPCACHE', 190 VMEMINFO_NR_DIRTY_THRESHOLD = 'VMEMINFO_NR_DIRTY_THRESHOLD', 191 VMEMINFO_NR_DIRTY_BACKGROUND_THRESHOLD = 'VMEMINFO_NR_DIRTY_BACKGROUND_THRESHOLD', 192 VMEMINFO_PGPGIN = 'VMEMINFO_PGPGIN', 193 VMEMINFO_PGPGOUT = 'VMEMINFO_PGPGOUT', 194 VMEMINFO_PGPGOUTCLEAN = 'VMEMINFO_PGPGOUTCLEAN', 195 VMEMINFO_PSWPIN = 'VMEMINFO_PSWPIN', 196 VMEMINFO_PSWPOUT = 'VMEMINFO_PSWPOUT', 197 VMEMINFO_PGALLOC_DMA = 'VMEMINFO_PGALLOC_DMA', 198 VMEMINFO_PGALLOC_NORMAL = 'VMEMINFO_PGALLOC_NORMAL', 199 VMEMINFO_PGALLOC_MOVABLE = 'VMEMINFO_PGALLOC_MOVABLE', 200 VMEMINFO_PGFREE = 'VMEMINFO_PGFREE', 201 VMEMINFO_PGACTIVATE = 'VMEMINFO_PGACTIVATE', 202 VMEMINFO_PGDEACTIVATE = 'VMEMINFO_PGDEACTIVATE', 203 VMEMINFO_PGFAULT = 'VMEMINFO_PGFAULT', 204 VMEMINFO_PGMAJFAULT = 'VMEMINFO_PGMAJFAULT', 205 VMEMINFO_PGREFILL_DMA = 'VMEMINFO_PGREFILL_DMA', 206 VMEMINFO_PGREFILL_NORMAL = 'VMEMINFO_PGREFILL_NORMAL', 207 VMEMINFO_PGREFILL_MOVABLE = 'VMEMINFO_PGREFILL_MOVABLE', 208 VMEMINFO_PGSTEAL_KSWAPD_DMA = 'VMEMINFO_PGSTEAL_KSWAPD_DMA', 209 VMEMINFO_PGSTEAL_KSWAPD_NORMAL = 'VMEMINFO_PGSTEAL_KSWAPD_NORMAL', 210 VMEMINFO_PGSTEAL_KSWAPD_MOVABLE = 'VMEMINFO_PGSTEAL_KSWAPD_MOVABLE', 211 VMEMINFO_PGSTEAL_DIRECT_DMA = 'VMEMINFO_PGSTEAL_DIRECT_DMA', 212 VMEMINFO_PGSTEAL_DIRECT_NORMAL = 'VMEMINFO_PGSTEAL_DIRECT_NORMAL', 213 VMEMINFO_PGSTEAL_DIRECT_MOVABLE = 'VMEMINFO_PGSTEAL_DIRECT_MOVABLE', 214 VMEMINFO_PGSCAN_KSWAPD_DMA = 'VMEMINFO_PGSCAN_KSWAPD_DMA', 215 VMEMINFO_PGSCAN_KSWAPD_NORMAL = 'VMEMINFO_PGSCAN_KSWAPD_NORMAL', 216 VMEMINFO_PGSCAN_KSWAPD_MOVABLE = 'VMEMINFO_PGSCAN_KSWAPD_MOVABLE', 217 VMEMINFO_PGSCAN_DIRECT_DMA = 'VMEMINFO_PGSCAN_DIRECT_DMA', 218 VMEMINFO_PGSCAN_DIRECT_NORMAL = 'VMEMINFO_PGSCAN_DIRECT_NORMAL', 219 VMEMINFO_PGSCAN_DIRECT_MOVABLE = 'VMEMINFO_PGSCAN_DIRECT_MOVABLE', 220 VMEMINFO_PGSCAN_DIRECT_THROTTLE = 'VMEMINFO_PGSCAN_DIRECT_THROTTLE', 221 VMEMINFO_PGINODESTEAL = 'VMEMINFO_PGINODESTEAL', 222 VMEMINFO_SLABS_SCANNED = 'VMEMINFO_SLABS_SCANNED', 223 VMEMINFO_KSWAPD_INODESTEAL = 'VMEMINFO_KSWAPD_INODESTEAL', 224 VMEMINFO_KSWAPD_LOW_WMARK_HIT_QUICKLY = 'VMEMINFO_KSWAPD_LOW_WMARK_HIT_QUICKLY', 225 VMEMINFO_KSWAPD_HIGH_WMARK_HIT_QUICKLY = 'VMEMINFO_KSWAPD_HIGH_WMARK_HIT_QUICKLY', 226 VMEMINFO_PAGEOUTRUN = 'VMEMINFO_PAGEOUTRUN', 227 VMEMINFO_ALLOCSTALL = 'VMEMINFO_ALLOCSTALL', 228 VMEMINFO_PGROTATED = 'VMEMINFO_PGROTATED', 229 VMEMINFO_DROP_PAGECACHE = 'VMEMINFO_DROP_PAGECACHE', 230 VMEMINFO_DROP_SLAB = 'VMEMINFO_DROP_SLAB', 231 VMEMINFO_PGMIGRATE_SUCCESS = 'VMEMINFO_PGMIGRATE_SUCCESS', 232 VMEMINFO_PGMIGRATE_FAIL = 'VMEMINFO_PGMIGRATE_FAIL', 233 VMEMINFO_COMPACT_MIGRATE_SCANNED = 'VMEMINFO_COMPACT_MIGRATE_SCANNED', 234 VMEMINFO_COMPACT_FREE_SCANNED = 'VMEMINFO_COMPACT_FREE_SCANNED', 235 VMEMINFO_COMPACT_ISOLATED = 'VMEMINFO_COMPACT_ISOLATED', 236 VMEMINFO_COMPACT_STALL = 'VMEMINFO_COMPACT_STALL', 237 VMEMINFO_COMPACT_FAIL = 'VMEMINFO_COMPACT_FAIL', 238 VMEMINFO_COMPACT_SUCCESS = 'VMEMINFO_COMPACT_SUCCESS', 239 VMEMINFO_COMPACT_DAEMON_WAKE = 'VMEMINFO_COMPACT_DAEMON_WAKE', 240 VMEMINFO_UNEVICTABLE_PGS_CULLED = 'VMEMINFO_UNEVICTABLE_PGS_CULLED', 241 VMEMINFO_UNEVICTABLE_PGS_SCANNED = 'VMEMINFO_UNEVICTABLE_PGS_SCANNED ', 242 VMEMINFO_UNEVICTABLE_PGS_RESCUED = 'VMEMINFO_UNEVICTABLE_PGS_RESCUED', 243 VMEMINFO_UNEVICTABLE_PGS_MLOCKED = 'VMEMINFO_UNEVICTABLE_PGS_MLOCKED', 244 VMEMINFO_UNEVICTABLE_PGS_MUNLOCKED = 'VMEMINFO_UNEVICTABLE_PGS_MUNLOCKED', 245 VMEMINFO_UNEVICTABLE_PGS_CLEARED = 'VMEMINFO_UNEVICTABLE_PGS_CLEARED', 246 VMEMINFO_UNEVICTABLE_PGS_STRANDED = 'VMEMINFO_UNEVICTABLE_PGS_STRANDED', 247 VMEMINFO_NR_ZSPAGES = 'VMEMINFO_NR_ZSPAGES', 248 VMEMINFO_NR_ION_HEAP = 'VMEMINFO_NR_ION_HEAP', 249 VMEMINFO_NR_GPU_HEAP = 'VMEMINFO_NR_GPU_HEAP', 250 VMEMINFO_ALLOCSTALL_DMA = 'VMEMINFO_ALLOCSTALL_DMA', 251 VMEMINFO_ALLOCSTALL_MOVABLE = 'VMEMINFO_ALLOCSTALL_MOVABLE', 252 VMEMINFO_ALLOCSTALL_NORMAL = 'VMEMINFO_ALLOCSTALL_NORMAL', 253 VMEMINFO_COMPACT_DAEMON_FREE_SCANNED = 'VMEMINFO_COMPACT_DAEMON_FREE_SCANNED', 254 VMEMINFO_COMPACT_DAEMON_MIGRATE_SCANNED = 'VMEMINFO_COMPACT_DAEMON_MIGRATE_SCANNED', 255 VMEMINFO_NR_FASTRPC = 'VMEMINFO_NR_FASTRPC', 256 VMEMINFO_NR_INDIRECTLY_RECLAIMABLE = 'VMEMINFO_NR_INDIRECTLY_RECLAIMABLE', 257 VMEMINFO_NR_ION_HEAP_POOL = 'VMEMINFO_NR_ION_HEAP_POOL', 258 VMEMINFO_NR_KERNEL_MISC_RECLAIMABLE = 'VMEMINFO_NR_KERNEL_MISC_RECLAIMABLE', 259 VMEMINFO_NR_SHADOW_CALL_STACK_BYTES = 'VMEMINFO_NR_SHADOW_CALL_STACK_BYTES', 260 VMEMINFO_NR_SHMEM_HUGEPAGES = 'VMEMINFO_NR_SHMEM_HUGEPAGES', 261 VMEMINFO_NR_SHMEM_PMDMAPPED = 'VMEMINFO_NR_SHMEM_PMDMAPPED', 262 VMEMINFO_NR_UNRECLAIMABLE_PAGES = 'VMEMINFO_NR_UNRECLAIMABLE_PAGES', 263 VMEMINFO_NR_ZONE_ACTIVE_ANON = 'VMEMINFO_NR_ZONE_ACTIVE_ANON', 264 VMEMINFO_NR_ZONE_ACTIVE_FILE = 'VMEMINFO_NR_ZONE_ACTIVE_FILE', 265 VMEMINFO_NR_ZONE_INACTIVE_ANON = 'VMEMINFO_NR_ZONE_INACTIVE_ANON', 266 VMEMINFO_NR_ZONE_INACTIVE_FILE = 'VMEMINFO_NR_ZONE_INACTIVE_FILE', 267 VMEMINFO_NR_ZONE_UNEVICTABLE = 'VMEMINFO_NR_ZONE_UNEVICTABLE', 268 VMEMINFO_NR_ZONE_WRITE_PENDING = 'VMEMINFO_NR_ZONE_WRITE_PENDING', 269 VMEMINFO_OOM_KILL = 'VMEMINFO_OOM_KILL ', 270 VMEMINFO_PGLAZYFREE = 'VMEMINFO_PGLAZYFREE', 271 VMEMINFO_PGLAZYFREED = 'VMEMINFO_PGLAZYFREED', 272 VMEMINFO_PGREFILL = 'VMEMINFO_PGREFILL', 273 VMEMINFO_PGSCAN_DIRECT = 'VMEMINFO_PGSCAN_DIRECT', 274 VMEMINFO_PGSCAN_KSWAPD = 'VMEMINFO_PGSCAN_KSWAPD', 275 VMEMINFO_PGSKIP_DMA = 'VMEMINFO_PGSKIP_DMA', 276 VMEMINFO_PGSKIP_MOVABLE = 'VMEMINFO_PGSKIP_MOVABLE', 277 VMEMINFO_PGSKIP_NORMAL = 'VMEMINFO_PGSKIP_NORMAL', 278 VMEMINFO_PGSTEAL_DIRECT = 'VMEMINFO_PGSTEAL_DIRECT', 279 VMEMINFO_PGSTEAL_KSWAPD = 'VMEMINFO_PGSTEAL_KSWAPD', 280 VMEMINFO_SWAP_RA = 'VMEMINFO_SWAP_RA', 281 VMEMINFO_SWAP_RA_HIT = 'VMEMINFO_SWAP_RA_HIT', 282 VMEMINFO_WORKINGSET_RESTORE = 'VMEMINFO_WORKINGSET_RESTORE', 283} 284 285export enum SysMeminfoType { 286 MEMINFO_UNSPECIFIED = 'PMEM_UNSPECIFIED', 287 MEMINFO_MEM_TOTAL = 'PMEM_MEM_TOTAL', 288 MEMINFO_MEM_FREE = 'PMEM_MEM_FREE', 289 MEMINFO_MEM_AVAILABLE = 'PMEM_MEM_AVAILABLE', 290 MEMINFO_BUFFERS = 'PMEM_BUFFERS', 291 MEMINFO_CACHED = 'PMEM_CACHED', 292 MEMINFO_SWAP_CACHED = 'PMEM_SWAP_CACHED', 293 MEMINFO_ACTIVE = 'PMEM_ACTIVE', 294 MEMINFO_INACTIVE = 'PMEM_INACTIVE', 295 MEMINFO_ACTIVE_ANON = 'PMEM_ACTIVE_ANON', 296 MEMINFO_INACTIVE_ANON = 'PMEM_INACTIVE_ANON', 297 MEMINFO_ACTIVE_FILE = 'PMEM_ACTIVE_FILE', 298 MEMINFO_INACTIVE_FILE = 'PMEM_INACTIVE_FILE', 299 MEMINFO_UNEVICTABLE = 'PMEM_UNEVICTABLE', 300 MEMINFO_MLOCKED = 'PMEM_MLOCKED', 301 MEMINFO_SWAP_TOTAL = 'PMEM_SWAP_TOTAL', 302 MEMINFO_SWAP_FREE = 'PMEM_SWAP_FREE', 303 MEMINFO_DIRTY = 'PMEM_DIRTY', 304 MEMINFO_WRITEBACK = 'PMEM_WRITEBACK', 305 MEMINFO_ANON_PAGES = 'PMEM_ANON_PAGES', 306 MEMINFO_MAPPED = 'PMEM_MAPPED', 307 MEMINFO_SHMEM = 'PMEM_SHMEM', 308 MEMINFO_SLAB = 'PMEM_SLAB', 309 MEMINFO_SLAB_RECLAIMABLE = 'PMEM_SLAB_RECLAIMABLE', 310 MEMINFO_SLAB_UNRECLAIMABLE = 'PMEM_SLAB_UNRECLAIMABLE', 311 MEMINFO_KERNEL_STACK = 'PMEM_KERNEL_STACK', 312 MEMINFO_PAGE_TABLES = 'PMEM_PAGE_TABLES', 313 MEMINFO_COMMIT_LIMIT = 'PMEM_COMMIT_LIMIT', 314 MEMINFO_COMMITED_AS = 'PMEM_COMMITED_AS', 315 MEMINFO_VMALLOC_TOTAL = 'PMEM_VMALLOC_TOTAL', 316 MEMINFO_VMALLOC_USED = 'PMEM_VMALLOC_USED', 317 MEMINFO_VMALLOC_CHUNK = 'PMEM_VMALLOC_CHUNK', 318 MEMINFO_CMA_TOTAL = 'PMEM_CMA_TOTAL', 319 MEMINFO_CMA_FREE = 'PMEM_CMA_FREE', 320 MEMINFO_KERNEL_RECLAIMABLE = 'PMEM_KERNEL_RECLAIMABLE', 321 PMEM_ACTIVE_PURG = 'PMEM_ACTIVE_PURG', 322 PMEM_INACTIVE_PURG = 'PMEM_INACTIVE_PURG', 323 PMEM_PINED_PURG = 'PMEM_PINED_PURG', 324 UNRECOGNIZED = 'UNRECOGNIZED', 325} 326 327const sysMemInfo = [ 328 SysMeminfoType.MEMINFO_UNSPECIFIED, 329 SysMeminfoType.MEMINFO_MEM_TOTAL, 330 SysMeminfoType.MEMINFO_MEM_FREE, 331 SysMeminfoType.MEMINFO_MEM_AVAILABLE, 332 SysMeminfoType.MEMINFO_BUFFERS, 333 SysMeminfoType.MEMINFO_CACHED, 334 SysMeminfoType.MEMINFO_SWAP_CACHED, 335 SysMeminfoType.MEMINFO_ACTIVE, 336 SysMeminfoType.MEMINFO_INACTIVE, 337 SysMeminfoType.MEMINFO_ACTIVE_ANON, 338 SysMeminfoType.MEMINFO_INACTIVE_ANON, 339 SysMeminfoType.MEMINFO_ACTIVE_FILE, 340 SysMeminfoType.MEMINFO_INACTIVE_FILE, 341 SysMeminfoType.MEMINFO_UNEVICTABLE, 342 SysMeminfoType.MEMINFO_MLOCKED, 343 SysMeminfoType.MEMINFO_SWAP_TOTAL, 344 SysMeminfoType.MEMINFO_SWAP_FREE, 345 SysMeminfoType.MEMINFO_DIRTY, 346 SysMeminfoType.MEMINFO_WRITEBACK, 347 SysMeminfoType.MEMINFO_ANON_PAGES, 348 SysMeminfoType.MEMINFO_MAPPED, 349 SysMeminfoType.MEMINFO_SHMEM, 350 SysMeminfoType.MEMINFO_SLAB, 351 SysMeminfoType.MEMINFO_SLAB_RECLAIMABLE, 352 SysMeminfoType.MEMINFO_SLAB_UNRECLAIMABLE, 353 SysMeminfoType.MEMINFO_KERNEL_STACK, 354 SysMeminfoType.MEMINFO_PAGE_TABLES, 355 SysMeminfoType.MEMINFO_COMMIT_LIMIT, 356 SysMeminfoType.MEMINFO_COMMITED_AS, 357 SysMeminfoType.MEMINFO_VMALLOC_TOTAL, 358 SysMeminfoType.MEMINFO_VMALLOC_USED, 359 SysMeminfoType.MEMINFO_VMALLOC_CHUNK, 360 SysMeminfoType.MEMINFO_CMA_TOTAL, 361 SysMeminfoType.MEMINFO_CMA_FREE, 362 SysMeminfoType.MEMINFO_KERNEL_RECLAIMABLE, 363 SysMeminfoType.PMEM_ACTIVE_PURG, 364 SysMeminfoType.PMEM_INACTIVE_PURG, 365 SysMeminfoType.PMEM_PINED_PURG, 366 SysMeminfoType.UNRECOGNIZED, 367]; 368 369const sysMeminfoCase = (object: unknown): SysMeminfoType => { 370 if (typeof object === 'number') { 371 if (object >= 0) { 372 let sysMemType = sysMemInfo[object]; 373 if (sysMemType) { 374 return sysMemType; 375 } 376 } 377 return SysMeminfoType.UNRECOGNIZED; 378 } else { 379 // @ts-ignore 380 let sysMemType = SysMeminfoType[object]; 381 if (!sysMemType) { 382 return SysMeminfoType.UNRECOGNIZED; 383 } 384 return sysMemType; 385 } 386}; 387 388export function sysMeminfoTypeFromJSON(object: unknown): SysMeminfoType { 389 return sysMeminfoCase(object); 390} 391 392export enum Type { 393 TYPE_UNSPECIFIED = 0, 394 HI3516 = 1, 395 P40 = 2, 396 UNRECOGNIZED = -1, 397} 398 399export interface HilogConfig { 400 pid: number; 401 logLevel: Level; 402 needClear: boolean; 403} 404 405export function levelFromJSON(object: unknown): Level { 406 switch (object) { 407 case 0: 408 case 'LEVEL_UNSPECIFIED': 409 return Level.LEVEL_UNSPECIFIED; 410 case 1: 411 case 'Error': 412 return Level.LOG_ERROR; 413 case 2: 414 case 'Info': 415 return Level.LOG_INFO; 416 case 3: 417 case 'Debug': 418 return Level.LOG_DEBUG; 419 case 4: 420 case 'Warn': 421 return Level.LOG_WARN; 422 case 5: 423 case 'Fatal': 424 return Level.LOG_FATAL; 425 case -1: 426 case 'UNRECOGNIZED': 427 default: 428 return Level.UNRECOGNIZED; 429 } 430} 431 432export enum Level { 433 LEVEL_UNSPECIFIED = 'LEVEL_UNSPECIFIED', 434 LOG_ERROR = 'ERROR', 435 LOG_INFO = 'INFO', 436 LOG_DEBUG = 'DEBUG', 437 LOG_WARN = 'WARN', 438 LOG_FATAL = 'FATAL', 439 UNRECOGNIZED = -1, 440} 441 442export interface NativeHookConfig { 443 pid?: number; 444 saveFile: boolean; 445 fileName: string; 446 filterSize: number; 447 smbPages: number; 448 maxStackDepth: number; 449 processName: string; 450 stringCompressed: boolean; 451 fpUnwind: boolean; 452 blocked: boolean; 453 recordAccurately?: boolean; 454 offlineSymbolization?: boolean; 455 callframeCompress?: boolean; 456 startupMode?: boolean; 457 statisticsInterval?: number; 458 mallocFreeMatchingInterval?: number; 459 sampleInterval?: number; 460 expandPids?: number[]; 461 responseLibraryMode?: boolean; 462 jsStackReport?: number; 463 maxJsStackDepth?: number; 464 filterNapiName?: string; 465} 466 467export interface FpsConfig { 468 reportFps: boolean; 469} 470 471export interface ProcessConfig { 472 report_process_tree: boolean; 473 report_cpu: boolean; 474 report_diskio: boolean; 475 report_pss: boolean; 476} 477 478export interface CpuConfig { 479 pid: number; 480 reportProcessInfo: boolean; 481} 482 483enum IoReportType { 484 UNSPECIFIED = 'UNSPECIFIED', 485 IO_REPORT = 'IO_REPORT', 486 IO_REPORT_EX = 'IO_REPORT_EX', 487} 488 489export interface DiskioConfig { 490 reportIoStats: string; 491} 492 493export interface NetworkConfig {} 494 495export interface HiperfPluginConfig { 496 isRoot: boolean; 497 outfileName: string; 498 recordArgs: string; 499 splitOutfileName?: string; 500} 501 502export interface NativePluginConfig { 503 save_file: boolean; 504 smb_pages: number; 505 max_stack_depth: number; 506 process_name?: string; 507 string_compressed: boolean; 508 fp_unwind: boolean; 509 blocked: boolean; 510 callframe_compress: boolean; 511 record_accurately: boolean; 512 offline_symbolization: boolean; 513 startup_mode: boolean; 514 js_stack_report: number; 515 max_js_stack_depth: number; 516 filter_napi_name: string; 517 memtrace_enable: boolean; 518 malloc_disable: boolean; 519 pid?:number; 520} 521 522export interface HiSystemEventConfig { 523 msg: string; 524 subscribe_domain: string; 525 subscribe_event: string; 526} 527 528export interface ArkTSConfig { 529 pid: number; 530 type: number; 531 interval: number; 532 capture_numeric_value: boolean; 533 track_allocations: boolean; 534 enable_cpu_profiler: boolean; 535 cpu_profiler_interval: number; 536 splitOutfileName?: string; 537} 538 539export interface FFRTConfig { 540 pid?: number[]; 541 startupProcessName?: string[]; 542 restartProcessName?: string[]; 543 smbPages?: number; 544 flushInterval?: number; 545 block?: boolean; 546 clockId?: string; 547} 548