[CMake] slow CMake performance configuring builds on remote SMB servers

John Biddiscombe biddisco at cscs.ch
Fri Mar 23 10:57:19 EST 2007


No real consolation or assistance, but I complained to our sysadmins 
that we had very slow builds from slave nodes, but fast from the master. 
I did some timing to give them something to aim for and it was

Master node : configure+generate = 25 seconds   (file system is fibre 
channel or something almost local)
Slave node  : configure+generate = 210 seconds  (file system is nfs)

A factor of almost 10! And really just because the dependency checking 
and makefile writes etc use IO heavily...

Just so you know that it's not a samba specific problem, anything over 
NFS is affected.

JB
> Philip Lowman wrote:
>> -----BEGIN PGP SIGNED MESSAGE-----
>> Hash: SHA1
>>
>>
>>  
>>>>       
>>> Is it mostly sending time in try-compile stuff?  If so, it might be
>>> possible that we could add some sort of cmake temp directory that was
>>> not under the build tree to run try-compile tests in.  Then that could
>>> be set to a local disk.   Once you have run CMake the first time, is it
>>> fast after that?
>>>     
>>
>> That's the weird thing, it definitely is slow during the initial
>> compilation tests but after everything has been configured for the first
>> time even when I click "configure" again (and I have changed no cache
>> variables) it still takes about a minute to finish and about another 30
>> seconds after I click "generate" to write out the 25 or so VCproj files.
>>
>> Does CMake do anything weird during it's configuration phase like write
>> out temporary files?  Laying aside the initial compile checks which may
>> be occuring on the network drive (but if so, could be optimized to occur
>> in temp space on the C: ) what other file writes does CMake do prior to
>> generating the Makefiles?
>>   
> Most files cmake writes out are copy if different.  So, cmake writes a 
> file, then diff's it with the
> file that was already there, and if they are different it gets rid of 
> the original and moves the new
> file into place.   This is to avoid too many reloads and other side 
> effects of changing all the
> files all the time.   It would be a lot of work, but I suppose you 
> might be able to build the whole
> tree in some staging area, then move it later.   But, that sounds very 
> difficult.   It may just be
> that running cmake over network drives on windows is slow....
>
> -Bill
>
> _______________________________________________
> CMake mailing list
> CMake at cmake.org
> http://www.cmake.org/mailman/listinfo/cmake


-- 
John Biddiscombe,                            email:biddisco @ cscs.ch
http://www.cscs.ch/about/BJohn.php
CSCS, Swiss National Supercomputing Centre  | Tel:  +41 (91) 610.82.07
Via Cantonale, 6928 Manno, Switzerland      | Fax:  +41 (91) 610.82.82




More information about the CMake mailing list