From: Adam Borowski <kilobyte@angband.pl>
To: Paul Jones <paul@pauljones.id.au>
Cc: "Peter Becker" <floyd.net@gmail.com>,
"Holger Hoffstätte" <holger@applied-asynchrony.com>,
"Linux BTRFS Mailinglist" <linux-btrfs@vger.kernel.org>
Subject: Re: [PATCH v2 0/4] Support xxhash64 checksums
Date: Fri, 23 Aug 2019 19:08:45 +0200 [thread overview]
Message-ID: <20190823170845.GD17075@angband.pl> (raw)
In-Reply-To: <SYCPR01MB5086BAB60D850EBC8FE046E49EA40@SYCPR01MB5086.ausprd01.prod.outlook.com>
On Fri, Aug 23, 2019 at 09:43:22AM +0000, Paul Jones wrote:
> > > Am Do., 22. Aug. 2019 um 16:41 Uhr schrieb Holger Hoffstätte
> > > <holger@applied-asynchrony.com>:
> > > > but how does btrfs benefit from this compared to using crc32-intel?
> > >
> > > As i know, crc32c is as far as ~3x faster than xxhash. But xxHash was
> > > created with a differend design goal.
> > > If you using a cpu without hardware crc32 support, xxHash provides you
> > > a maximum portability and speed. Look at arm, mips, power, etc. or old
> > > intel cpus like Core 2 Duo.
> >
> > I've got a modified version of smhasher
> > (https://github.com/PeeJay/smhasher) that tests speed and cryptographics
> > of various hashing functions.
>
> I forgot to add xxhash32
>
> Crc32 Software - 379.91 MiB/sec
> Crc32 Hardware - 7338.60 MiB/sec
> XXhash64 Software - 12094.40 MiB/sec
> XXhash32 Software - 6060.11 MiB/sec
>
> Testing done on a 1st Gen Ryzen. Impressive numbers from XXhash64.
Newest biggest Threadripper (2990WX, no 3* version released yet):
crc32 - 492.75 MiB/sec
crc32hw - 9447.37 MiB/sec
crc64 - 1959.51 MiB/sec
xxhash32 - 7479.29 MiB/sec
xxhash64 - 14911.58 MiB/sec
An old Skylake (i7-6700):
crc32 - 359.32 MiB/sec
crc32hw - 21119.68 MiB/sec
crc64 - 1656.34 MiB/sec
xxhash32 - 5989.87 MiB/sec
xxhash64 - 11949.41 MiB/sec
Cascade Lake (0000%@):
crc32hw 1.92× as fast as xxhash64.
So you want crc32hw on Intel, xxhash64 on AMD.
crc32 also allows going back to old kernels; the improved collision
resistance of xxhash64 is not a reason as if you intend to dedupe you want
a crypto hash so you don't need to verify.
Meow!
--
⢀⣴⠾⠻⢶⣦⠀
⣾⠁⢠⠒⠀⣿⡁
⢿⡄⠘⠷⠚⠋ The root of a real enemy is an imaginary friend.
⠈⠳⣄⠀⠀⠀⠀
next prev parent reply other threads:[~2019-08-23 17:09 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-08-22 11:40 [PATCH v2 0/4] Support xxhash64 checksums Johannes Thumshirn
2019-08-22 11:40 ` [PATCH v2 1/4] btrfs: turn checksum type define into a enum Johannes Thumshirn
2019-08-22 11:40 ` [PATCH v2 2/4] btrfs: create structure to encode checksum type and length Johannes Thumshirn
2019-08-22 12:11 ` Johannes Thumshirn
2019-08-22 13:22 ` [PATCH v2.1] " Johannes Thumshirn
2019-08-22 11:40 ` [PATCH v2 3/4] btrfs: use xxhash64 for checksumming Johannes Thumshirn
2019-08-22 11:40 ` [PATCH v2 4/4] btrfs: sysfs: export supported checksums Johannes Thumshirn
2019-08-22 12:28 ` [PATCH v2 0/4] Support xxhash64 checksums Holger Hoffstätte
2019-08-22 12:54 ` Johannes Thumshirn
2019-08-22 15:40 ` Peter Becker
2019-08-23 9:38 ` Paul Jones
2019-08-23 9:43 ` Paul Jones
2019-08-23 17:08 ` Adam Borowski [this message]
2019-08-26 12:27 ` Austin S. Hemmelgarn
2019-08-27 0:33 ` Adam Borowski
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190823170845.GD17075@angband.pl \
--to=kilobyte@angband.pl \
--cc=floyd.net@gmail.com \
--cc=holger@applied-asynchrony.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=paul@pauljones.id.au \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.