On Mon, Oct 29, 2018, 6:30 PM Mats Wichmann <m...@wichmann.us> wrote:

>
> Hi, folks.  I'm still around even if not very active, wanted to run
> something by you all.
>
> While working on the scons project, something else I do on the side, I
> notice people keep asking about the caching capabilities of SCons. Some
> are able to use it to considerable benefit.
>
> Tl:dr version of caching: if there exists in the cache a file which
> could be used instead of building a target, use the cached version.
>

Sorry, I think this is very misleading. Scons "caching" really means
something like "shared remote caching", with multiple devs sharing the
cache. https://scons.org/doc/1.3.0/HTML/scons-user/c4154.html

Or maybe that's not what you mean, dunno. Seems obvious that every build
system involves caching in some way.

>
> The longer version of caching: for every target scons calculates a
> cryptographic hash which is based on a variety of contributors which
> include hashes of the things it depends on, as well as some of the build
> environment (the specific compiler has a hash, arguments, etc).  This
> goes into the .sconsign.dblite file (if you care to look, the sconsign
> program can dump it if you give the name as an argument, there is no
> default file).  If you enable caching during a build, the derived files
> are put into the specified cache directory using the signature as a
> filename.  There is also a cache-warming option to scons which populates
> the cache from a built tree.  On a subsequent build, normal behavior is
> if the computed file signature for a derived file (target) matches the
> signature on the file at the target location, then no rebuilding has to
> be done for that file.  If caching is enabled, as an additional check if
> a file named by that signature exists in the cache, then the file is
> copied from the cache.
>
> This is maybe mildly interesting to an individual iotivity developer.
> If you rebuild after making a change, scons should only rebuild the
> affected targets, like any decent buildsystem, and the cache is no help.
>  If you cleaned in between builds, the cache would help.
>
> When the builds are done by the CI system (Jenkins), a fresh environment
> is used every time, so there are no existing files from a previous build
> and you have to pay the price of a complete build every time.  In
> checking with LF, it should be possible to provision the OpenStack
> instances in a way that they mount a persistent location from outside
> the instance which could contain an SCons cache.  A quick local test
> here suggests that using cached data speeds things up quite a bit: a
> relatively parallel build with 8 threads takes 7 minutes or so on my
> machine; the same build with a preloaded cache takes about 1/4 of the
> time.  My setup is fairly quick, the performance gains in other
> scenarios could be a whole lot more.  Or not.  Don't really know until
> tried.  If an impressive ratio holds, that could mean a substantial
> speedup in the turnaround for a "vote" from the CI system on whether a
> patch passes builds or not.
>
> So what is the purpose of this email?  To ask whether this is something
> the team wants to pursue.
>
> It's not a slam dunk: if we could just turns on caching in the project
> and that's it, the experiment would be painless.  But there are plenty
> of infrastructure questions - setting up the sharing as mentioned above,
> whether to share one cache between all builders or use one for each type
> (there are unlikely to be commonalities among builder types - a Linux
> x64 object will always be different, and even have a different name than
> a Windows object, and the ARM object for Tizen, or Android, or iOS will
> also always differ), how to keep the cache fresh and not growing
> endlessly over time, etc.  And it's not clear if the "Jenkins vote" will
> actually come any faster: a couple of the builders run unit tests, and
> the actual running of the tests is not affected by the cache at all, if
> the majority of time is running the tests, it doesn't help them. I don't
> know how much the unit test run time gates the overall full CI
> completion time.
>
> Thoughts?
>
> 
>
>

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#9989): 
https://lists.iotivity.org/g/iotivity-dev/message/9989
Mute This Topic: https://lists.iotivity.org/mt/27787640/21656
Group Owner: iotivity-dev+ow...@lists.iotivity.org
Unsubscribe: https://lists.iotivity.org/g/iotivity-dev/unsub  
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to