ostree static-delta



Hello,


I have been looking into OSTree's static delta support and here are few items that I would like to discuss:

1) Doc: "Static deltas also support from NULL, where the client can more efficiently download a commit object from scratch."

What is the use case for the --empty command line argument? I feel like the documentation needs some clarification in this area. Even after looking at the code I am still not entirely sure where this is needed.

2) Doc: "The current delta compiler scans for files with matching basenames in each commit that have a similar size, and attempts a bsdiff between them.
(It would make sense later to have a build system provide a hint for this - for example, files within a same package)."

If I read the code correctly then OSTree won't generate a static delta for libQt5Core.so.5.6.1 -> libQt5Core.so.5.7.0 update. What is a definition of a "basename" here?
With Shell "basename libQt5Core.so.5.6.1" -> "libQt5Core.so.5.6.1"

Objects like this clearly should utilize the bsdiff tool. Simple test:

bsdiff libQt5Core.so.5.6.1 libQt5Core.so.5.7.0 libQt5Core.so.5.6.1-libQt5Core.so.5.7.0

Where:

libQt5Core.so.5.6.1 # 5.3 MB
libQt5Core.so.5.7.0 # 5.3 MB
libQt5Core.so.5.6.1-libQt5Core.so.5.7.0 1.4 MB

and there are many libraries with the same naming pattern. Is my understanding correct the above files are skipped for bsdiff?

Nevertheless, the testing results on Intel NUC show that update size is reduced by 2/3 when updating OpenEmbedded image (fido branch -> jethro branch).

sh-4.3# time ostree admin upgrade (without static deltas)

588 metadata, 6951 content objects fetched; 196611 KiB transferred in 321 seconds
Copying /etc changes: 7 modified, 2 removed, 5 added
Relabeling /var (no stamp file '/ostree/deploy/qt-os/var/.ostree-selabeled' found)
Transaction complete; bootconfig swap: yes deployment count change: 1

real    7m18.250s
user    2m1.780s
sys    0m48.555s

****************************************************************************

sh-4.3# time ostree admin upgrade (with static deltas)

1 metadata, 14 content objects fetched; 72722 KiB transferred in 297 seconds
Copying /etc changes: 7 modified, 2 removed, 5 added
Relabeling /var (no stamp file '/ostree/deploy/qt-os/var/.ostree-selabeled' found)
Transaction complete; bootconfig swap: yes deployment count change: 1

real    6m39.137s
user    1m48.977s
sys    0m39.208s

 
Gatis.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]