]> arthur.barton.de Git - netdata.git/commitdiff
allow users to configure netdata oom score
authorCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Sun, 29 Jan 2017 16:39:58 +0000 (18:39 +0200)
committerCosta Tsaousis (ktsaou) <costa@tsaousis.gr>
Sun, 29 Jan 2017 16:39:58 +0000 (18:39 +0200)
src/daemon.c
src/daemon.h
src/main.c

index 4fd8ca5e5984b1e32c14730bb3f7ca3e35644daf..c125511a07d57571eb939ca6a341e50bfd301d21 100644 (file)
@@ -189,7 +189,7 @@ int sched_setscheduler_idle(void) {
 #endif
 }
 
-int become_daemon(int dont_fork, const char *user)
+int become_daemon(int dont_fork, const char *user, int oom_score)
 {
     if(!dont_fork) {
         int i = fork();
@@ -239,7 +239,7 @@ int become_daemon(int dont_fork, const char *user)
     umask(0007);
 
     // adjust my Out-Of-Memory score
-    oom_score_adj(1000);
+    oom_score_adj(oom_score);
 
     // never become a problem
     if(sched_setscheduler_idle() != 0) {
index b193602d682e4136aa45b7391ea5162b828ad386..561e0fe97dcfb2026bdd8bc3cb97ad1acfccb046 100644 (file)
@@ -8,7 +8,7 @@ extern void sig_handler_reload_health(int signo);
 
 extern int become_user(const char *username, int pid_fd);
 
-extern int become_daemon(int dont_fork, const char *user);
+extern int become_daemon(int dont_fork, const char *user, int oom_score);
 
 extern void netdata_cleanup_and_exit(int i);
 
index fb547e440526a1489b60365203416323c134ccb0..18ad78a8dd0bbdf37cc2488f39d1c3591519f6bc 100644 (file)
@@ -338,6 +338,7 @@ int main(int argc, char **argv)
     int i, check_config = 0;
     int config_loaded = 0;
     int dont_fork = 0;
+    int oom_score = 1000;
     size_t wanted_stacksize = 0, stacksize = 0;
     pthread_attr_t attr;
 
@@ -616,6 +617,7 @@ int main(int argc, char **argv)
         // --------------------------------------------------------------------
 
         rrd_memory_mode = rrd_memory_mode_id(config_get("global", "memory mode", rrd_memory_mode_name(rrd_memory_mode)));
+        oom_score = (int)config_get_number("global", "OOM score", oom_score);
 
         // --------------------------------------------------------------------
 
@@ -755,7 +757,7 @@ int main(int argc, char **argv)
 #endif /* NETDATA_INTERNAL_CHECKS */
 
     // fork, switch user, create pid file, set process priority
-    if(become_daemon(dont_fork, user) == -1)
+    if(become_daemon(dont_fork, user, oom_score) == -1)
         fatal("Cannot daemonize myself.");
 
     info("netdata started on pid %d.", getpid());