Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


gcc build time benchmarks on huge-ass dedis
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

gcc build time benchmarks on huge-ass dedis

I'm interested in finding out how long it takes to build GCC7 on various big dedis, let's say 6+ cores and 10K+ passmark. It's about 30 minutes on my i7-3770 (4 cores, 9k passmark) but I'd like to see the real monsters, E5-2697, Epyc 32-core and all that. I can supply a test script that runs under Debian and maybe could generate scripts for a few other popular distros, or if you're willing to give me temporary ssh access (non-root, can firewall almost everything) I could run it myself and post the results.

Test duration including setup: under 1 hour

Disk space needed: on order of 1GB

Server should be unloaded during test.

Budget: $0 but I can possibly help you out with some test or dev issue of your own.

Let me know if you want to try this.

Comments

  • I'd help ya out, we willie, but I have no dedis left, and my 8 core months-to-end-of-contract VPS is burning away at golum precious razorcoins.

  • eva2000eva2000 Veteran
    edited December 2017

    I no longer build GCC myself on CentOS as SCL devtoolset yum repos are available. It's how my Centmin Mod LEMP stack can install Nginx and PHP-FPM on CentOS 6/7 with GCC 4.4,4.8, 5.3.1, 6.3.1. 7.2.1 and Clang 3.4 and 4.0.1. Only need to compile for Clang 5.0.1 right now https://community.centminmod.com/threads/testing-gcc-7-1-7-2-clang-4-0-1-scl-yum-packages.12815/ :)

    Not that familiar with Debian, but would they have a similar 3rd party repos for such GCC versions as well ?

    My OVH MC-64-OC 7700K @ 4.7-5.0Ghz expires in next ~3hrs so can give an Debian OS reload if you can link me to the scripts/instructions to compile and which version of Debian etc :)

  • williewillie Member
    edited December 2017

    Eva, thanks! Please try the following:

    sudo apt-get update
    sudo apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev libc6-dev-i386
    
    wget http://www.netgull.com/gcc/releases/gcc-7.2.0/gcc-7.2.0.tar.xz 
    tar xf gcc-7.2.0.tar.xz
    # do NOT cd into the gcc-7.2.0 directory here
    
    mkdir test
    cd test
    ../gcc-7.2.0/configure
    time make -j8
    

    Thanks also to exception0x876, who lent me a 2xE5-2670 16-core VM for the past hour. Build time for the above with -j20 (20 threads, slightly higher than the physical core count) was:

    real 25m43.241s
    user 213m16.832s
    sys 6m17.300s
    

    Note that's just over 800% cpu utilization, about half what I'd hope for on a 16 core machine. I saw a lot of the build time was spent re-running configuration scripts or linking .o's. At those times, the make was running essentially single threaded. There was very little time when all 16 cores were in use, and I never saw the 15 minute load average get above 8. The total time beats my i7-3770 but not by a huge amount. Eva2000, your overclocked game machine will probably do better than the E5 because of its higher single thread performance.

    I have some other tests that could get better parallelism, if anyone wants to try them sometime (not now).

    I'd been wanting to do this test for a while, and it was interesting!

  • eva2000 said: Not that familiar with Debian, but would they have a similar 3rd party repos for such GCC versions as well ?

    gcc-7 is in buster (testing) and sid on Debian.

    But I don't think that's the purpose of this thread ;)

  • eva2000eva2000 Veteran
    edited December 2017

    @willie get an error on debian 9.3 64bit

    checking for default BUILD_CONFIG... bootstrap-debug
    checking for --enable-vtable-verify... no
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/6/libgcc.a when searching for -lgcc
    /usr/bin/ld: cannot find -lgcc
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/6/libgcc_s.so.1 when searching for libgcc_s.so.1
    /usr/bin/ld: cannot find libgcc_s.so.1
    /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/6/libgcc.a when searching for -lgcc
    /usr/bin/ld: cannot find -lgcc
    collect2: error: ld returned 1 exit status
    configure: error: I suspect your system does not have 32-bit development libraries (libc and headers). If you have them, rerun configure with --enable-multilib. If you do not have them, and want to build a 64-bit-only compiler, rerun configure with --disable-multilib.
    

    from

    apt-get install build-essential libgmp-dev libmpfr-dev libmpc-dev libc6-dev-i386
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    build-essential is already the newest version (12.3).
    libc6-dev-i386 is already the newest version (2.24-11+deb9u1).
    libgmp-dev is already the newest version (2:6.1.2+dfsg-1).
    libmpc-dev is already the newest version (1.0.3-1+b2).
    libmpfr-dev is already the newest version (3.1.5-1).
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    

    GCC

    gcc -v
    Using built-in specs.
    COLLECT_GCC=gcc
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/6/lto-wrapper
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Debian 6.3.0-18' --with-bugurl=file:///usr/share/doc/gcc-6/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-6 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-plugin --enable-default-pie --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-6-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-6-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-6-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --with-target-system-zlib --enable-objc-gc=auto --enable-multiarch --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    gcc version 6.3.0 20170516 (Debian 6.3.0-18) 
    

    seems this works with

    ../gcc-7.2.0/configure --enable-multilib
    

    but make fails

    Makefile:23803: recipe for target 'stage1-bubble' failed
    make[1]: *** [stage1-bubble] Error 2
    make[1]: Leaving directory '/home/test'
    Makefile:933: recipe for target 'all' failed
    make: *** [all] Error 2
    
  • Hmm, thanks. Can you try with --disable-multilib? It's odd, libc6-dev-i386 is supposed to supply the 32-bit lib. I wonder if there's some regression in Debian 9.3.

  • willie said: Can you try with --disable-multilib?

    it's compiling with that flag so will see :)

  • eva2000eva2000 Veteran
    edited December 2017

    gcc 7.2.0 built on i7 7700K @ 4.7-5.0Ghz with 2x450GB NVMe raid 1

    real    19m31.112s
    user    116m12.640s
    sys     1m46.704s
    
    Thanked by 1vimalware
  • Thanks!

  • xyzxyz Member
    edited December 2017

    Yeah gets blocked by config scripts etc a lot of the time.

    Not a server, but a machine I have here which is a i7 7820X (8C/16T 3.6-4.5GHz), 32GB RAM, Samsung 960 Pro 512GB, Ubuntu 17.10 amd64 (so GCC 7.2.0), make -j20:

    real    17m45.548s
    user    134m43.578s
    sys     4m12.850s
    

    The compilation software does kinda matter, and really, a proper test needs to use the same version of everything, but anyway...

    Thanked by 1willie
  • 12170.12user 416.28system 22:47.02elapsed 920%CPU (0avgtext+0avgdata 649044maxresident)k
    143080inputs+16899952outputs (2766major+192128013minor)pagefaults 0swaps
    

    Build on Dual Xeon E5-2680v4 (28C56T, 2.4G/3.3G Max) with 256GB RAM DDR4 2400MT/s
    Build with command /usr/bin/time make -j64

  • Thanks xyz and EveNeko. It sounds like clock speed is still king for this test.

  • netpioneernetpioneer Member
    edited December 2017

    E3-1231 (v3 @ 3.40GHz - 3.80GHz)

    make -j1

    real 131m22.912s
    user 121m47.648s
    sys 2m9.024s

    make -j2

    real 69m28.986s
    user 124m0.876s
    sys 2m17.944s

    make -j3

    real 49m33.381s
    user 128m48.904s
    sys 2m26.100s

    make -j4

    real 40m5.422s
    user 133m25.224s
    sys 2m27.528s

    make -j8

    real 35m16.522s
    user 207m14.400s
    sys 3m35.968s

    Thanked by 1willie
  • willie said: It sounds like clock speed is still king for this test.

    yes it is. A i7 8700K 6C/12T processor would be ideal :)

Sign In or Register to comment.