[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16061616#comment-16061616 ] James Peach commented on MESOS-1582: Also, we should make the obvious changes to remove internal implementation details from widely included headers. For example, [https://reviews.apache.org/r/59952/|https://reviews.apache.org/r/59952/] which removes the need to rebuild almost the whole project when the internal `FetcherProcess` is touched. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > Labels: microsoft, tech-debt > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15830295#comment-15830295 ] Alex Clemmer commented on MESOS-1582: - Fortunately, [~vinodkone], it happens to be the case that this is already roadmap-adjacent for [~kaysoky] and I. It would be natural to tackle this when we also tackle the "break libmesos up into many binaries" issue: https://issues.apache.org/jira/browse/MESOS-3542 I think the next step is to write up a little design doc about the plan. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > Labels: microsoft, tech-debt > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15830103#comment-15830103 ] Vinod Kone commented on MESOS-1582: --- [~hausdorff] I'm huge +1 to fixing this. Unfortunately, I don't have cycles to shepherd this myself, but I'm hoping we can find one from our ever growing committer pool. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > Labels: microsoft, tech-debt > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15828645#comment-15828645 ] Alex Clemmer commented on MESOS-1582: - I'd like to try to resurrect this issue and see what the appetite is for addressing it. To my estimation, this build times issue is pretty close to being unbearable on Windows, where we don't really have (free) tools like `ccache` to help us address even the symptoms of the problem. I have worked with 100k+ LOC projects that compiled in < 30seconds, and based on this experience, I can say that I expect that successfully driving down build times would greatly improve the dev efficiency of the people working on these code paths. Obviously, we'd also expect such an improvement to also improve the dev efficiency of the project as a whole. The question, I think is: at what cost? I spent some time looking at where the build is getting hung up, and I think this work would be split up largely into two big tasks: 1. Driving down the cost of compiling individual object files. Others have pointed this out, and my benchmarking indicates that this is true, particularly around test files. It's not clear how much mileage there is to get out of this, we will have to use an include-what-you-use tool to see how bad this is. 2. Driving down the cost of end-to-end builds. This is largely a problem of dependency structure. There is the obvious case of Stout and Libprocess, which touch pretty much everything, and can trigger essentially a complete rebuild. But there is also the issue that the Agent codebase is largely monolithic; if it could be broken out and better-modularized, I suspect we could make real progress to avoiding substantial rebuilds of the Agent codebase. I suspect that an ideal solution to this problem will trigger quite a lot of changes to the Agent codebase, and might even include turning Stout into a .cpp based (rather than header-only) library. So before we get too far down the rabbit hole, I want to make sure that people (1) agree this is worth doing, and (2) are ok with the potential changes that will go into this. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > Labels: microsoft > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15828626#comment-15828626 ] Alex Clemmer commented on MESOS-1582: - I'd like > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > Labels: microsoft > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14973328#comment-14973328 ] James Peach commented on MESOS-1582: I spent some more time trying to see whether there was a specific source if build slowness. http://fpaste.org/283530/14457915/ is my result for {{./src/docker/docker.cpp}}. It looks to me like a death-by-a-thousand-cuts situation, where the incremental cost of unnecessary templates and header-file implementations adds up slowly. It didn't seem to me that in this case there were any easy wins, though it is easy for me to believe that including {{master/master.hpp}} is expensive. Using -ftime-report, clang spends most of it's time (64%) in "Clang front-end timer", and I think that gcc is spending it's time in template instantiation and codegen: {code} phase parsing : 3.00 (23%) usr 1.40 (85%) sys 4.87 (33%) wall 571872 kB (39%) ggc phase lang. deferred: 3.23 (25%) usr 0.04 ( 2%) sys 3.26 (22%) wall 398303 kB (27%) ggc phase opt and generate : 5.49 (43%) usr 0.19 (12%) sys 5.69 (38%) wall 446259 kB (31%) ggc template instantiation : 3.80 (30%) usr 0.09 ( 5%) sys 3.78 (25%) wall 506551 kB (35%) gcc {code} > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14973107#comment-14973107 ] haosdent commented on MESOS-1582: - I found most time are spent in #include files. For example, #include "tests/mesos.hpp" need 3 seconds, #include "master/master.hpp" also nearly 3 seconds. I would write a script to generate a list contains the include time for every header file. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14972825#comment-14972825 ] haosdent commented on MESOS-1582: - Add the missing libprocess build time for every object: http://fpaste.org/283318/ > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14959719#comment-14959719 ] James Peach commented on MESOS-1582: Here's a quick hack to generate compilation timings: {code} diff --git a/src/Makefile.am b/src/Makefile.am index 96ce73b..fd3389b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -56,6 +56,11 @@ endif PROTOCFLAGS = -I$(top_srcdir)/include -I$(srcdir) +TIME = /usr/bin/time +ECHO = /bin/echo +am__v_CXX_time = $(ECHO) -n " CXX " $@ && $(TIME) +am__v_lt_time = --silent + # Initialize variables here so we can use += operator everywhere else. lib_LTLIBRARIES = noinst_LTLIBRARIES = {code} > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14959198#comment-14959198 ] haosdent commented on MESOS-1582: - Seems build the test objects spend a lot of time. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14959176#comment-14959176 ] James Peach commented on MESOS-1582: Here's the build times w/ clang on OS X with {{-g -O0}}: http://fpaste.org/279627/92656414/ > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14955313#comment-14955313 ] James Peach commented on MESOS-1582: Here's my plan ... add build support for generating a file containing wall-clock build time for each file. Taking the longest compilation times, use {{-ftime-report}} with clang and gcc to figure out where the time is being spent. Rinse and repeat. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14955125#comment-14955125 ] James Peach commented on MESOS-1582: One of the worst offenders is the test suite. I experimented a bit with mock [recomendations|https://github.com/google/googletest/blob/master/googlemock/docs/CookBook.md#making-the-compilation-faster] but did not measure any improvement. I'd be happy to take a crack at improving this provided there was a shepherd. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14060819#comment-14060819 ] Timothy St. Clair commented on MESOS-1582: -- IMHO subsuming stout into libprocess and converting .hpp -> .cpp would go a long way. Right now stout doesn't really live alone, but requires dependencies that exist under libprocess/3rdparty. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. > I'd also love to actually track build times so we can get an appreciation of > the improvements. Please leave a comment below with your build times! -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (MESOS-1582) Improve build time.
[ https://issues.apache.org/jira/browse/MESOS-1582?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14060776#comment-14060776 ] Benjamin Hindman commented on MESOS-1582: - Some initial suggestions that we can turn into their own JIRA issues (some of which already exist, so we can just include them within this epic): * An "include what you use" campaign that strips headers that are not used, possibly even using the include-what-you-use clang tool. * Move implementations from .hpp to .cpp. * Separate large .cpp as necessary (increase parallelism). * Introduce more forward declarations in place of headers. * Document use and speedup of ccache. > Improve build time. > --- > > Key: MESOS-1582 > URL: https://issues.apache.org/jira/browse/MESOS-1582 > Project: Mesos > Issue Type: Epic > Components: build >Reporter: Benjamin Hindman > > The build takes a ridiculously long time unless you have a large, parallel > machine. This is a combination of many factors, all of which we'd like to > discuss and track here. -- This message was sent by Atlassian JIRA (v6.2#6252)