OpenSolaris

Printable Version Enter a New Search
Bug ID 6592976
Synopsis Intel platforms can be compiled in parallel
State 10-Fix Delivered (Fix available in build)
Category:Subcategory consolidation:os-net-misc
Keywords build | nitro | parallel
Responsible Engineer Alexander Kolbasov
Reported Against
Duplicate Of
Introduced In
Commit to Fix snv_85
Fixed In snv_85
Release Fixed solaris_nevada(snv_85)
Related Bugs 6592974 , 6592975
Submit Date 15-August-2007
Last Update Date 12-March-2008
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.
Work Around
N/A
Comments
N/A