Date: Tue, 13 Nov 2012 19:20:57 +0000 (UTC) From: Mateusz Guzik <mjg@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org Subject: svn commit: r242991 - stable/8/libexec/atrun Message-ID: <201211131920.qADJKvgP005002@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mjg Date: Tue Nov 13 19:20:57 2012 New Revision: 242991 URL: http://svnweb.freebsd.org/changeset/base/242991 Log: MFC r242372: atrun(8): scale default load average limit with the number of CPUs Previously atrun refused to run jobs if load average was not below fixed limit of 1.5. PR: 173175 Approved by: trasz (mentor) Modified: stable/8/libexec/atrun/atrun.c stable/8/libexec/atrun/atrun.man Directory Properties: stable/8/libexec/atrun/ (props changed) Modified: stable/8/libexec/atrun/atrun.c ============================================================================== --- stable/8/libexec/atrun/atrun.c Tue Nov 13 19:17:21 2012 (r242990) +++ stable/8/libexec/atrun/atrun.c Tue Nov 13 19:20:57 2012 (r242991) @@ -33,6 +33,9 @@ static const char rcsid[] = #include <sys/fcntl.h> #include <sys/types.h> #include <sys/stat.h> +#ifdef __FreeBSD__ +#include <sys/sysctl.h> +#endif #include <sys/wait.h> #include <sys/param.h> #include <ctype.h> @@ -461,7 +464,12 @@ main(int argc, char *argv[]) gid_t batch_gid; int c; int run_batch; +#ifdef __FreeBSD__ + size_t ncpu, ncpusz; + double load_avg = -1; +#else double load_avg = LOADAVG_MX; +#endif /* We don't need root privileges all the time; running under uid and gid daemon * is fine. @@ -479,8 +487,10 @@ main(int argc, char *argv[]) case 'l': if (sscanf(optarg, "%lf", &load_avg) != 1) perr("garbled option -l"); +#ifndef __FreeBSD__ if (load_avg <= 0.) load_avg = LOADAVG_MX; +#endif break; case 'd': @@ -496,6 +506,15 @@ main(int argc, char *argv[]) if (chdir(ATJOB_DIR) != 0) perr("cannot change to %s", ATJOB_DIR); +#ifdef __FreeBSD__ + if (load_avg <= 0.) { + ncpusz = sizeof(size_t); + if (sysctlbyname("hw.ncpu", &ncpu, &ncpusz, NULL, 0) < 0) + ncpu = 1; + load_avg = LOADAVG_MX * ncpu; + } +#endif + /* Main loop. Open spool directory for reading and look over all the * files in there. If the filename indicates that the job should be run * and the x bit is set, fork off a child which sets its user and group Modified: stable/8/libexec/atrun/atrun.man ============================================================================== --- stable/8/libexec/atrun/atrun.man Tue Nov 13 19:17:21 2012 (r242990) +++ stable/8/libexec/atrun/atrun.man Tue Nov 13 19:20:57 2012 (r242991) @@ -1,5 +1,5 @@ .\" $FreeBSD$ -.Dd June 17, 2007 +.Dd October 30, 2012 .Dt ATRUN 8 .Os .Sh NAME @@ -45,7 +45,7 @@ e.g., locked out or expired. .Bl -tag -width indent .It Fl l Ar load_avg Specify a limiting load factor, over which batch jobs should -not be run, instead of the compiled in default of 1.5. +not be run, instead of the default of 1.5 * number of active CPUs. .It Fl d Debug; print error messages to standard error instead of using .Xr syslog 3 .
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201211131920.qADJKvgP005002>