Application diff size


#1

Is it possible to see the size of the diff from one build to another?

We’re curious to see exactly how well it handles binary diffs. I.e. if a binary is 10MB and we do a small change, how big is the diff?


#2

Also related, is the diff itself compressed in anyway before sent, or the diff done on compressed images? This relates to understanding the actually data over, in our case, the cellular network.


#3

Hi, we plan to start recording delta sizes along with builds, there’s no ETA at the moment but should be available in the coming weeks.

About compression, we do indeed compress the delta streams.


#4

I noticed the edit and just want to make it sure it’s clear:

Is the delta on a file level, so binaries deployed inside an application is always updated in whole, or are binaries updated by diff (e.g. bsdiff)?


#5

The delta calculated between the full Docker images. That is so to always minimize the amount required to download, since the downloads are on the image level.


#6

@niklasnorin just a heads up, that now the delta sizes are also shown in the build log (between the previous commit and the current one):

...
Success]  Cached image pulled in a few milliseconds
[Info]     Generating delta for faster device updates
[Success]  Delta generated in 39 seconds; size: 1.61 MB
[Info]     To enable deltas, see https://docs.resin.io/runtime/delta/
[==================================================>] 100%
...

This is of course informational, only correct if the device is running that previous version at the moment. If for whatever reason it is running an older version (e.g. it was offline for a couple of builds, and just coming on), then the delta will be generated from the specific version the device is running at the time, to be optimal for each device.