<rdf:RDF
    xmlns:s='http://snipsnap.org/rdf/snip-schema#'
    xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'
    xml:base='http://community.moertel.com/ss/rdf'>
    <s:Snip rdf:about='http://community.moertel.com/ss/rdf#2004-03-17'
         s:name='2004-03-17'
         s:cUser='tmoertel'
         s:oUser='tmoertel'
         s:mUser='tmoertel'>
        <s:content>1 Fractal backup schedules&#xA;&#xA;I have been working on some code to handle the aging and expiry of backups.  The&#xA;idea is that I want to keep a library of backups that maintains a sensible distribution&#xA;of recent and old backups.&#xA;&#xA;What&apos;s a sensible distribution?  It stands to reason that I&apos;m more&#xA;likely to want a recent backup than an old, old backup.  So I ought&#xA;to maintain my library such that the bulk of my online storage is&#xA;devoted to new backups and a smaller portion to my old backups.&#xA;&#xA;Ideally, I would have a smooth transition between old and new.  A&#xA;fairly well-known distribution that does just that follows a&#xA;power-of-2 rule.  You have yesterday&apos;s backup (1 day old), the day&#xA;before yesterday&apos;s (2 days old), then two days before that (4 days&#xA;old), then four days before that (8 days old), and so on:&#xA;&#xA;{code:none}&#xA;o  ============================================&#xA;o  BACKUP RULE = POWER OF 2&#xA;o  &#xA;o  Day   No.   Backup #&#xA;o        of              1111111111222222222233&#xA;o        Bkps  01234567890123456789012345678901&#xA;o  ============================================&#xA;o    0     1   v&#xA;o    1     2   vv&#xA;o    2     3   vvv&#xA;o    3     3   v vv&#xA;o    4     4   v vvv&#xA;o    5     4   v v vv&#xA;o    6     4   v   vvv&#xA;o    7     4   v   v vv&#xA;o    8     5   v   v vvv&#xA;o    9     5   v   v v vv&#xA;o   10     5   v   v   vvv&#xA;o   11     5   v   v   v vv&#xA;o   12     5   v       v vvv&#xA;o   13     5   v       v v vv&#xA;o   14     5   v       v   vvv&#xA;o   15     5   v       v   v vv&#xA;o   16     6   v       v   v vvv&#xA;o   17     6   v       v   v v vv&#xA;o   18     6   v       v   v   vvv&#xA;o   19     6   v       v   v   v vv&#xA;o   20     6   v       v       v vvv&#xA;o   21     6   v       v       v v vv&#xA;o   22     6   v       v       v   vvv&#xA;o   23     6   v       v       v   v vv&#xA;o   24     6   v               v   v vvv&#xA;o   25     6   v               v   v v vv&#xA;o   26     6   v               v   v   vvv&#xA;o   27     6   v               v   v   v vv&#xA;o   28     6   v               v       v vvv&#xA;o   29     6   v               v       v v vv&#xA;o   30     6   v               v       v   vvv&#xA;o   31     6   v               v       v   v vv&#xA;o  ============================================&#xA;{code}&#xA;&#xA;This works out nicely because the number of backups you must maintain&#xA;is proportional to log2 of the days you have been following the&#xA;power-of-2 schedule, which is easy on your storage resources.  For&#xA;example, looking at the plot above, after a month of following the&#xA;schedule, we need only keep 6 backups on disk.  Three years from&#xA;now, we&apos;ll need only 12.&#xA;&#xA;An interesting thing to note is the fractal nature of the schedule.&#xA;Since most of the software I have seen uses the power-of-2 schedule,&#xA;I was curious if other powers would also work well.  So I wrote a more&#xA;general scheduling algorithm and made some more plots of the&#xA;resulting fractals.&#xA;&#xA;When the power is close to 1.0, you get a poor distribution of&#xA;backups.  Far too many are clustered around the current backup.&#xA;On those times when you must get an old backup, you&apos;ll likely&#xA;have to go ~~way~~ back to get it.  In contrast, the power&#xA;2 gives you a more gradual tapering from new to old.  For comparison&#xA;I have plotted both 1.25 and 2 below.  (You may have to widen&#xA;your window to see them side by side.)&#xA;&#xA;{code:none}&#xA;o  ============================================    ============================================&#xA;o  BACKUP RULE = POWER OF 1.25                     BACKUP RULE = POWER OF 2&#xA;o &#xA;o  Day   No.   Backup #                            Day   No.   Backup #&#xA;o        of              1111111111222222222233          of              1111111111222222222233&#xA;o        Bkps  01234567890123456789012345678901          Bkps  01234567890123456789012345678901&#xA;o  ============================================    ============================================&#xA;o    0     1   v                                     0     1   v&#xA;o    1     2   vv                                    1     2   vv&#xA;o    2     3   vvv                                   2     3   vvv&#xA;o    3     3   v vv                                  3     3   v vv&#xA;o    4     4   v vvv                                 4     4   v vvv&#xA;o    5     4   v  vvv                                5     4   v v vv&#xA;o    6     5   v  vvvv                               6     4   v   vvv&#xA;o    7     5   v   vvvv                              7     4   v   v vv&#xA;o    8     6   v   vvvvv                             8     5   v   v vvv&#xA;o    9     6   v    vvvvv                            9     5   v   v v vv&#xA;o   10     7   v    vvvvvv                          10     5   v   v   vvv&#xA;o   11     7   v     vvvvvv                         11     5   v   v   v vv&#xA;o   12     8   v     vvvvvvv                        12     5   v       v vvv&#xA;o   13     8   v      vvvvvvv                       13     5   v       v v vv&#xA;o   14     9   v      vvvvvvvv                      14     5   v       v   vvv&#xA;o   15     9   v       vvvvvvvv                     15     5   v       v   v vv&#xA;o   16     9   v       vvvvv vvv                    16     6   v       v   v vvv&#xA;o   17     9   v        vvvv vvvv                   17     6   v       v   v v vv&#xA;o   18     9   v        vvvv v vvv                  18     6   v       v   v   vvv&#xA;o   19    10   v        vvvv v vvvv                 19     6   v       v   v   v vv&#xA;o   20     9   v         vvv v vv vv                20     6   v       v       v vvv&#xA;o   21    10   v         vvv v vv vvv               21     6   v       v       v v vv&#xA;o   22    10   v          vv v vv vvvv              22     6   v       v       v   vvv&#xA;o   23    10   v          vv v vv  vvvv             23     6   v       v       v   v vv&#xA;o   24     9   v           v v vv  v vvv            24     6   v               v   v vvv&#xA;o   25    10   v           v v vv  v vvvv           25     6   v               v   v v vv&#xA;o   26     9   v             v vv  v v vvv          26     6   v               v   v   vvv&#xA;o   27    10   v             v vv  v v vvvv         27     6   v               v   v   v vv&#xA;o   28    10   v             v vv  v v  vvvv        28     6   v               v       v vvv&#xA;o   29    10   v             v vv  v v  v vvv       29     6   v               v       v v vv&#xA;o   30    10   v               vv  v v  v vvvv      30     6   v               v       v   vvv&#xA;o   31    10   v               vv  v v  v  vvvv     31     6   v               v       v   v vv&#xA;o  ============================================    ============================================&#xA;{code}&#xA;&#xA;&#xA;For fun I tried out two well-known mathematical constants, the golden&#xA;ratio and the base of the natural logarithm ~~e~~.  Both are&#xA;interesting, but neither seems better than 2, although the golden ratio&apos;s plot does look&#xA;pretty good:&#xA;&#xA;{code:none}&#xA;o  ============================================    ============================================&#xA;o  BACKUP RULE = POWER OF GOLDEN RATIO ~ 1.6180    BACKUP RULE = POWER OF EXP(1) ~ 2.718281&#xA;o &#xA;o  Day   No.   Backup #                            Day   No.   Backup #&#xA;o        of              1111111111222222222233          of              1111111111222222222233&#xA;o        Bkps  01234567890123456789012345678901          Bkps  01234567890123456789012345678901&#xA;o  ============================================    ============================================&#xA;o    0     1   v                                     0     1   v&#xA;o    1     2   vv                                    1     2   vv&#xA;o    2     3   vvv                                   2     3   vvv&#xA;o    3     3   v vv                                  3     4   vvvv&#xA;o    4     4   v vvv                                 4     4   v vvv&#xA;o    5     5   v vvvv                                5     4   v  vvv&#xA;o    6     4   v  v vv                               6     5   v  vvvv&#xA;o    7     5   v  v vvv                              7     5   v  v vvv&#xA;o    8     5   v    vvvv                             8     5   v  v  vvv&#xA;o    9     6   v    vvvvv                            9     5   v  v   vvv&#xA;o   10     5   v    v v vv                          10     5   v  v    vvv&#xA;o   11     6   v    v v vvv                         11     6   v  v    vvvv&#xA;o   12     7   v    v v vvvv                        12     5   v       v vvv&#xA;o   13     6   v    v v  v vv                       13     5   v       v  vvv&#xA;o   14     6   v      v  v vvv                      14     6   v       v  vvvv&#xA;o   15     6   v      v    vvvv                     15     6   v       v  v vvv&#xA;o   16     7   v      v    vvvvv                    16     6   v       v  v  vvv&#xA;o   17     6   v      v    v v vv                   17     6   v       v  v   vvv&#xA;o   18     7   v      v    v v vvv                  18     6   v       v  v    vvv&#xA;o   19     6   v           v   vvvv                 19     6   v       v  v     vvv&#xA;o   20     7   v           v   vvvvv                20     5   v       v         vvv&#xA;o   21     6   v           v   v v vv               21     5   v       v          vvv&#xA;o   22     7   v           v   v v vvv              22     5   v       v           vvv&#xA;o   23     8   v           v   v v vvvv             23     5   v       v            vvv&#xA;o   24     7   v           v   v v  v vv            24     6   v       v            vvvv&#xA;o   25     7   v           v     v  v vvv           25     6   v       v            v vvv&#xA;o   26     7   v           v     v    vvvv          26     7   v       v            v vvvv&#xA;o   27     8   v           v     v    vvvvv         27     7   v       v            v v vvv&#xA;o   28     7   v           v     v    v v vv        28     7   v       v            v v  vvv&#xA;o   29     8   v           v     v    v v vvv       29     7   v       v            v v   vvv&#xA;o   30     9   v           v     v    v v vvvv      30     6   v                    v v    vvv&#xA;o   31     8   v           v     v    v v  v vv     31     7   v                    v v    vvvv&#xA;o  ============================================    ============================================&#xA;{code}&#xA;&#xA;The power-of-2 rule does have one edge over the other, fractional powers: The number of&#xA;backups you have on hand is non-decreasing.  You never &quot;lose&quot; a&#xA;backup, which might make the system easier to explain to sysadmins.  But the best reason to use the power of 2 is that it seems to give the best distribution between old and new backups.&#xA;&#xA;&#xA;Well, enough contemplating.  Back to coding.&#xA;</s:content>
        <s:mTime>2004-03-18 02:07:44.58</s:mTime>
        <s:cTime>2004-03-17 23:59:33.644</s:cTime>
        <s:comments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
        <s:snipLinks>
            <rdf:Bag>
                <rdf:li rdf:resource='#snipsnap-index'/>
                <rdf:li rdf:resource='#tmoertel'/>
                <rdf:li rdf:resource='http://community.moertel.com/ss/rdf#space/2004-03-17'/>
                <rdf:li rdf:resource='http://community.moertel.com/ss/rdf#'/>
            </rdf:Bag>
        </s:snipLinks>
        <s:attachments
             rdf:type='http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag'/>
    </s:Snip>
</rdf:RDF>
