On Tue, 2017-10-24 at 17:06 +0200, Borja Marcos wrote:
> 
> > 
> > On 24 Oct 2017, at 16:41, Alan Somers <asom...@freebsd.org> wrote:
> > 
> > On Tue, Oct 24, 2017 at 3:07 AM, Borja Marcos <bor...@sarenet.es> wrote:
> > Are you talking about the lockf in /usr/sbin/periodic?  It already has
> > a timeout of 0, which should prevent overlapping periodic jobs.  Or is
> > there some other lockf involved?  Without knowing which lockf you're
> > talking about, I can't understand your problem.
> Sorry, my explanation was awful now that I read it again. Yes, I mean the 
> lockf in /usr/sbin/periodic. And
> no, I didn’t mean that jobs overlap (certainly they don’t thanks to the 
> lockf) but they can pile up. Today I had
> a machine with three daily jobs waiting to start because the first one had 
> been running for four days (a combination
> of lots of files and datasets, heavy system load, ZFS pool almost full…) 
> 
> The problem with a timeout of 0 is that it’s unlimited. 

No, lockf -t 0 means to exit without waiting, with status EX_TEMPFAIL,
if the lock cannot be acquired immediately.  In light of that, the rest
of your report/request doesn't make sense.  Jobs won't stack up,
they'll fail if the prior one is still running.

-- Ian

> In case something is wrong you can end up with a growing queue of
> daily periodic jobs waiting to run. Imagine you have a very high system load 
> for several days and for some reason the daily job
> won’t complete. Next day a new daily job will try to start but it will have 
> to wait for the first one to finish. And so on.
> 
> The proposal is to replace the “0” timeout for lockf with a sane timeout so 
> that it will attempt to run it, but give up in
> case it can’t be done in a reasonable time. The timeout shouldn’t be long 
> actually. If periodic must wait in order to
> start a job it means that you have a serious performance problem and it’s 
> pointless to keep your machine doing “find”
> 24/7.
> 
> Given the nature of the periodic jobs I don’t think it should be a problem to 
> attempt to run them in a best effort basis
> rather than guaranteing that they will eventually even if awfully late.
> 
> I would add a configurable timeout for /usr/sbin/periodic. I think it’s 
> better done with a different variable for each 
> class and their default values can be 0 so that nothing changes.
> 
> daily_start_timeout
> weekly_start_timeout
> monthly_start_timeout
> 
> 
> 
> > 
> > The anticongestion_sleeptime variable is unrelated to lockf.
> Understood, I stand corrected. I assumed it was. 
> 
> Hope it’s better now. It’s pretty easy to do but I’m interested on the 
> opinions on this matter :)
> 
> 
> Thank you!
> 
> 
> 
> 
> 
> Borja.

_______________________________________________
freebsd-security@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-security
To unsubscribe, send any mail to "freebsd-security-unsubscr...@freebsd.org"

Reply via email to