This is the mail archive of the libc-help@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Why do you want libc to be 5 times slower than other libraries?


On Tue, 2008-08-05 at 10:43 +0200, Agner Fog wrote: > I have found that libc is up to 5 times slower than the best function > libraries for important memory and string functions. This was documented > in my last mail (included below). I also told how to improve it. But > nobody seems to care!? People care but volunteers work at volunteer pace. > I think that this topic belongs in the libc-alpha mailing list, but the > moderator rejected my mail and told me to send it to libc-help instead. > And here nobody replies. ïYour email to libc-alpha was rejected because the libc-alpha mailing list isn't a discussion list for covering the process of glibc bug/enhancement submissions (that is what bugzilla and/or libc-help are for). Regarding contribution: a.) GLIBC is a GPL licensed project where the copyright for the code in question has been assigned to the Free Software Foundation. All code that is contributed must be copyright assigned to the Free Software Foundation. This means that, regardless of the license of the reference code, we can not use 'open source' code from other projects unless it has been explicitly copyright assigned to the FSF. b.) Many GLIBC develops won't even look at other code for fear of contamination. c.) The principles of free software collaboration generally follow the 'scratch an itch' pattern. Many of us are volunteers or we're professionals who're tasked with concentrating on certain aspects of GLIBC or specific architectures. It is a very limited contribution (in our eyes) to offer up a TODO list without following up with the time to do the work, prove it, and contribute it while following the proper process that makes it possible for us to accept the contribution. > I know that libc-help is for questions only, so here is my question: The ïlibc-help mailing list is for a lot of things, not just questions. It is a place to develop ideas, vet patches, learn the development process, refine patches, etc. > Are you so happy that libc is much slower than other libraries that you > don't want to make it faster? Performance improvements have been actively pursued for some time, especially by the companies who produce the architectures in question. Please engage this mailing list and the particular developers indicated below if you can identify problems with the current routines. > Agner Fog wrote: > > I am doing research on optimization of microprocessors and compilers. > > Some of you probably know my optimization manuals > > (www.agner.org/optimize/). Regarding optimization of critical memory routines; There are several questions you've left unanswered. This is quite a hefty topic to drop on us. a.) There is already a framework for optimizations. All there is to do is put optimal assembly code into sysdeps/cpu/cputype subdirectories, e.g.: sysdeps/i386/i686/memcpy.S, sysdeps/x86_64/mempcpy.S, sysdeps/powerpc/powerpc64/power6/memcpy.S, etc. b.) You didn't CC any of the developers at AMD or Intel who've already worked on such optimizations, e.g. Evandro Menezes, Michael Meissner, H.J. Lu, Harsha Jagasia, et al. c.) There are already implementations by AMD and Intel's own programmers that're actively being developed: http://sourceware.org/ml/libc-alpha/2007-01/msg00025.html http://sourceware.org/ml/libc-alpha/2007-02/msg00022.html http://sourceware.org/ml/libc-alpha/2007-08/msg00051.html http://sourceware.org/ml/libc-alpha/2008-02/msg00045.html d.) Your email didn't indicate how you gathered your data or whether you verified that what you were testing is an optimized version of the code for the processor in question. It is up to the Linux OS distributor to decide whether to compile and ship a CPU optimized library for a particular CPU or CPU subtype with their distribution. Did you compile your own versions of GLIBC for your tests? Are you sure you distribution isn't using the default (non-cpu specific) string routines? e.) Any optimization of critical routines has to take into account many factors regarding the data being processed. Of concern is not only aligned and unaligned data, but also data length, e.g. short-aligned, short-unaligned, long-aligned, long-unaligned f.) You'll have to get consensus amongst the concerned parties (and with the maintainer) that the trade-offs you're suggesting are appropriate. People will work with you but you have to realize that you'll need to work with the existing developers from AMD and Intel to improve the performance of the existing string functions. Regards, Ryan S. Arnold IBM Linux Technology Center 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]