Updating oom_score setting function to use new systemd interface. submit/trunk/20120808.220956
authorBrad Peters <brad.t.peters@intel.com>
Mon, 23 Jul 2012 23:36:19 +0000 (16:36 -0700)
committerBrad Peters <brad.t.peters@intel.com>
Tue, 24 Jul 2012 18:41:22 +0000 (11:41 -0700)
Changes child OOM score from unlikely to be killed (-16) to
likely to be killed (+900). This helps us avoid a priority inversion

launchpad_src/launchpad.c
packaging/aul.changes

index c614d76..f89a4ed 100755 (executable)
@@ -114,12 +114,15 @@ _static_ void __set_oom()
        FILE *fp;
 
        /* we should reset oomadj value as default because child 
-       inherits from parent oom_adj*/
-       snprintf(buf, MAX_LOCAL_BUFSZ, "/proc/%d/oom_adj", getpid());
+       inherits from parent oom_score_adj*/
+       snprintf(buf, MAX_LOCAL_BUFSZ, "/proc/%d/oom_score_adj", getpid());
        fp = fopen(buf, "w");
        if (fp == NULL)
                return;
-       fprintf(fp, "%d", -16);
+       /* Logically, the children processes being launched should be MORE
+           likely to be killed than the launcher and the rest of the OS. So
+           we need to set a high OOM score here */
+       fprintf(fp, "%d", 900);
        fclose(fp);
 }
 
index 9a79839..c7ebb5d 100644 (file)
@@ -1,3 +1,9 @@
+* Mon Jul 23 2012 Brad Peters <brad.t.peters@intel.com> 7730828
+- Updating oom_score setting function to use new systemd interface. 
+  Changing child oom_scores from very low (unlikely to be killed) to
+  very high (likely to be killed). This helps us avoid a priority 
+  inversion, where OS services are killed off before applications.
+
 * Mon Jul 3 2012 Brad Peters <brad.t.peters@intel.com> 7730828
 - Adding a build tag