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

            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          692 : ResourceStatistics& ResourceStatistics::GetInstance()
      71              : {
      72          692 :     static ResourceStatistics theResourceStatistics;
      73          692 :     return theResourceStatistics;
      74              : }
      75              : 
      76          260 : void ResourceStatistics::AddApplyTotalCount(const ResourceType theResourceType)
      77              : {
      78          260 :     ++counter_[theResourceType].appplyReleaseValue[APPLY_TOTAL];
      79          260 : }
      80              : 
      81          159 : void ResourceStatistics::AddApplySuccCount(const ResourceType theResourceType)
      82              : {
      83          159 :     ++counter_[theResourceType].appplyReleaseValue[APPLY_SUCCESS];
      84          159 : }
      85              : 
      86          140 : void ResourceStatistics::AddReleaseTotalCount(const ResourceType theResourceType)
      87              : {
      88          140 :     ++counter_[theResourceType].appplyReleaseValue[RELEASE_TOTAL];
      89          140 : }
      90              : 
      91           94 : void ResourceStatistics::AddReleaseSuccCount(const ResourceType theResourceType)
      92              : {
      93           94 :     ++counter_[theResourceType].appplyReleaseValue[RELEASE_SUCCESS];
      94           94 : }
      95              : 
      96           33 : void ResourceStatistics::TraverseStatistics() const
      97              : {
      98         1584 :     for (uint32_t i = 0U; i < ACL_STATISTICS_RESOURCE_TYPE_SIZE; ++i) {
      99         1551 :         std::string resourceTypeToString;
     100         1551 :         const auto iter = RESOURCE_TPYR_TO_STRING.find(static_cast<ResourceType>(i));
     101         1551 :         if (iter == RESOURCE_TPYR_TO_STRING.end()) {
     102            0 :             ACL_LOG_DEBUG("The ResourceType:%u does not exist!", i);
     103            0 :             continue;
     104            0 :         } else {
     105         1551 :             resourceTypeToString = iter->second;
     106              :         }
     107              : 
     108         1551 :         ACL_LOG_EVENT(
     109              :             "The ResourceType:%s, applyTotal = %lu, applySucc = %lu, releaseTotal = %lu, releaseSucc = %lu",
     110              :             resourceTypeToString.c_str(), 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         1551 :     }
     115           33 : }
     116              : } // namespace acl
        

Generated by: LCOV version 2.0-1