yum differential updates

Gregory Maxwell gmaxwell at gmail.com
Tue Apr 11 10:14:49 UTC 2006


On 4/10/06, Jesse Keating <jkeating at j2solutions.net> wrote:
> The problem is that even if it is a small change, all the source gets
> recompiled, so the resultant binaries could be different, and different
> enough to cause large amounts of little changes.  This is because we
> don't just spin the same binaries with say a new doc file or something
> like that.  Little changes just from a recompile add up quickly.

I thought it might be fun to inject a bit of data into this discussion.

First, a sort of worst case for a binary... libgcj from FC4 binary
delta compressed to the FC5 binary. (prelinking removed):

[gmaxwell at gmaxlpt ~]$ xdelta30d/xdelta3 encode -S djw -s
./libgcj.so.6.0.0 ./libgcj.so.7.0.0 libgcj.so.7.0.0.xd3
[gmaxwell at gmaxlpt ~]$ ls -l libgcj.so.7.0.0.*
-rw-rw-r--  1 gmaxwell gmaxwell 6226267 Apr 11 05:46 libgcj.so.7.0.0.gz
-rw-rw-r--  1 gmaxwell gmaxwell 4342762 Apr 11 05:47 libgcj.so.7.0.0.lzma
-rw-rw-r--  1 gmaxwell gmaxwell 6941616 Apr 11 05:42 libgcj.so.7.0.0.xd3

Although xdelta3 uses a BWT based compressor it doesn't have a large a
blocksize as bzip -9 , otherwise we'd see the xd3 file be almost
exactly the same size as the bz2.

How about an easy one..  Yum pulled a ghostscript update which changed
libgs without revving versions. Again, with prelink undone:

[gmaxwell at gmaxlpt ~]$ xdelta30d/xdelta3 encode -S djw -s
libgs.so.8.15.old ./libgs.so.8.15 libgs.so.8.15.xd3
[gmaxwell at gmaxlpt ~]$ ls -l libgs.so.8.15*
-rwxr-xr-x  1 gmaxwell gmaxwell 4830780 Apr 11 05:29 libgs.so.8.15
-rwxr-xr-x  1 gmaxwell gmaxwell 1615817 Apr 11 05:29 libgs.so.8.15.bz2
-rw-rw-r--  1 gmaxwell gmaxwell 1688814 Apr 11 05:53 libgs.so.8.15.gz
-rw-rw-r--  1 gmaxwell gmaxwell 1334810 Apr 11 05:35 libgs.so.8.15.lzma
-rwxr-xr-x  1 gmaxwell gmaxwell 4830780 Apr 11 05:30 libgs.so.8.15.old
-rw-rw-r--  1 gmaxwell gmaxwell  922597 Apr 11 05:52 libgs.so.8.15.xd3

So yes.. there is a gain for executables in what is likely the best
case (excluding the case where the file wasn't actually changed), but
it's not huge.

Not that delta compression is useless, consider a document which has
only had a date change:
[gmaxwell at gmaxlpt ~]$ ls -l slib.html.fc5*
-rw-r--r--  1 gmaxwell gmaxwell 1364094 Apr 11 06:04 slib.html.fc5
-rw-r--r--  1 gmaxwell gmaxwell  161391 Apr 11 06:04 slib.html.fc5.bz2
-rw-rw-r--  1 gmaxwell gmaxwell  160475 Apr 11 06:05 slib.html.fc5.lzma
-rw-rw-r--  1 gmaxwell gmaxwell     263 Apr 11 06:06 slib.html.fc5.xd3

or other simple incremental changes:
[gmaxwell at gmaxlpt ~]$ xdelta30d/xdelta3 encode -S djw -s
/usr/share/doc/gnome-vfs2-2.10.0/ChangeLog
./gnome-vfs2-2.14.0-ChangeLog gnome-vfs2-2.14.0-ChangeLog.xd3
[gmaxwell at gmaxlpt ~]$ ls -l gnome-vfs2-2.14.0-ChangeLog*
-rw-r--r--  1 gmaxwell gmaxwell 969090 Apr 11 06:10 gnome-vfs2-2.14.0-ChangeLog
-rw-r--r--  1 gmaxwell gmaxwell 176919 Apr 11 06:10
gnome-vfs2-2.14.0-ChangeLog.bz2
-rw-rw-r--  1 gmaxwell gmaxwell  26015 Apr 11 06:11
gnome-vfs2-2.14.0-ChangeLog.xd3




More information about the fedora-test-list mailing list