[mythtv-users] optimize before shut down
Daryl McDonald
darylangela at gmail.com
Wed Apr 24 11:20:08 UTC 2019
On Wed, Apr 24, 2019, 1:21 AM Stephen Worthington <stephen_agent at jsw.gen.nz>
wrote:
> On Tue, 23 Apr 2019 22:28:26 -0400, you wrote:
>
> >On Tue, Apr 23, 2019 at 8:44 PM jam at tigger.ws <jam at tigger.ws> wrote:
> >
> >>
> >>
> >> On 24 Apr 2019, at 4:24 am, mythtv-users-request at mythtv.org wrote:
> >>
> >>
> >> Having the script in /etc/cron.daily doesn't seem to be functional, I'd
> >> like to have the database optimize itself just before the nightly
> >> auto-shutdown. What is a good way to accomplish this? It's mythtv fixes
> >> 0.29 on Ubuntu desktop 18.04. TIA Daryl
> >>
> >>
> >> You say having the script in /etc/cron.daily is not functional, but you
> >> haven't entirely explained what you mean by that.
> >>
> >>
> >> I’ve run mythtv for many years
> >> I’ve some thousands of videos
> >> I’ve some tens of recordings and some 100s of deleted
> >> I’ve never run optimise.
> >>
> >> I ran optimise and it completed in 15 odd seconds, so why not have
> >> an ordinary reboot cron entry?
> >>
> >> James
> >> ______________________________________
> >>
> >
> >After a few days of normal use, I start seeing momentary freeze ups in
> >playback, while the optimize script is in cron.daily. Running it from the
> >terminal clears things up, doing it automatically, after the days
> >recordings would be ideal.
>
> If the optimize_db (database optimise/repair) or mythtv-database
> (database backup) scripts are allowed to run at the same time as you
> are playing something in mythfrontend, then you can get significant
> slowdown in the response times from mythfrontend, and in the worst
> case you can get playback pauses. It depends on the size of the
> database, and what is stored where. If you are trying to play a
> recording that is on the same disk as the database, you will get the
> worst effects. With a huge database like mine, you can get problems
> with recordings as well. If I have more than one recording running
> while those scripts are running, I will get damaged recordings. I am
> not sure of the exact mechanism, but it may be due to writes to the
> database (especially to the recordedseek table) not working properly.
>
> Since my MythTV box is on 24x7, I have scheduled the scripts to run at
> a time when I will never be watching anything and when it is very
> unlikely that there will be more than one recording happening. In
> Ubuntu 18.04, that required that I fix a bug that changed when anacron
> was running things - they started being run just after midnight, which
> is often a time when I have several recordings happening. Anacron
> used to be run at a much better time, 07:30, in older versions of
> Ubuntu.
>
> Originally, anacron was run from the /etc/cron.d/anacron script. That
> script still exists and is still run at 07:30, but does nothing as it
> now has a check to see if systemd is being used and if so it exits
> without running anacron. In Ubuntu 18.04, anacron is now run from
> these two systemd units:
>
> /lib/systemd/system/anacron.timer
> /lib/systemd/system/anacron.service
>
> The anacron.timer unit runs the anacron.service unit once per hour,
> with a randomised 5 minute delay. The anacron program itself does a 5
> minute delay before it does anything, and it also checks to see if it
> has already been run today before it runs the daily scripts (and
> similarly for the weekly and monthly scripts). It does that by
> storing the last time it ran those scripts in files in
> /var/spool/anacron (cron.daily, cron.weekly, cron.monthly).
>
> The net result is that in Ubuntu 18.04 (and later???) anacron normally
> gets run once per hour and it will normally only do its daily tasks
> the first time it is run on any given day. If the PC is running 24x7,
> that means anacron is run at a time randomly selected within 5 minutes
> after midnight, and 5 minutes after it is started it will run the
> daily scripts in /etc/cron.daily. If your PC is not on 24x7, the
> first time it is booted after midnight, anacron will be started after
> a randomised delay of up to 5 minutes after it boots, and it will then
> delay 5 minutes before it runs the daily scripts. That is not a good
> way to run optimize_db and mythtv-database, as it means they will
> normally be run while a recording is happening, or while you are
> trying to watch a recording.
>
> To make anacron work the same way it used to in earlier versions of
> Ubuntu, you need to override the anacron.timer file with a systemd
> override file. The easy way to do that now is to do this command:
>
> sudo systemctl edit anacron.timer
>
> which will bring up your system editor to create a file in
> /etc/systemd/system/anacron.timer.d. In that file, put something like
> what I have:
>
> [Unit]
> Description=Trigger anacron at 09:30.
>
> [Timer]
> OnCalendar=
> OnCalendar=09:30
> RandomizedDelaySec=0s
> Persistent=true
>
> I have chosen to run anacron at 09:30 daily, as that is an even better
> time for me than the original 07:30. You can choose any time you like
> in the above settings, and anacron will be run at that exact time.
> When anacron runs, it will delay doing anything by its usual 5
> minutes.
>
> With this sort of fix in place, if your system is being shut down
> between recordings, anacron will still be run on the first boot up
> that happens after the time you select. It will wait 5 minutes, then
> actually run all the scripts, which is not good as by then MythTV will
> likely be busy with a recording or playback. During that 5 minute
> delay, you can just kill anacron if you want to. Using this command
> should do that:
>
> sudo pkill anacron
>
> If you kill anacron before it starts running scripts, there are no bad
> side effects. When it is next run, it will run all the scripts that
> should have been previously run. So that is what I normally do if I
> ever have to reboot my MythTV box after midnight and before anacron's
> scheduled run time at 09:30.
>
> If anacron has already started running scripts, then if you kill it,
> you will also kill all the scripts it was running, and if they were in
> the middle of doing something, you can get problems. At the very
> least, there can be temporary files left behind, so it is best to
> avoid that unless you know how to check on what the scripts were doing
> and manually clean up any messes that got left behind.
>
> If you do not have a good time to allow anacron to automatically run
> optimize_db and mythtv-database, you could look at using my "gaps"
> script:
>
> http://www.jsw.gen.nz/mythtv/gaps
>
> to work out when you have a gap in recordings that is long enough. But
> if you are shutting down the PC when it is not in use by MythTV, then
> probably the best way to run optimize_db and mythtv-database is to use
> some variant of Peter Bennett's mythshutdown.sh script, and remove
> them from the cron.daily and cron.weekly tasks completely.
> _______________________________________________
>
Thanks Stephan, I do have a gap between 7 and 8 pm. and this sounds like
the more elegant way to go forward. I will implement in a few hours.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mythtv.org/pipermail/mythtv-users/attachments/20190424/351b3c68/attachment.html>
More information about the mythtv-users
mailing list