On Tue, Apr 28, 2015 at 05:24:16PM -0500, Joshua Cranmer ? wrote:
> On 4/28/2015 4:28 PM, ISHIKAWA, Chiaki wrote:
> >On 2015/04/28 23:30, Toan Pham wrote:
> >>Linking is a process of resolving symbols from object files with
> >>external libraries, and it should not take that long.  When you have a
> >>chance, try to compile the project under a ram filesystem like tmpfs.
> >>I use it most of the time, even when I have an SSD drive.  The tmpfs
> >>will speed up compilation significantly.
> >>
> >
> >With full debug build of thunderbird (without -gsplit-dwarf), I think
> >libxul.so becomes close to 1GB in size.
> >So creating it puts much workload in terms of I/O, and
> >in terms of memory pressure, too, since ordinary linker's data structure
> >to handle the large number of symbols simply runs out of  32-bit memory
> >space during linking.
> >
> >Currently with -gsplit-dwarf,libxul. it is 357.2MB. It is rather large.
> >
> >I may want to try to set aside 2GB of RAM to tmpfs given this size of
> >libxul.so, but as of now, linking libxul runs in a reasonable time by
> >using GNU gold linker and -gsplit-dwarf option to GCC.
> >
> >Thank you for the suggestion, if something goes wrong with
> >linking/build I may try to create a large tmpfs using RAM.
> >
> >At the same time, I have to report that I monitor the memory usage during
> >build, and saw most of memory is used as cache/buffer during linking.
> >Hence I am not sure if tmpfs based on RAM will bring about much speedup in
> >my environment. My CPU is probably 1 ~ 1.5 generation behind the latest
> >one. That may explain the slow speed.
> 
> Linking effectively requires building a list of used files, concatenating
> the used sections together, dropping redundant COMDATs, and then patching
> offsets into the binary, which requires scanning all of the .o files at
> least once--the key, then, is to make sure that the scanning process never
> touches disk. In other words, you need enough RAM that the .o files stay
> resident in the file system cache from when they were last touched in a
> compile-edit-rebuild cycle. Outside of ensuring you have at least 8GB of RAM
> [1], the only recommendation I can give for speeding up is using split-dwarf
> (removes the ginormous debug information from the linking equation) and
> using gold, at least on Linux. I don't think ramfs style builds speed up
> builds if the filesystem is already resident in cache.

(note gold is the default for local builds)
_______________________________________________
dev-builds mailing list
dev-builds@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-builds

Reply via email to