Public bug reported:

Dear Maintainer,

The sha256sum provided by coreutils (without openssl) is performing
poorly with gcc versions >= 4.9 until 7.0 (currently under development).
The reason for that is the -fschedule-insns optimization that is used
with -O2. By simply deactivating it, there is a performance improvement
of 2 to 3 times.

I'm using Ubuntu 16.10 and the coreutils package version 8.25-2ubuntu2.

Please check the following closed debian bug report:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=854053

Be aware of the following conditions that are required:
* If ppc64le
* If gcc being used is >= 4.9 and < 7.0

Notes:
1) gcc-7 is not affected by this bug (verified on 20170129 snapshot).
2) clang is not affected by this bug (verified on v3.8 and v3.9).
3) strangely the sha512 is not affected by this.

Below a demonstration of how it performs on my POWER8 machine:

===================================================
$ (./configure && make -j9) > /dev/null && time src/sha256sum 
~/ubuntu-16.10-server-ppc64el.iso
configure: WARNING: libacl development library was not found or not usable.
configure: WARNING: GNU coreutils will be built without ACL support.
configure: WARNING: libattr development library was not found or not usable.
configure: WARNING: GNU coreutils will be built without xattr support.
configure: WARNING: libcap library was not found or not usable.
configure: WARNING: GNU coreutils will be built without capability support.
configure: WARNING: libgmp development library was not found or not usable.
configure: WARNING: GNU coreutils will be built without GMP support.
src/who.c: In function 'print_user':
src/who.c:454:20: warning: initialization discards 'const' qualifier from 
pointer target type [-Wdiscarded-qualifiers]
         int   *a = utmp_ent->ut_addr_v6;
                    ^~~~~~~~
d14bdb413ea6cdc8d9354fcbc37a834b7de0c23f992deb0c6764d0fd5d65408e  
/home/gut/ubuntu-16.10-server-ppc64el.iso

real    0m18.670s
user    0m16.566s
sys     0m0.745s

$ # now with the following patch: ## Check Michael Stone's patch for an 
improved version.
$ diff Makefile.in ../Makefile.in
8989c8989
< @am__fastdepCC_TRUE@  $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< 
&&\
---
> @am__fastdepCC_TRUE@  $(COMPILE) $$([ "$@" == "lib/sha256.o" ] && echo 
> "-fno-schedule-insns") -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
$ cp ../Makefile.in Makefile.in
$ (./configure && make -j9) > /dev/null && time src/sha256sum 
~/ubuntu-16.10-server-ppc64el.iso
configure: WARNING: libacl development library was not found or not usable.
configure: WARNING: GNU coreutils will be built without ACL support.
configure: WARNING: libattr development library was not found or not usable.
configure: WARNING: GNU coreutils will be built without xattr support.
configure: WARNING: libcap library was not found or not usable.
configure: WARNING: GNU coreutils will be built without capability support.
configure: WARNING: libgmp development library was not found or not usable.
configure: WARNING: GNU coreutils will be built without GMP support.
src/who.c: In function 'print_user':
src/who.c:454:20: warning: initialization discards 'const' qualifier from 
pointer target type [-Wdiscarded-qualifiers]
         int   *a = utmp_ent->ut_addr_v6;
                    ^~~~~~~~
d14bdb413ea6cdc8d9354fcbc37a834b7de0c23f992deb0c6764d0fd5d65408e  
/home/gut/ubuntu-16.10-server-ppc64el.iso

real    0m5.903s
user    0m5.560s
sys     0m0.255s

** Affects: coreutils (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: regression-release

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to coreutils in Ubuntu.
https://bugs.launchpad.net/bugs/1667407

Title:
   improve 2x-3x sha256sum performance on ppc64le due to current gcc
  optimization bug

Status in coreutils package in Ubuntu:
  New

Bug description:
  Dear Maintainer,

  The sha256sum provided by coreutils (without openssl) is performing
  poorly with gcc versions >= 4.9 until 7.0 (currently under development).
  The reason for that is the -fschedule-insns optimization that is used
  with -O2. By simply deactivating it, there is a performance improvement
  of 2 to 3 times.

  I'm using Ubuntu 16.10 and the coreutils package version
  8.25-2ubuntu2.

  Please check the following closed debian bug report:
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=854053

  Be aware of the following conditions that are required:
  * If ppc64le
  * If gcc being used is >= 4.9 and < 7.0

  Notes:
  1) gcc-7 is not affected by this bug (verified on 20170129 snapshot).
  2) clang is not affected by this bug (verified on v3.8 and v3.9).
  3) strangely the sha512 is not affected by this.

  Below a demonstration of how it performs on my POWER8 machine:

  ===================================================
  $ (./configure && make -j9) > /dev/null && time src/sha256sum 
~/ubuntu-16.10-server-ppc64el.iso
  configure: WARNING: libacl development library was not found or not usable.
  configure: WARNING: GNU coreutils will be built without ACL support.
  configure: WARNING: libattr development library was not found or not usable.
  configure: WARNING: GNU coreutils will be built without xattr support.
  configure: WARNING: libcap library was not found or not usable.
  configure: WARNING: GNU coreutils will be built without capability support.
  configure: WARNING: libgmp development library was not found or not usable.
  configure: WARNING: GNU coreutils will be built without GMP support.
  src/who.c: In function 'print_user':
  src/who.c:454:20: warning: initialization discards 'const' qualifier from 
pointer target type [-Wdiscarded-qualifiers]
           int   *a = utmp_ent->ut_addr_v6;
                      ^~~~~~~~
  d14bdb413ea6cdc8d9354fcbc37a834b7de0c23f992deb0c6764d0fd5d65408e  
/home/gut/ubuntu-16.10-server-ppc64el.iso

  real    0m18.670s
  user    0m16.566s
  sys     0m0.745s

  $ # now with the following patch: ## Check Michael Stone's patch for an 
improved version.
  $ diff Makefile.in ../Makefile.in
  8989c8989
  < @am__fastdepCC_TRUE@  $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ 
$< &&\
  ---
  > @am__fastdepCC_TRUE@  $(COMPILE) $$([ "$@" == "lib/sha256.o" ] && echo 
"-fno-schedule-insns") -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
  $ cp ../Makefile.in Makefile.in
  $ (./configure && make -j9) > /dev/null && time src/sha256sum 
~/ubuntu-16.10-server-ppc64el.iso
  configure: WARNING: libacl development library was not found or not usable.
  configure: WARNING: GNU coreutils will be built without ACL support.
  configure: WARNING: libattr development library was not found or not usable.
  configure: WARNING: GNU coreutils will be built without xattr support.
  configure: WARNING: libcap library was not found or not usable.
  configure: WARNING: GNU coreutils will be built without capability support.
  configure: WARNING: libgmp development library was not found or not usable.
  configure: WARNING: GNU coreutils will be built without GMP support.
  src/who.c: In function 'print_user':
  src/who.c:454:20: warning: initialization discards 'const' qualifier from 
pointer target type [-Wdiscarded-qualifiers]
           int   *a = utmp_ent->ut_addr_v6;
                      ^~~~~~~~
  d14bdb413ea6cdc8d9354fcbc37a834b7de0c23f992deb0c6764d0fd5d65408e  
/home/gut/ubuntu-16.10-server-ppc64el.iso

  real    0m5.903s
  user    0m5.560s
  sys     0m0.255s

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/coreutils/+bug/1667407/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to