LCOV - code coverage report
Current view: top level - acl/common - resource_statistics.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 6 6
Test Date: 2026-07-28 10:53:01 Functions: 100.0 % 3 3

            Line data    Source code
       1              : /**
       2              :  * Copyright (c) 2025 Huawei Technologies Co., Ltd.
       3              :  * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
       4              :  * CANN Open Software License Agreement Version 2.0 (the "License").
       5              :  * Please refer to the License for details. You may not use this file except in compliance with the License.
       6              :  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
       7              :  * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
       8              :  * See LICENSE in the root of the software repository for the full text of the License.
       9              :  */
      10              : 
      11              : #ifndef ACL_RESOURCE_STATISTICS_H_
      12              : #define ACL_RESOURCE_STATISTICS_H_
      13              : 
      14              : #include <atomic>
      15              : #include <cstdint>
      16              : 
      17              : #include "acl/acl_base.h"
      18              : 
      19              : #define ACL_ADD_APPLY_TOTAL_COUNT(resourceType) acl::ResourceStatistics::GetInstance().AddApplyTotalCount(resourceType)
      20              : #define ACL_ADD_APPLY_SUCCESS_COUNT(resourceType) acl::ResourceStatistics::GetInstance().AddApplySuccCount(resourceType)
      21              : #define ACL_ADD_RELEASE_TOTAL_COUNT(resourceType) \
      22              :     acl::ResourceStatistics::GetInstance().AddReleaseTotalCount(resourceType)
      23              : #define ACL_ADD_RELEASE_SUCCESS_COUNT(resourceType) \
      24              :     acl::ResourceStatistics::GetInstance().AddReleaseSuccCount(resourceType)
      25              : 
      26              : namespace acl {
      27              : enum ResourceType : int32_t {
      28              :     ACL_STATISTICS_MALLOC_FREE = 0,
      29              :     ACL_STATISTICS_MALLOC_FREE_HOST,
      30              :     ACL_STATISTICS_CREATE_DESTROY_CONTEXT,
      31              :     ACL_STATISTICS_SET_RESET_DEVICE,
      32              :     ACL_STATISTICS_CREATE_DESTROY_EVENT,
      33              :     ACL_STATISTICS_CREATE_DESTROY_STREAM,
      34              :     ACL_STATISTICS_DVPP_MALLOC_FREE,
      35              :     ACL_STATISTICS_RECORD_RESET_EVENT,
      36              :     ACL_STATISTICS_CREATE_DESTROY_DATA_BUFFER,
      37              :     ACL_STATISTICS_CREATE_DESTROY_TENSOR_DESC,
      38              :     ACL_STATISTICS_CREATE_DESTROY_DESC,
      39              :     ACL_STATISTICS_CREATE_DESTROY_DATASET,
      40              :     ACL_STATISTICS_CREATE_LOAD_UNLOAD_MODEL,
      41              :     ACL_STATISTICS_CREATE_DESTROY_AIPP,
      42              :     ACL_STATISTICS_CREATE_DESTROY_ATTR,
      43              :     ACL_STATISTICS_CREATE_DESTROY_HANDLE,
      44              :     ACL_STATISTICS_CREATE_DESTROY_DVPP_CHANNEL_DESC,
      45              :     ACL_STATISTICS_CREATE_DESTROY_DVPP_PIC_DESC,
      46              :     ACL_STATISTICS_CREATE_DESTROY_DVPP_ROI_CONFIG,
      47              :     ACL_STATISTICS_CREATE_DESTROY_DVPP_RESIZE_CONFIG,
      48              :     ACL_STATISTICS_CREATE_DESTROY_DVPP_JPEGE_CONFIG,
      49              :     ACL_STATISTICS_CREATE_DESTROY_VDEC_CHANNEL_DESC,
      50              :     ACL_STATISTICS_CREATE_DESTROY_VENC_CHANNEL_DESC,
      51              :     ACL_STATISTICS_CREATE_DESTROY_DVPP_STREAM_DESC,
      52              :     ACL_STATISTICS_CREATE_DESTROY_VDEC_FRAME_CONFIG,
      53              :     ACL_STATISTICS_CREATE_DESTROY_VENC_FRAME_CONFIG,
      54              :     ACL_STATISTICS_CREATE_DESTROY_DVPP_CHANNEL,
      55              :     ACL_STATISTICS_CREATE_DESTROY_VDEC_CHANNEL,
      56              :     ACL_STATISTICS_CREATE_DESTROY_VENC_CHANNEL,
      57              :     ACL_STATISTICS_CREATE_DESTROY_DVPP_BATCH_PIC_DESC,
      58              :     ACL_STATISTICS_CREATE_DESTROY_GROUP_INFO,
      59              :     ACL_STATISTICS_CREATE_DESTROY_PROF_CONFIG,
      60              :     ACL_STATISTICS_CREATE_DESTROY_PROF_SUB_CONFIG,
      61              :     ACL_STATISTICS_CREATE_DESTROY_MODEL_CONFIG,
      62              :     ACL_STATISTICS_CREATE_DESTROY_QUEUE_ID,
      63              :     ACL_STATISTICS_CREATE_DESTROY_QUEUE_ATTR,
      64              :     ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE,
      65              :     ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE_LIST,
      66              :     ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE_QUERY,
      67              :     ACL_STATISTICS_CREATE_DESTROY_MBUF,
      68              :     ACL_STATISTICS_CREATE_DESTROY_GRAPH_DUMP_OPTION,
      69              :     ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_DESC,
      70              :     ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_BINARY_DESC,
      71              :     ACL_STATISTICS_RESERVE_RELEASE_MEMORY_ADDRESS,
      72              :     ACL_STATISTICS_MALLOC_FREE_PHYSICAL_MEMORY,
      73              :     ACL_STATISTICS_MAP_UNMAP_MEMORY,
      74              :     ACL_STATISTICS_LOAD_UNLOAD_BINARY,
      75              :     // add enum before this comment, ACL_STATISTICS_RESOURCE_TYPE_SIZE is length of enum
      76              :     ACL_STATISTICS_RESOURCE_TYPE_SIZE,
      77              : };
      78              : 
      79              : enum ApplyReleaseType : int32_t { APPLY_TOTAL = 0, APPLY_SUCCESS, RELEASE_TOTAL, RELEASE_SUCCESS, APPLY_RELEASE_SIZE };
      80              : 
      81              : class ResourceStatisticsValue {
      82              : public:
      83           47 :     ResourceStatisticsValue() { Init(); }
      84              : 
      85           47 :     void Init()
      86              :     {
      87          235 :         for (uint32_t i = 0U; i < static_cast<uint32_t>(APPLY_RELEASE_SIZE); ++i) {
      88          188 :             (void)appplyReleaseValue[i].exchange(0U);
      89              :         }
      90           47 :     }
      91              : 
      92              :     ~ResourceStatisticsValue() = default;
      93              : 
      94              : private:
      95              :     friend class ResourceStatistics;
      96              :     std::atomic<uint64_t> appplyReleaseValue[APPLY_RELEASE_SIZE]{};
      97              : };
      98              : 
      99              : class ACL_FUNC_VISIBILITY ResourceStatistics {
     100              : public:
     101              :     static ResourceStatistics& GetInstance();
     102              :     void AddApplyTotalCount(const ResourceType theResourceType);
     103              :     void AddApplySuccCount(const ResourceType theResourceType);
     104              :     void AddReleaseTotalCount(const ResourceType theResourceType);
     105              :     void AddReleaseSuccCount(const ResourceType theResourceType);
     106              :     void TraverseStatistics() const;
     107              : 
     108              : private:
     109           48 :     ResourceStatistics() = default;
     110              :     ~ResourceStatistics() = default;
     111              :     ResourceStatisticsValue counter_[ACL_STATISTICS_RESOURCE_TYPE_SIZE];
     112              : };
     113              : } // namespace acl
     114              : 
     115              : #endif // ACL_RESOURCE_STATISTICS_H_
        

Generated by: LCOV version 2.0-1