svn commit: r241576 - in head/usr.sbin/cron: cron crontab lib

Garrett Cooper yanegomi at gmail.com
Mon Oct 15 21:31:27 UTC 2012


On Mon, Oct 15, 2012 at 2:18 PM, Ian Lepore
<freebsd at damnhippie.dyndns.org> wrote:
> On Mon, 2012-10-15 at 13:52 -0700, Garrett Cooper wrote:
>> On Mon, Oct 15, 2012 at 1:44 PM, Ian Lepore
>> <freebsd at damnhippie.dyndns.org> wrote:
>> > On Mon, 2012-10-15 at 22:26 +0200, Pawel Jakub Dawidek wrote:
>> >> On Mon, Oct 15, 2012 at 08:21:50AM +0000, Maxim Sobolev wrote:
>> >> > Author: sobomax
>> >> > Date: Mon Oct 15 08:21:49 2012
>> >> > New Revision: 241576
>> >> > URL: http://svn.freebsd.org/changeset/base/241576
>> >> >
>> >> > Log:
>> >> >   Add per-second scheduling into the cron(8). Right now it's
>> >> >   only available via the new @every_second shortcut. ENOTIME to
>> >> >   implement crontab(5) format extensions to allow more flexible
>> >> >   scheduling.
>> >> >
>> >> >   In order to address some concerns expressed by Terry Lambert
>> >> >   while discussing the topic few years ago, about per-second cron
>> >> >   possibly causing some bad effects on /etc/crontab by stat()ing
>> >> >   it every second instead of every minute now (i.e. atime update),
>> >> >   only check that database needs to be reloaded on every 60-th
>> >> >   loop run. This should be close enough to the current behaviour.
>> >> >
>> >> >   Add "@every_minute" shortcut while I am here.
>> >>
>> >> Do I read the code correctly and the cron deamon will wake up every
>> >> second now even if @every_second is not used at all?
>> >
>> > It appears to, which I don't think is a bad thing at all.  But the way
>> > it waits is to wake up, do some work, and go back to sleep for an
>> > integer 1 second.  That will occasionally lead to a second in which no
>> > wakeup happens, as the "do some work" part always takes some fraction of
>> > a second.
>>
>>     This is silly. It should be waking up at the lowest common
>> denominator of time quanta, not every second; this could be determined
>> via the crontab its managing.
>
> In 1987 I would have been outraged at waking up at 1hz needlessly.
> Sitting here typing on a machine that's doing 12,000 interrupts/sec just
> to maintain clocks, and top shows interrupts using 0.0% cpu, it's hard
> to get too upset about a 1hz loop anymore.
>
> On the other hand, if people are going to rely on this new feature of
> being able to execute something every second, then the integer sleep
> needs to be changed to a nanosleep() calculated to truly wake up at a
> 1hz rate without eliding seconds now and then.

    This is also assuming that there's only one copy of cron running
for the entire system and per-user. On a more heavily loaded system
this isn't necessarily the case.
Thanks,
-Garrett


More information about the svn-src-all mailing list