|
Description
|
It is possible to compile uts and lib in parallel since there are no dependencies. Library
build parallelism is quite low, so this change improves total build time.
Currently during ON build all sparc platforms (sun4v, sun4u and sparc) are compiled
sequentially. It should be possible to compile them in parallel. The trick is to build sun4u/genunix first since everyone depends on it.
Currently intel and i86pc platforms are compiled sequentially. It should be possible to
compile them in parallel. The trick is to build intel/genunix first since both depend on
it.
Here is data gathered using DTrace during x86 build. It shows which directories are entered during the build
and what targets cause that.
*** intel/ip
The intel/ip directory is entered when building i86pc, i86xpv and intel to
satisfy dependency on IPCTF target.
The first time is when building i86pc:
usr/src 2s 13m44s -e install
usr/src/uts 17s 9m59s install
usr/src/uts/i86pc 17s 3m21s install
usr/src/uts/i86pc/unix 20s 2m51s install
usr/src/uts/i86pc/unix 21s 1m30s install.targ
usr/src/uts/intel/genunix 31s 1m10s all.targ
usr/src/uts/intel/ip 32s 22s ipctf.debug64
Second time is the same but for 32-bit
i86xpv:
usr/src/uts/i86xpv 3m38s 1m28s install
usr/src/uts/i86xpv/unix 3m41s 1m15s install
usr/src/uts/i86xpv/unix 3m42s 37s install.targ
usr/src/uts/intel/genunix 3m54s 13s all.targ
usr/src/uts/intel/ip 3m55s 3s ipctf.debug64
intel:
usr/src/uts/intel 5m6s 5m9s install
usr/src/uts/intel/genunix 5m7s 28s install
usr/src/uts/intel/genunix 5m8s 13s install.targ
usr/src/uts/intel/ip 5m9s 3s ipctf.debug64
And then, again, when intel directory is built:
usr/src/uts/intel 5m36s install
usr/src/uts/intel/ip 5m36s 3m55s install
usr/src/uts/intel/ip 5m38s 58s install.targ
usr/src/uts/intel/ip 6m36s 1m18s install.targ
usr/src/uts/intel/ip 7m54s 52s def.targ
usr/src/uts/intel/ip 8m45s 43s def.targ
So there is a race between i86pc/i86xpv and intel directories when these are
compiled in parallel.
*** i86pc/genassym
usr/src 2s 13m44s -e install
usr/src/uts 17s 9m59s install
usr/src/uts/i86pc 17s 3m21s install
usr/src/uts/i86pc/genassym 17s 3s install
usr/src/uts/i86pc/genassym 17s 2s def.targ
usr/src/uts/i86pc/genassym 19s 1s def.targ
usr/src/uts/i86pc/unix 20s 2m51s install
usr/src/uts/i86pc/unix 21s 1m30s install.targ
usr/src/uts/i86pc/genassym 21s all.targ
usr/src/uts/i86pc/genassym 30s all.targ
usr/src/uts/i86pc/unix 1m51s 1m19s install.targ
usr/src/uts/i86pc/genassym 1m52s all.targ
usr/src/uts/i86pc/genassym 2m all.targ
usr/src/uts/intel 6m9s install
usr/src/uts/intel/dtrace 6m9s 3m27s install
usr/src/uts/intel/dtrace 6m10s 1m43s install.targ
usr/src/uts/i86pc/genassym 6m11s 2s all.targ
usr/src/uts/intel/dtrace 7m53s 1m44s install.targ
usr/src/uts/i86pc/genassym 7m54s 2s all.targ
Note that building genassym involves building i86pc/unix.
Also there is a race between building i86pc and intel/dtrace
*** i86xpv/genassym
usr/src ksh usr/src/tools/scripts/nightly.sh /export2/builds/on
usr/src 2s 13m44s -e install
usr/src/uts 17s 9m59s install
usr/src/uts/i86xpv 3m38s 1m28s install
usr/src/uts/i86xpv/genassym 3m38s 3s install
usr/src/uts/i86xpv/genassym 3m38s 2s def.targ
usr/src/uts/i86xpv/genassym 3m40s 2s def.targ
usr/src/uts/i86xpv/unix 3m41s 1m15s install
usr/src/uts/i86xpv/unix 3m42s 37s install.targ
usr/src/uts/i86xpv/genassym 3m42s all.targ
usr/src/uts/i86xpv/genassym 3m53s all.targ
usr/src/uts/i86xpv/unix 4m20s 36s install.targ
usr/src/uts/i86xpv/genassym 4m20s all.targ
usr/src/uts/i86xpv/genassym 4m30s all.targ
Note that building it tries to rebuild i86xpv/unix.
We can fix it by building parts that are entered several times up-front and remove places in Makefile which cause the rebbuild.
|