From 7f63b684fc01184a2f251fe172fb0a36fa409efc Mon Sep 17 00:00:00 2001 From: Dongwoo Lee Date: Tue, 21 Jun 2022 21:38:24 +0900 Subject: [PATCH] resource: process: Add PROCESS_ATTR_MEM_GPU attribute Change-Id: Ie614d613cd242dd8dfaf4d315a0e122e88a9ae43 Signed-off-by: Dongwoo Lee --- lib/resource-monitor/resource-monitor.h | 1 + src/resource/resource-process.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/lib/resource-monitor/resource-monitor.h b/lib/resource-monitor/resource-monitor.h index bf5d57f..d31e730 100644 --- a/lib/resource-monitor/resource-monitor.h +++ b/lib/resource-monitor/resource-monitor.h @@ -126,6 +126,7 @@ extern "C" { #define PROCESS_ATTR_MEM_PSS BIT(9) /* DATA_TYPE_UINT64 */ #define PROCESS_ATTR_MEM_SWAP BIT(10) /* DATA_TYPE_UINT64 */ #define PROCESS_ATTR_MEM_SWAP_PSS BIT(11) /* DATA_TYPE_UINT64 */ +#define PROCESS_ATTR_MEM_GPU BIT(12) /* DATA_TYPE_UINT64 */ #define PROCESS_CTRL_TGID BIT(0) diff --git a/src/resource/resource-process.c b/src/resource/resource-process.c index 701e3a5..b59c06b 100644 --- a/src/resource/resource-process.c +++ b/src/resource/resource-process.c @@ -118,6 +118,9 @@ static int process_get_mem_attrs(const struct resource *res, 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; } @@ -303,6 +306,14 @@ static const struct resource_attribute process_attrs[] = { .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, + }, }, }; @@ -333,6 +344,7 @@ static int process_setup_tgid(const struct resource *res, 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; @@ -351,7 +363,7 @@ static int process_setup_tgid(const struct resource *res, 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; @@ -378,6 +390,7 @@ static int process_prepare_update(struct resource *res) 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)); @@ -385,7 +398,7 @@ static int process_prepare_update(struct resource *res) 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; -- 2.7.4