Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 432170

Summary: Use of WHIRLPOOL on older systems means slower emerges (control with new PORTAGE_CHECKSUM_FILTER variable)
Product: Portage Development Reporter: Alan Hourihane <alanh>
Component: UnclassifiedAssignee: Portage team <dev-portage>
Status: RESOLVED FIXED    
Severity: normal CC: pinkbyte
Priority: Normal Keywords: InVCS
Version: unspecified   
Hardware: ARM   
OS: Linux   
See Also: https://bugs.gentoo.org/show_bug.cgi?id=885909
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 835380, 431026    

Description Alan Hourihane 2012-08-21 09:54:44 UTC
I just ran a test on some of my older boxes after being puzzled why emerge was getting slow over recent months. And it turns out it's the use of WHIRLPOOL as a cipher for the digests.

I have an ARM v4l box running at 276MHz, and here's some timings.....

bash# time openssl dgst -sha256 /usr/portage/distfiles/binutils-2.22.tar.bz2
SHA256(/usr/portage/distfiles/binutils-2.22.tar.bz2)= 6c7af8ed1c8cf9b4b9d6e6fe09a3e1d3d479fe63984ba8b9b26bf356b6313ca9

real	0m4.452s
user	0m3.380s
sys	0m1.060s

bash# time openssl dgst -sha512 /usr/portage/distfiles/binutils-2.22.tar.bz2
SHA512(/usr/portage/distfiles/binutils-2.22.tar.bz2)= ffe8ef263ef99183e8cc823fe8487ff7d0f7bf9a8efd2853b5f4636aca0023850d13de4eac7d77a5f69413d8a50e6f95bb14569be53df86c0bce38034525ab74

real	0m7.143s
user	0m6.060s
sys	0m1.080s

bash# time openssl dgst -whirlpool /usr/portage/distfiles/binutils-2.22.tar.bz2
whirlpool(/usr/portage/distfiles/binutils-2.22.tar.bz2)= 8bea2f2082600587649a5f9fffada9c6cf14f42ebddd1e6a4b4d7be25446d7ad76e1335cf8cefe30c812ced408c9dacb55d0033e4b0eaff83efbbfb5ea5f60dc

real	1m8.535s
user	1m4.310s
sys	0m1.780s

Is there any way which older systems don't need to use WHIRLPOOL as I'm sure other systems will be suffering.
Comment 1 Zac Medico gentoo-dev 2012-08-21 14:58:30 UTC
We can add a PORTAGE_CHECKSUM_FILTER variable that will allow you to exclude hash functions that you don't want. If we make it behave similarly to the ACCEPT_LICENSE variable, the you'll be able to use a setting like "* -WHIRLPOOL" to exclude just the whirlpool checksums.
Comment 2 Alan Hourihane 2012-08-21 15:03:42 UTC
Sounds good.
Comment 3 Zac Medico gentoo-dev 2012-08-21 20:24:43 UTC
PORTAGE_CHECKSUM_FILTER is implemented in git:

http://git.overlays.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=accee1b7c61da284022f86d9ab39bcb492ea4023
Comment 4 Zac Medico gentoo-dev 2012-08-22 23:46:06 UTC
This is fixed in 2.1.11.11 and 2.2.0_alpha122.