[mythtv-users] Storage Groups: Usage Preferences

Darryl Ross spam at afoyi.com
Tue Mar 6 10:30:07 UTC 2007

Hi Chris,

Wow, thanks for the in-depth response!

I'm just waiting for my wiki confirmation email to arrive, then I'll
paste in what you've written into the storage groups page.


[Chris Pinkham wrote on 6/03/2007 7:59 PM]:
> * On Tue Mar 06, 2007 at 04:53:31PM +1030, Darryl Ross wrote:
>> Firstly, thanks heaps to the devs and testers who have got Storage
>> Groups working really well. It's simplified my setup hugely!
> Glad it's working well for you. :)
>> Just wondering if there is any capability (or plans) or specify a
>> preference to how the storage groups are utilised?
> There is limited ability for this via some undocumented settings, but
> there is no GUI to set them up.
>> At the moment I believe Myth will record to the drive with the most
>> amount of free space if there's only a single recording and will spread
>> simultaneous the recordings across all available drives to reduce head
>> movements.
> It's a bit more complicated than that.  Myth uses weights to determine
> what filesystem/directory to record to.  The following default values are
> used:
>    SGweightPerRecording  = 10
>    SGweightPerPlayback   =  5
>    SGweightPerCommFlag   =  5
>    SGweightPerTranscode  =  5
>    SGweightLocalStarting = -1.99 * SGweightPerRecording
>    SGmaxRecOverlapMins   =  3
> The drive with the lowest weight is used first.  In a tie, the drive with
> the highest amount of free disk space is used first.
> Each Storage Group Directory has its own weight, but Myth is smart enough
> to know if several directories are on the same shared filesystem.  When
> a weight is applied to a directory that is in use, it is applied to all
> directories on that filesystem because we are trying to spread the load
> out across filesystems, not directories on the same filesystem.
> The starting weight of all drives is 0.  Local filesystems/directories
> are then offset by SGweightLocalStarting, so by default they are then
> at -19 because SGweightPerRecording defaults to 10.  This makes it so
> that local drives are preferred over remote drives.  A local drive has
> to have an effective weight of 20 before a remote drive will be used to
> store a new recording.  If you do not have any playback going on, this
> would mean that you'd have to have 2 recordings going to a local drive
> before a remote drive would get used.  If you have 2 local drives and
> 1 remote drive, you'd have to have 4 recordings going on locally before
> a remote drive would get used.
> So, if you have less than 4 tuners and 2 local drives, then the default
> should already give you what you are looking for.  If you have more than
> 4 tuners or want to guarantee that all recordings go to the local drives
> unless they fill up, you can do so using the undocumented SGweightPerDir
> setting.
> In order to make Myth not use a filesystem/directory, we need to
> artificially inflate the starting weight for that directory.  We can do
> this by insertting a setting in the database.
> The key for the setting is SGweightPerDir:HOSTNAME:DIRECTORY.  The
> hostname is the hostname that sees the directory.  So if the directory
> is actually on the fileserver which is server1 but is mounted via NFS on
> server2 which is running mythbackend, we'd use server2 here.  The
> directory is the local path on HOSTNAME, so you'd put /mnt/video or
> whatever you use here for the remotely mounted directory.
>    SGweightPerDir:server2:/mnt/video
> The value that we put in this setting will be applied as an offset to
> the initial weight for this directory.  You can play it safe by setting
> this to something large like 99 or 100 or even higher.  So in the
> example here, the actual setting key would be:
> You need to run the following SQL to insert that into the settings table:
>    INSERT settings
>       (value, data, hostname)
>       ("SGweightPerDir:server2:/mnt/video", 99, "server2");
> So, now when the Storage Groups scheduling code runs, /mnt/video will
> start out with a weight of 0.  Since it is a remote drive, the only
> offsets that will be initially applied will be the one we specified in
> the settings table with the SGweightPerDir setting.  Your two local
> directories would each end up starting out at -19 and the remote
> directory would start out at +99.  So unless you have a huge number of
> recordings and playbacks going on on each of your local drives, the
> remote directory will never be used unless the locals fill up.
> If you run mythbackend with the "-v schedule,file" option, you can
> see the weights as they are applied and the logs will show you why
> Myth chose one directory over another when determining where to put
> the next recording.
> --
> Chris (who still needs to get around to documenting this more on the
>        wiki or in the HOWTO)
> _______________________________________________
> mythtv-users mailing list
> mythtv-users at mythtv.org
> http://mythtv.org/cgi-bin/mailman/listinfo/mythtv-users

More information about the mythtv-users mailing list