case PROCESS_ATTR_MEM_SWAP_PSS:
*mem = (u_int64_t)ctx->map_info.swap_pss * 1024;
break;
+ case PROCESS_ATTR_MEM_GPU:
+ *mem = (u_int64_t)ctx->map_info.gpu_mem * 1024;
+ break;
default:
return -EINVAL;
}
.get = process_get_mem_attrs,
.is_supported = resource_attr_supported_always,
},
+ }, {
+ .name = "PROCESS_ATTR_MEM_GPU",
+ .id = PROCESS_ATTR_MEM_GPU,
+ .type = DATA_TYPE_UINT64,
+ .ops = {
+ .get = process_get_mem_attrs,
+ .is_supported = resource_attr_supported_always,
+ },
},
};
struct process_context *ctx;
u_int64_t total_memory;
int ret;
+ bool include_gpu_mem = is_resource_attr_interested(res, PROCESS_GROUP_ATTR_MEM_GPU);
if (!res || !res->priv || !ctrl)
return -EINVAL;
if (ret < 0)
return ret;
- ret = kernel_get_thread_group_map_info(&ctx->map_info, ctx->tgid, false);
+ ret = kernel_get_thread_group_map_info(&ctx->map_info, ctx->tgid, include_gpu_mem);
if (ret < 0)
return ret;
struct process_context *ctx = res->priv;
u_int64_t total_time;
int ret, online;
+ bool include_gpu_mem = is_resource_attr_interested(res, PROCESS_GROUP_ATTR_MEM_GPU);
memcpy(&ctx->prev, &ctx->curr, sizeof(struct taskstats));
if (ret < 0)
return ret;
- ret = kernel_get_thread_group_map_info(&ctx->map_info, ctx->tgid, false);
+ ret = kernel_get_thread_group_map_info(&ctx->map_info, ctx->tgid, include_gpu_mem);
if (ret < 0)
return ret;