lowmem: Move oom level to libsyscommon 09/296509/4
authorUnsung Lee <unsung.lee@samsung.com>
Sun, 30 Jul 2023 06:58:47 +0000 (15:58 +0900)
committerChanwoo Choi <cw00.choi@samsung.com>
Mon, 31 Jul 2023 02:40:02 +0000 (02:40 +0000)
enum oom_level needs to be referenced by both resourced lowmem module and
resourced plugin-backend (i.e., LMK governor). Therefore, it should be located
a shared library (i.e., libsyscommon) which can be accessed by both sides.
In addition, add corresponding header file from libsyscommon.

Change-Id: I1f6c9676e1cdf9f436cbaa5413ed433dfe6e4ffe
Signed-off-by: Unsung Lee <unsung.lee@samsung.com>
src/common/cgroup/memory-cgroup.c
src/common/cgroup/memory-cgroup.h
src/resource-limiter/memory/lowmem.c
src/resource-limiter/memory/lowmem.h
src/resource-optimizer/memory/swap/swap.c

index 1aa7805..009ba88 100644 (file)
@@ -97,7 +97,8 @@ int cgroup_get_type(int oom_score_adj)
                return MEMCG_ROOT;
 }
 
-int cgroup_get_lowest_oom_score_adj(enum oom_level oom_level)
+int cgroup_get_lowest_oom_score_adj(
+               enum syscommon_resourced_memory_lmk_oom_level oom_level)
 {
         switch (oom_level) {
         case OOM_LEVEL_BACKGROUND_LEAST_RECENTLY_USED:
@@ -117,7 +118,8 @@ int cgroup_get_lowest_oom_score_adj(enum oom_level oom_level)
         }
 }
 
-int cgroup_get_highest_oom_score_adj(enum oom_level oom_level)
+int cgroup_get_highest_oom_score_adj(
+               enum syscommon_resourced_memory_lmk_oom_level oom_level)
 {
         switch (oom_level) {
         case OOM_LEVEL_BACKGROUND_LEAST_RECENTLY_USED:
index 974208c..25154d1 100644 (file)
 #include "cgroup.h"
 #include "const.h"
 
+/**
+ * FIXME: Remove this header from common code.
+ * Currently, some lowmem module code is located in common memory-cgroup.h.
+ * Therefore, no choice to include this header file before moving lowmem module
+ * code to correctt location.
+ */
+#include <system/syscommon-plugin-resourced-memory-lmk.h>
+
 #ifdef __cplusplus
 extern "C" {
 #endif /* __cplusplus */
@@ -72,14 +80,6 @@ enum {
        MEM_LEVEL_MAX,
 };
 
-enum oom_level {
-       OOM_LEVEL_BACKGROUND_LEAST_RECENTLY_USED,
-       OOM_LEVEL_BACKGROUND_MOST_RECENTLY_USED,
-       OOM_LEVEL_FOREGROUND,
-       OOM_LEVEL_FOREGROUND_AND_PROC,
-       OOM_LEVEL_ALL,
-};
-
 enum lowmem_control_type {
        LOWMEM_MOVE_CGROUP,
        LOWMEM_MANAGE_FOREGROUND,
@@ -263,14 +263,16 @@ int cgroup_get_type(int oom_score_adj);
  * @param oom_level - oom level
  * @return oom_score_adj
  */
-int cgroup_get_highest_oom_score_adj(enum oom_level oom_level);
+int cgroup_get_highest_oom_score_adj(
+               enum syscommon_resourced_memory_lmk_oom_level oom_level);
 
 /**
  * @desc Get the lowest oom_score_adj of the cgroup type
  * @param oom_level - oom level
  * @return oom_score_adj
  */
-int cgroup_get_lowest_oom_score_adj(enum oom_level oom_level);
+int cgroup_get_lowest_oom_score_adj(
+               enum syscommon_resourced_memory_lmk_oom_level oom_level);
 struct memcg_info *get_memcg_info(int idx);
 struct cgroup *get_cgroup_tree(int idx);
 
index 2f72a1c..ce6e6d2 100644 (file)
@@ -797,7 +797,9 @@ leave:
        return victim_cnt;
 }
 
-static int calculate_range_of_oom(enum oom_level oom_level, int *min, int *max)
+static int calculate_range_of_oom(
+               enum syscommon_resourced_memory_lmk_oom_level oom_level,
+               int *min, int *max)
 {
        if (oom_level < OOM_LEVEL_BACKGROUND_LEAST_RECENTLY_USED
                        || oom_level > OOM_LEVEL_ALL) {
@@ -821,7 +823,8 @@ static void lowmem_handle_request(struct lowmem_control *ctl)
        unsigned int total_size_mb = 0;
        unsigned int current_size = 0;
        unsigned int reclaim_size_mb, shortfall_mb = 0;
-       enum oom_level oom_level = ctl->oom_level;
+       enum syscommon_resourced_memory_lmk_oom_level oom_level =
+               ctl->oom_level;
 
        available_mb = proc_get_mem_available();
        reclaim_size_mb = ctl->size_mb  > available_mb                  /* MB */
@@ -1223,7 +1226,9 @@ static void lowmem_force_reclaim_cb(struct lowmem_control *ctl)
        lowmem_change_memory_state(MEM_LEVEL_HIGH, 0);
 }
 
-int lowmem_trigger_reclaim(int flags, int victims, enum oom_level oom_level, int threshold_mb)
+int lowmem_trigger_reclaim(int flags, int victims,
+               enum syscommon_resourced_memory_lmk_oom_level oom_level,
+               int threshold_mb)
 {
        struct lowmem_control *ctl = LOWMEM_NEW_REQUEST();
 
@@ -1245,9 +1250,10 @@ int lowmem_trigger_reclaim(int flags, int victims, enum oom_level oom_level, int
        return 0;
 }
 
-int lowmem_queue_new_request(unsigned int flags, enum oom_level oom_level,
-                               unsigned int size_mb, unsigned int count,
-                               void (*callback)(struct lowmem_control *))
+int lowmem_queue_new_request(unsigned int flags,
+               enum syscommon_resourced_memory_lmk_oom_level oom_level,
+               unsigned int size_mb, unsigned int count,
+               void (*callback)(struct lowmem_control *))
 {
        struct lowmem_control *ctl = LOWMEM_NEW_REQUEST();
 
@@ -1265,7 +1271,9 @@ int lowmem_queue_new_request(unsigned int flags, enum oom_level oom_level,
        return RESOURCED_ERROR_NONE;
 }
 
-void lowmem_trigger_swap_reclaim(enum oom_level oom_level, unsigned long long swap_size_bytes)
+void lowmem_trigger_swap_reclaim(
+               enum syscommon_resourced_memory_lmk_oom_level oom_level,
+               unsigned long long swap_size_bytes)
 {
        int size_mb, victims;
 
index 35c24d0..8fcf313 100644 (file)
@@ -41,8 +41,11 @@ extern "C" {
 
 unsigned int lowmem_get_task_mem_usage_rss(const struct task_info *tsk);
 void lowmem_trigger_swap(pid_t pid, char *path, bool move);
-int lowmem_trigger_reclaim(int flags, int victims, enum oom_level oom_level, int threshold);
-void lowmem_trigger_swap_reclaim(enum oom_level oom_level, unsigned long long swap_size_bytes);
+int lowmem_trigger_reclaim(int flags, int victims,
+               enum syscommon_resourced_memory_lmk_oom_level oom_level, int threshold);
+void lowmem_trigger_swap_reclaim(
+               enum syscommon_resourced_memory_lmk_oom_level oom_level,
+               unsigned long long swap_size_bytes);
 bool lowmem_fragmentated(void);
 unsigned int lowmem_get_proactive_thres(void);
 void lowmem_change_memory_state(int state, int force);
@@ -114,7 +117,7 @@ struct lowmem_control {
        /* Processing flags*/
        unsigned int flags;
        /* Indictator for OOM level of targeted processes */
-       enum oom_level oom_level;
+       enum syscommon_resourced_memory_lmk_oom_level oom_level;
 
        /* Desired size to be restored - level to be reached (MB)*/
        unsigned int size_mb;
@@ -130,9 +133,10 @@ struct lowmem_control {
 };
 
 int lowmem_worker_is_running();
-int lowmem_queue_new_request(unsigned int flags, enum oom_level oom_level,
-                               unsigned int size_mb, unsigned int count,
-                               void (*callback) (struct lowmem_control *));
+int lowmem_queue_new_request(unsigned int flags,
+               enum syscommon_resourced_memory_lmk_oom_level oom_level,
+               unsigned int size_mb, unsigned int count,
+               void (*callback) (struct lowmem_control *));
 void lowmem_set_oom_popup(bool popup);
 int lowmem_get_num_max_victims();
 
index 2b74f43..970a181 100644 (file)
@@ -180,7 +180,8 @@ static inline void swap_add_bundle(struct swap_thread_bundle *bundle)
        pthread_mutex_unlock(&swap_thread_queue.lock);
 }
 
-static int swap_move_to_cgroup_by_pid(enum oom_level oom_level, pid_t pid)
+static int swap_move_to_cgroup_by_pid(
+               enum syscommon_resourced_memory_lmk_oom_level oom_level, pid_t pid)
 {
        int error;
        int oom_score_adj;