Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec5e4c6e authored by Suren Baghdasaryan's avatar Suren Baghdasaryan
Browse files

Add min_score_adj into LmkKillOccurred event



Log min_score_adj when lmkd kills a process to determine the oom_score
levels that lmkd considers during the kill.

Bug: 123024834
Change-Id: I986ae8f2808199b1654bc8d2a32dd88046c79aa3
Signed-off-by: default avatarSuren Baghdasaryan <surenb@google.com>
parent c676cca4
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -1329,7 +1329,7 @@ static void set_process_group_and_prio(int pid, SchedPolicy sp, int prio) {
static int last_killed_pid = -1;

/* Kill one process specified by procp.  Returns the size of the process killed */
static int kill_one_process(struct proc* procp) {
static int kill_one_process(struct proc* procp, int min_oom_score) {
    int pid = procp->pid;
    uid_t uid = procp->uid;
    char *taskname;
@@ -1340,6 +1340,9 @@ static int kill_one_process(struct proc* procp) {
#ifdef LMKD_LOG_STATS
    struct memory_stat mem_st = {};
    int memory_stat_parse_result = -1;
#else
    /* To prevent unused parameter warning */
    (void)(min_oom_score);
#endif

    taskname = proc_get_name(pid);
@@ -1385,10 +1388,12 @@ static int kill_one_process(struct proc* procp) {
        if (memory_stat_parse_result == 0) {
            stats_write_lmk_kill_occurred(log_ctx, LMK_KILL_OCCURRED, uid, taskname,
                    procp->oomadj, mem_st.pgfault, mem_st.pgmajfault, mem_st.rss_in_bytes,
                    mem_st.cache_in_bytes, mem_st.swap_in_bytes, mem_st.process_start_time_ns);
                    mem_st.cache_in_bytes, mem_st.swap_in_bytes, mem_st.process_start_time_ns,
                    min_oom_score);
        } else if (enable_stats_log) {
            stats_write_lmk_kill_occurred(log_ctx, LMK_KILL_OCCURRED, uid, taskname, procp->oomadj,
                                          -1, -1, tasksize * BYTES_IN_KILOBYTE, -1, -1, -1);
                                          -1, -1, tasksize * BYTES_IN_KILOBYTE, -1, -1, -1,
                                          min_oom_score);
        }
#endif
        result = tasksize;
@@ -1425,7 +1430,7 @@ static int find_and_kill_process(int min_score_adj) {
            if (!procp)
                break;

            killed_size = kill_one_process(procp);
            killed_size = kill_one_process(procp, min_score_adj);
            if (killed_size >= 0) {
#ifdef LMKD_LOG_STATS
                if (enable_stats_log && !lmk_state_change_start) {
+6 −1
Original line number Diff line number Diff line
@@ -65,7 +65,8 @@ int
stats_write_lmk_kill_occurred(android_log_context ctx, int32_t code, int32_t uid,
                              char const* process_name, int32_t oom_score, int64_t pgfault,
                              int64_t pgmajfault, int64_t rss_in_bytes, int64_t cache_in_bytes,
                              int64_t swap_in_bytes, int64_t process_start_time_ns) {
                              int64_t swap_in_bytes, int64_t process_start_time_ns,
                              int32_t min_oom_score) {
    assert(ctx != NULL);
    int ret = -EINVAL;
    if (!ctx) {
@@ -117,5 +118,9 @@ stats_write_lmk_kill_occurred(android_log_context ctx, int32_t code, int32_t uid
        return ret;
    }

    if ((ret = android_log_write_int32(ctx, min_oom_score)) < 0) {
        return ret;
    }

    return write_to_logger(ctx, LOG_ID_STATS);
}
+2 −1
Original line number Diff line number Diff line
@@ -88,7 +88,8 @@ int
stats_write_lmk_kill_occurred(android_log_context ctx, int32_t code, int32_t uid,
                              char const* process_name, int32_t oom_score, int64_t pgfault,
                              int64_t pgmajfault, int64_t rss_in_bytes, int64_t cache_in_bytes,
                              int64_t swap_in_bytes, int64_t process_start_time_ns);
                              int64_t swap_in_bytes, int64_t process_start_time_ns,
                              int32_t min_oom_score);

__END_DECLS