Performance of ld on GFS (Global File System)

Harald Anlauf anlauf@gmx.de
Wed Sep 24 20:03:00 GMT 2008


Dear binutil experts,

when linking on a Linux system based on SLES 10, which
uses binutils-2.16.x, I experience the following performance
problem:

Linking the files of a project where the main object and the
(static) libraries are placed on a local disk is quite fast,
with wall clock times typically of the order of 1 second
or less, since files will usually be cached by the operating
system.  When the files reside on an NFS file system, things
are a bit slower, but then waiting just a few seconds longer
is not a problem.

Placing the files on a state-of-the-art server running
the same(*) OS and utilities but where the home file system
is a GFS (Global File System by NEC), performance breaks
down completely.  System times goes up by some two orders of
magnitude (a factor of 100, really!), and wall time may
increase even worse.

The main reason is most likely the blocksize used by GFS
which is tuned for high throughput (the blocksize typically
being between say 4MB and 128MB) and the case of large files.
Operations like open and close are probably quite expensive.

(*) Tools like cp, ln, mkdir etc. are modified to use a
     larger blocksize for better performance.

Subjectively, link times appear to increase ever faster than
linearly with the number of libraries on the command line.

Does anybody know whether newer bintuils address this performance
problem, or does anybody have any suggestions how to work around
this issue?

Thanks in advance for any helpful pointers!

Cheers,
Harald



More information about the Binutils mailing list