from aeriebsd. watchdogd locks itself into memory, so it's helpful to reduce the footprint (daemon has stacksize-cur=8M by default).
root 18814 0.0 1.6 116 8372 ?? S<s 2:09PM 0:00.17 /usr/sbin/watchdogd root 14155 0.0 0.1 160 428 ?? S<s Fri11PM 0:00.72 /usr/sbin/watchdogd tested on net5501. ok? Index: watchdogd.c =================================================================== RCS file: /cvs/src/usr.sbin/watchdogd/watchdogd.c,v retrieving revision 1.12 diff -u -p -r1.12 watchdogd.c --- watchdogd.c 12 May 2008 19:15:02 -0000 1.12 +++ watchdogd.c 12 Jun 2009 22:32:30 -0000 @@ -52,6 +52,7 @@ sighdlr(int signum) int main(int argc, char *argv[]) { + struct rlimit rlim; const char *errstr; size_t len; u_int interval = 0, period = 30, nperiod; @@ -139,6 +140,14 @@ main(int argc, char *argv[]) warn("can't daemonize, restoring original values"); goto restore; } + + /* + * mlockall() below will wire the whole stack up to the limit + * thus we have to reduce stack size to avoid resource abuse + */ + rlim.rlim_cur = 256 * 1024; + rlim.rlim_max = 256 * 1024; + (void)setrlimit(RLIMIT_STACK, &rlim); (void)mlockall(MCL_CURRENT | MCL_FUTURE); setpriority(PRIO_PROCESS, getpid(), -5);