9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
From: Jason Catena <jason.catena@gmail.com>
To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net>
Subject: Re: [9fans] Barrelfish
Date: Fri, 16 Oct 2009 16:17:18 -0500	[thread overview]
Message-ID: <d50d7d460910161417w45b5c675p8740315aaf6861f@mail.gmail.com> (raw)
In-Reply-To: <20091016172030.GB3135@nipl.net>

> Instantaneous building of a complex project from source.
> (I'm defining instantaneous as less than 1 second for this.)

Depends on how complex.  I spent two years retrofitting a commercial
parallel make (which only promises a 20x speedup, even with dedicated
hardware) into the build system of a telecommunications product.  In
retrospect, it would have taken less time to write a new build system
with parallelism designed into it, but it seemed less risky to be
incremental.

There are a lot of dependencies in a complex project.  Bundles wrap up
a set of files which include executable tasks composed of libraries
(linked from their own objects derived from source code) and their own
source code: some hand-coded, and some derived from object-oriented
models, lexical analyzers and compiler-compilers, and message-passing
code generators (it can take a surprisingly long time to generate
optimized C code with a functional language).

Compile some of this for an ordinary unixy platform, some for any
platform which supports java, some for systems without a filesystem
where all code runs in the same space as the kernel.  Each unit of
code wants its own options; all code is expected to honor any global
options; build system should not restrict porting code between
platforms with different build processes (or produce any delay in the
schedule at all;).

All of these factors influence the build time of a project, in a
complex web of dependencies, even after you write or modify all the
build tools to be reentrant so you can run them all at once.

The most effective build strategy I've found is avoidance: just don't
build what you don't have to, and make sure you only build something
once.  One thing complicating this is that make and its common
variants aren't smart enough to handle the case where version control
systems regress a file and present an earlier date not newer than the
derived object.

In a nutshell, my experience is that unless developers abandon all the
fancy tools that supposedly make it easier for them to write mountains
of brittle, special-purpose, especially model-generated code, the tool
chain created by these dependencies will defeat efforts to make it run
faster in parallel.  So all your extra processors will only be useful
for running many of these heavy builds in parallel, as you try to have
each developer build and test before integration.

> Sam

Jason Catena



  parent reply	other threads:[~2009-10-16 21:17 UTC|newest]

Thread overview: 90+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <<20091015105328.GA18947@nipl.net>
2009-10-15 13:27 ` erik quanstrom
2009-10-15 13:40   ` Richard Miller
2009-10-16 17:20   ` Sam Watkins
2009-10-16 18:18     ` Latchesar Ionkov
2009-10-19 15:26       ` Sam Watkins
2009-10-19 15:33         ` andrey mirtchovski
2009-10-19 15:50         ` ron minnich
2009-10-16 21:17     ` Jason Catena [this message]
2009-10-17 20:58       ` Dave Eckhardt
2009-10-18  2:09         ` Jason Catena
2009-10-18 16:02           ` Dave Eckhardt
2009-10-17 18:45   ` Eris Discordia
2009-10-17 21:07     ` Steve Simon
2009-10-17 21:18       ` Eric Van Hensbergen
2009-10-18  8:48         ` Eris Discordia
2009-10-18  8:44       ` Eris Discordia
2009-10-19 15:57     ` Sam Watkins
2009-10-19 16:03       ` ron minnich
2009-10-19 16:46       ` Russ Cox
2009-10-20  2:16       ` matt
2009-10-20  9:15         ` Steve Simon
2009-10-21 15:43         ` Sam Watkins
2009-10-21 16:11           ` Russ Cox
2009-10-21 16:37             ` Sam Watkins
2009-10-21 18:01           ` ron minnich
2009-10-28 15:37           ` matt
     [not found]   ` <A90043D02D52B2CBF2804FA4@192.168.1.2>
2009-10-18  0:06     ` ron minnich
2009-10-18  0:54       ` Roman Shaposhnik
     [not found] <<4ADD147A.4090801@maht0x0r.net>
2009-10-20  2:11 ` erik quanstrom
2009-10-20  2:33   ` matt
     [not found] <<20091019182352.GA1688@polynum.com>
2009-10-19 18:48 ` erik quanstrom
     [not found] <<4ADC7439.3060502@maht0x0r.net>
2009-10-19 16:13 ` erik quanstrom
2009-10-19 18:23   ` tlaronde
2009-10-20  1:38   ` matt
2009-10-20  1:58     ` Eris Discordia
2009-10-20  2:17       ` matt
     [not found] <<20091019155738.GB13857@nipl.net>
2009-10-19 16:05 ` erik quanstrom
2009-10-19 16:34   ` Sam Watkins
2009-10-19 17:30     ` ron minnich
2009-10-19 17:57       ` W B Hacker
2009-10-19 18:14       ` David Leimbach
     [not found] <<20091018031508.717CE5B30@mail.bitblocks.com>
2009-10-19 13:44 ` erik quanstrom
2009-10-19 14:36   ` David Leimbach
     [not found] <<d50d7d460910161417w45b5c675p8740315aaf6861f@mail.gmail.com>
2009-10-16 22:25 ` erik quanstrom
     [not found] <<20091016172030.GB3135@nipl.net>
2009-10-16 18:34 ` erik quanstrom
     [not found] <<3e1162e60910150805q2ea3f682w688299a39274051c@mail.gmail.com>
2009-10-15 15:28 ` erik quanstrom
     [not found] <<4AD70EE9.1010208@conducive.org>
2009-10-15 13:52 ` erik quanstrom
     [not found] <<207092dc429fe476c2046d537aeaa400@hamnavoe.com>
2009-10-15 13:52 ` erik quanstrom
2009-10-15 15:07   ` David Leimbach
2009-10-15 15:21     ` roger peppe
2009-10-16 17:21       ` Sam Watkins
2009-10-16 23:39         ` Nick LaForge
2009-10-18  1:12         ` Roman Shaposhnik
2009-10-19 14:14           ` matt
2009-10-19 16:00           ` Sam Watkins
2009-10-14 19:09 Tim Newsham
2009-10-14 19:54 ` Roman Shaposhnik
2009-10-14 21:21   ` Tim Newsham
2009-10-14 21:33     ` Lyndon Nerenberg (VE6BBM/VE7TFX)
2009-10-14 21:42       ` Noah Evans
2009-10-14 21:45         ` erik quanstrom
2009-10-14 21:57           ` Noah Evans
2009-10-14 22:10         ` Eric Van Hensbergen
2009-10-14 22:21           ` Noah Evans
2009-10-15  1:03     ` David Leimbach
2009-10-15  1:50     ` Roman Shaposhnik
2009-10-15  2:12       ` Eric Van Hensbergen
2009-10-15 10:53       ` Sam Watkins
2009-10-15 11:50         ` Richard Miller
2009-10-15 12:00           ` W B Hacker
2009-10-16 17:03           ` Sam Watkins
2009-10-16 18:17             ` ron minnich
2009-10-16 18:39               ` Wes Kussmaul
2009-10-17 12:42             ` Roman Shaposhnik
2009-10-15 11:56         ` Josh Wood
2009-10-15 13:11         ` hiro
2009-10-15 15:05           ` David Leimbach
2009-10-18  1:15         ` Roman Shaposhnik
2009-10-18  3:15           ` Bakul Shah
     [not found]             ` <e763acc10910180606q1312ff7cw9a465d6af39c0fbe@mail.gmail.com>
2009-10-18 13:22               ` Roman Shaposhnik
2009-10-18 19:18                 ` Bakul Shah
2009-10-18 20:12                   ` ron minnich
2009-10-14 21:36   ` Eric Van Hensbergen
2009-10-15  2:05     ` Roman Shaposhnik
2009-10-15  2:17       ` Eric Van Hensbergen
2009-10-15  3:32         ` Tim Newsham
2009-10-15  3:59           ` Eric Van Hensbergen
2009-10-15 17:39             ` Tim Newsham
2009-10-15 18:28 ` Christopher Nielsen
2009-10-15 18:55   ` W B Hacker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d50d7d460910161417w45b5c675p8740315aaf6861f@mail.gmail.com \
    --to=jason.catena@gmail.com \
    --cc=9fans@9fans.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).