---
title: dcmi_get_device_resource_info
description: "int dcmi_get_device_resource_info (int card_id, int device_id, struct dcmi_proc_mem_info *proc_info, int *proc_num)"
url: https://www.hiascend.com/document/detail/zh/HDK/latest/A3/A3DCMI/dcmia3_114.html
sourcePath: /source/zh/HDK/2610/A3/A3DCMI/dcmia3_114.html
indexId: 251d0cd27ff1d6a2b685885970479c172652c6d7758cb3ffd1f103c03c905bb145
---
# dcmi_get_device_resource_info

#### 函数原型

int dcmi_get_device_resource_info (int card_id, int device_id, struct dcmi_proc_mem_info *proc_info, int *proc_num)


#### 功能说明

获取指定设备上的SVM模块相关业务进程及其占用的内存。


#### 参数说明

| 参数名称 | 输入/输出 | 类型 | 描述 |
| --- | --- | --- | --- |
| card\_id | 输入 | int | 设备ID，当前实际支持的ID通过dcmi\_get\_card\_num\_list接口获取。 |
| device\_id | 输入 | int | 芯片ID，通过dcmi\_get\_device\_id\_in\_card接口获取。取值范围如下： NPU芯片：[0, device\_id\_max\-1]。 说明： device\_id\_max值为2，当device\_id为0或1时表示NPU芯片；当device\_id为2时表示MCU芯片。 |
| proc\_info | 输出 | struct dcmi\_proc\_mem\_info \* | 结构体包含进程ID和进程占用的内存（byte），进程ID是host侧ID，内存是device侧OS占用的内存和业务分配的内存总和。 结构体定义如下： struct dcmi\_proc\_mem\_info { int proc\_id; //进程ID unsigned long proc\_mem\_usage; //内存占用量 }; |
| proc\_num | 输出 | int \* | 进程个数，最多32个，无业务时进程为0。 |


#### 返回值说明

| 类型 | 描述 |
| --- | --- |
| int | 处理结果： 成功：返回0。 失败：返回码请参见返回码。 |


#### 异常处理

无。


#### 约束说明

在宿主机和特权容器场景下执行该命令时可查询到宿主机、普通容器、特权容器中运行的所有进程，在普通容器场景下执行该命令时仅能查询到普通容器中运行的所有进程。


**表1 不同部署场景下的支持情况**

| 产品形态 | 物理机场景（裸机）root用户 | 物理机场景（裸机）运行用户组（非root用户） | 物理机+普通容器场景root用户 | 物理机+容器AVI场景root用户 |
| --- | --- | --- | --- | --- |
| Atlas 900 A3 SuperPoD 超节点 | Y | Y | Y | NA |
| Atlas 9000 A3 SuperPoD 集群算力系统 | Y | Y | Y | NA |
| Atlas 800T A3 超节点 | Y | Y | Y | Y |
| Atlas 800I A3 系列硬件产品 | Y | Y | Y | Y |
| A200T A3 Box8 系列硬件产品 | Y | Y | Y | NA |
| 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 | 注：Y表示支持；N表示不支持；NA表示不涉及，当前未规划此场景。 |


#### 调用示例

```
…
#define MAX_PROC_NUM_IN_DEVICE 32
int ret;
int card_id = 0;
int device_id = 0;
struct dcmi_proc_mem_info proc_info[MAX_PROC_NUM_IN_DEVICE] = {0};
int proc_num = 0;
char proc_name[16] = {0};
int name_len = 0;
ret = dcmi_get_device_resource_info(card_id, device_id, proc_info, &proc_num);
if (ret != DCMI_OK) {
printf("dcmi_get_device_resource_info failed. err is %d\n", ret);
}
return ret;
…
```
