LCOV - code coverage report
Current view: top level - acl/common - resource_statistics.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 23 25 92.0 %
Date: 2026-08-27 13:24:42 Functions: 6 6 100.0 %

          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             : #include "resource_statistics.h"
      11             : 
      12             : #include <map>
      13             : #include <string>
      14             : 
      15             : #include "common/log_inner.h"
      16             : 
      17             : namespace {
      18             :     const std::map<acl::ResourceType, std::string> RESOURCE_TPYR_TO_STRING = {
      19             :         {acl::ACL_STATISTICS_MALLOC_FREE, "ACL_STATISTICS_MALLOC_FREE"},
      20             :         {acl::ACL_STATISTICS_MALLOC_FREE_HOST, "ACL_STATISTICS_MALLOC_FREE_HOST"},
      21             :         {acl::ACL_STATISTICS_CREATE_DESTROY_CONTEXT, "ACL_STATISTICS_CREATE_DESTROY_CONTEXT"},
      22             :         {acl::ACL_STATISTICS_SET_RESET_DEVICE, "ACL_STATISTICS_SET_RESET_DEVICE"},
      23             :         {acl::ACL_STATISTICS_CREATE_DESTROY_EVENT, "ACL_STATISTICS_CREATE_DESTROY_EVENT"},
      24             :         {acl::ACL_STATISTICS_CREATE_DESTROY_STREAM, "ACL_STATISTICS_CREATE_DESTROY_STREAM"},
      25             :         {acl::ACL_STATISTICS_DVPP_MALLOC_FREE, "ACL_STATISTICS_DVPP_MALLOC_FREE"},
      26             :         {acl::ACL_STATISTICS_RECORD_RESET_EVENT, "ACL_STATISTICS_RECORD_RESET_EVENT"},
      27             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DATA_BUFFER, "ACL_STATISTICS_CREATE_DESTROY_DATA_BUFFER"},
      28             :         {acl::ACL_STATISTICS_CREATE_DESTROY_TENSOR_DESC, "ACL_STATISTICS_CREATE_DESTROY_TENSOR_DESC"},
      29             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DESC, "ACL_STATISTICS_CREATE_DESTROY_DESC"},
      30             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DATASET, "ACL_STATISTICS_CREATE_DESTROY_DATASET"},
      31             :         {acl::ACL_STATISTICS_CREATE_LOAD_UNLOAD_MODEL, "ACL_STATISTICS_CREATE_LOAD_UNLOAD_MODEL"},
      32             :         {acl::ACL_STATISTICS_CREATE_DESTROY_AIPP, "ACL_STATISTICS_CREATE_DESTROY_AIPP"},
      33             :         {acl::ACL_STATISTICS_CREATE_DESTROY_ATTR, "ACL_STATISTICS_CREATE_DESTROY_ATTR"},
      34             :         {acl::ACL_STATISTICS_CREATE_DESTROY_HANDLE, "ACL_STATISTICS_CREATE_DESTROY_HANDLE"},
      35             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DVPP_CHANNEL_DESC, "ACL_STATISTICS_CREATE_DESTROY_DVPP_CHANNEL_DESC"},
      36             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DVPP_PIC_DESC, "ACL_STATISTICS_CREATE_DESTROY_DVPP_PIC_DESC"},
      37             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DVPP_ROI_CONFIG, "ACL_STATISTICS_CREATE_DESTROY_DVPP_ROI_CONFIG"},
      38             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DVPP_RESIZE_CONFIG, "ACL_STATISTICS_CREATE_DESTROY_DVPP_RESIZE_CONFIG"},
      39             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DVPP_JPEGE_CONFIG, "ACL_STATISTICS_CREATE_DESTROY_DVPP_JPEGE_CONFIG"},
      40             :         {acl::ACL_STATISTICS_CREATE_DESTROY_VDEC_CHANNEL_DESC, "ACL_STATISTICS_CREATE_DESTROY_VDEC_CHANNEL_DESC"},
      41             :         {acl::ACL_STATISTICS_CREATE_DESTROY_VENC_CHANNEL_DESC, "ACL_STATISTICS_CREATE_DESTROY_VENC_CHANNEL_DESC"},
      42             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DVPP_STREAM_DESC, "ACL_STATISTICS_CREATE_DESTROY_DVPP_STREAM_DESC"},
      43             :         {acl::ACL_STATISTICS_CREATE_DESTROY_VDEC_FRAME_CONFIG, "ACL_STATISTICS_CREATE_DESTROY_VDEC_FRAME_CONFIG"},
      44             :         {acl::ACL_STATISTICS_CREATE_DESTROY_VENC_FRAME_CONFIG, "ACL_STATISTICS_CREATE_DESTROY_VENC_FRAME_CONFIG"},
      45             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DVPP_CHANNEL, "ACL_STATISTICS_CREATE_DESTROY_DVPP_CHANNEL"},
      46             :         {acl::ACL_STATISTICS_CREATE_DESTROY_VDEC_CHANNEL, "ACL_STATISTICS_CREATE_DESTROY_VDEC_CHANNEL"},
      47             :         {acl::ACL_STATISTICS_CREATE_DESTROY_VENC_CHANNEL, "ACL_STATISTICS_CREATE_DESTROY_VENC_CHANNEL"},
      48             :         {acl::ACL_STATISTICS_CREATE_DESTROY_DVPP_BATCH_PIC_DESC, "ACL_STATISTICS_CREATE_DESTROY_DVPP_BATCH_PIC_DESC"},
      49             :         {acl::ACL_STATISTICS_CREATE_DESTROY_GROUP_INFO, "ACL_STATISTICS_CREATE_DESTROY_GROUP_INFO"},
      50             :         {acl::ACL_STATISTICS_CREATE_DESTROY_PROF_CONFIG, "ACL_STATISTICS_CREATE_DESTROY_PROF_CONFIG"},
      51             :         {acl::ACL_STATISTICS_CREATE_DESTROY_PROF_SUB_CONFIG, "ACL_STATISTICS_CREATE_DESTROY_PROF_SUB_CONFIG"},
      52             :         {acl::ACL_STATISTICS_CREATE_DESTROY_MODEL_CONFIG, "ACL_STATISTICS_CREATE_DESTROY_MODEL_CONFIG"},
      53             :         {acl::ACL_STATISTICS_CREATE_DESTROY_QUEUE_ID, "ACL_STATISTICS_CREATE_DESTROY_QUEUE_ID"},
      54             :         {acl::ACL_STATISTICS_CREATE_DESTROY_QUEUE_ATTR, "ACL_STATISTICS_CREATE_DESTROY_QUEUE_ATTR"},
      55             :         {acl::ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE, "ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE"},
      56             :         {acl::ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE_LIST, "ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE_LIST"},
      57             :         {acl::ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE_QUERY, "ACL_STATISTICS_CREATE_DESTROY_QUEUE_ROUTE_QUERY"},
      58             :         {acl::ACL_STATISTICS_CREATE_DESTROY_MBUF, "ACL_STATISTICS_CREATE_DESTROY_MBUF"},
      59             :         {acl::ACL_STATISTICS_CREATE_DESTROY_GRAPH_DUMP_OPTION, "ACL_STATISTICS_CREATE_DESTROY_GRAPH_DUMP_OPTION"},
      60             :         {acl::ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_DESC, "ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_DESC"},
      61             :         {acl::ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_BINARY_DESC, "ACL_STATISTICS_CREATE_DESTROY_ALLOCATOR_BINARY_DESC"},
      62             :         {acl::ACL_STATISTICS_RESERVE_RELEASE_MEMORY_ADDRESS, "ACL_STATISTICS_RESERVE_RELEASE_MEMORY_ADDRESS"},
      63             :         {acl::ACL_STATISTICS_MALLOC_FREE_PHYSICAL_MEMORY, "ACL_STATISTICS_MALLOC_FREE_PHYSICAL_MEMORY"},
      64             :         {acl::ACL_STATISTICS_MAP_UNMAP_MEMORY, "ACL_STATISTICS_MAP_UNMAP_MEMORY"},
      65             :         {acl::ACL_STATISTICS_LOAD_UNLOAD_BINARY, "ACL_STATISTICS_LOAD_UNLOAD_BINARY"},
      66             :     };
      67             : }
      68             : 
      69             : namespace acl {
      70         593 : ResourceStatistics &ResourceStatistics::GetInstance()
      71             : {
      72         593 :     static ResourceStatistics theResourceStatistics;
      73         593 :     return theResourceStatistics;
      74             : }
      75             : 
      76         228 : void ResourceStatistics::AddApplyTotalCount(const ResourceType theResourceType)
      77             : {
      78         228 :     ++counter_[theResourceType].appplyReleaseValue[APPLY_TOTAL];
      79         228 : }
      80             : 
      81         137 : void ResourceStatistics::AddApplySuccCount(const ResourceType theResourceType)
      82             : {
      83         137 :     ++counter_[theResourceType].appplyReleaseValue[APPLY_SUCCESS];
      84         137 : }
      85             : 
      86         122 : void ResourceStatistics::AddReleaseTotalCount(const ResourceType theResourceType)
      87             : {
      88         122 :     ++counter_[theResourceType].appplyReleaseValue[RELEASE_TOTAL];
      89         122 : }
      90             : 
      91          76 : void ResourceStatistics::AddReleaseSuccCount(const ResourceType theResourceType)
      92             : {
      93          76 :     ++counter_[theResourceType].appplyReleaseValue[RELEASE_SUCCESS];
      94          76 : }
      95             : 
      96          30 : void ResourceStatistics::TraverseStatistics() const
      97             : {
      98        1440 :     for (uint32_t i = 0U; i < ACL_STATISTICS_RESOURCE_TYPE_SIZE; ++i) {
      99        1410 :         std::string resourceTypeToString;
     100        1410 :         const auto iter = RESOURCE_TPYR_TO_STRING.find(static_cast<ResourceType>(i));
     101        1410 :         if (iter == RESOURCE_TPYR_TO_STRING.end()) {
     102           0 :             ACL_LOG_DEBUG("The ResourceType:%u does not exist!", i);
     103           0 :             continue;
     104             :         } else {
     105        1410 :             resourceTypeToString = iter->second;
     106             :         }
     107             : 
     108        1410 :         ACL_LOG_EVENT("The ResourceType:%s, applyTotal = %lu, applySucc = %lu, releaseTotal = %lu, releaseSucc = %lu",
     109             :             resourceTypeToString.c_str(),
     110             :             counter_[i].appplyReleaseValue[APPLY_TOTAL].load(std::memory_order_relaxed),
     111             :             counter_[i].appplyReleaseValue[APPLY_SUCCESS].load(std::memory_order_relaxed),
     112             :             counter_[i].appplyReleaseValue[RELEASE_TOTAL].load(std::memory_order_relaxed),
     113             :             counter_[i].appplyReleaseValue[RELEASE_SUCCESS].load(std::memory_order_relaxed));
     114             :     }
     115          30 : }
     116             : }

Generated by: LCOV version 1.14