[igt-dev] [PATCH i-g-t] lib: Prioritise oom targetting our children.

Chris Wilson chris at chris-wilson.co.uk
Fri May 25 10:43:52 UTC 2018


We are not nice parents and would sacrifice any one of our children so
that the core process can report the failure neatly.

Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
---
 lib/igt_core.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

diff --git a/lib/igt_core.c b/lib/igt_core.c
index 804ce4578..95417d159 100644
--- a/lib/igt_core.c
+++ b/lib/igt_core.c
@@ -564,17 +564,27 @@ static void print_usage(const char *help_str, bool output_on_stderr)
 		fprintf(f, "%s\n", help_str);
 }
 
-
 static void oom_adjust_for_doom(void)
 {
+	const char always_kill[] = "900"; /* leave room for children! */
 	int fd;
-	const char always_kill[] = "1000";
 
 	fd = open("/proc/self/oom_score_adj", O_WRONLY);
 	igt_assert(fd != -1);
 	igt_assert(write(fd, always_kill, sizeof(always_kill)) == sizeof(always_kill));
 	close(fd);
+}
 
+static void oom_adjust_for_greater_doom(void)
+{
+	const char always_kill[] = "1000";
+	int fd;
+
+	fd = open("/proc/self/oom_score_adj", O_WRONLY);
+	if (fd != -1) {
+		igt_ignore_warn(write(fd, always_kill, sizeof(always_kill)));
+		close(fd);
+	}
 }
 
 #ifdef HAVE_GLIB
@@ -1618,7 +1628,7 @@ bool __igt_fork_helper(struct igt_helper_process *proc)
 		igt_assert(0);
 	case 0:
 		reset_helper_process_list();
-		oom_adjust_for_doom();
+		oom_adjust_for_greater_doom();
 
 		return true;
 	default:
@@ -1721,7 +1731,7 @@ bool __igt_fork(void)
 		test_child = true;
 		exit_handler_count = 0;
 		reset_helper_process_list();
-		oom_adjust_for_doom();
+		oom_adjust_for_greater_doom();
 
 		return true;
 	default:
-- 
2.17.0



More information about the igt-dev mailing list