Remove mmap size of drm render node as like drm node 06/281806/2
authorSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 22 Sep 2022 04:31:10 +0000 (13:31 +0900)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Thu, 22 Sep 2022 10:20:55 +0000 (19:20 +0900)
If drm render is used as gpu, its mmap size needs to be removed
from total rss because it is already in 3d graphic memory.
Remove mmap size of drm render node.

Change-Id: I483c261efa76e04c58b45739cea7bac1f80e743f
Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
memps.c

diff --git a/memps.c b/memps.c
index d8e81f4..2504cd8 100644 (file)
--- a/memps.c
+++ b/memps.c
@@ -41,6 +41,7 @@
 #define STR_DRM_PATH1  "/drm mm object (deleted)"
 #define STR_DRM_PATH2  "/dev/dri/card"
 #define STR_DRM_DBG_DIR        "/sys/kernel/debug/dri/"
+#define STR_DRM_RENDER_PATH    "/dev/dri/renderD"
 #define MEMCG_PATH     "/sys/fs/cgroup/memory"
 #define ZRAM_USED_PATH "/sys/block/zram0/mem_used_total"
 #define ZRAM_MM_STAT_PATH      "/sys/block/zram0/mm_stat"
@@ -107,6 +108,7 @@ struct trib_mapinfo {
        unsigned peak_rss;
        unsigned other_devices;
        unsigned gem_mmap;
+       unsigned render_gem_mmap;
 };
 
 struct geminfo {
@@ -820,6 +822,7 @@ static void init_trib_mapinfo(trib_mapinfo *tmi)
        tmi->peak_rss = 0;
        tmi->other_devices = 0;
        tmi->gem_mmap = 0;
+       tmi->render_gem_mmap = 0;
 }
 
 unsigned int get_graphic_3d_meminfo(unsigned int tgid)
@@ -881,6 +884,9 @@ get_trib_mapinfo(unsigned int tgid, mapinfo *milist,
                                !strncmp(mi->name, STR_DRM_PATH2,
                                sizeof(STR_DRM_PATH2))) {
                        result->gem_mmap += mi->rss;
+               } else if (!strncmp(mi->name, STR_DRM_RENDER_PATH,
+                               sizeof(STR_DRM_RENDER_PATH))) {
+                       result->render_gem_mmap += mi->rss;
                } else {
                        result->shared_clean += mi->shared_clean;
                        result->shared_dirty += mi->shared_dirty;
@@ -910,6 +916,8 @@ get_trib_mapinfo(unsigned int tgid, mapinfo *milist,
                result->peak_rss = result->rss;
        if (result->gem_mmap > 0)
                result->peak_rss -= result->gem_mmap;
+       if (result->render_gem_mmap > 0)
+               result->peak_rss -= result->render_gem_mmap;
 
        gi = find_geminfo(tgid, gilist);
        if (gi != NULL) {