Files
linux/include/linux
Timofey Titovets 0b9df58b79 xxHash: create arch dependent 32/64-bit xxhash()
Patch series "Currently used jhash are slow enough and replace it allow as
to make KSM", v8.

Apeed (in kernel):
        ksm: crc32c   hash() 12081 MB/s
        ksm: xxh64    hash()  8770 MB/s
        ksm: xxh32    hash()  4529 MB/s
        ksm: jhash2   hash()  1569 MB/s

Sioh Lee's testing (copy from other mail):

Test platform: openstack cloud platform (NEWTON version)
Experiment node: openstack based cloud compute node (CPU: xeon E5-2620 v3, memory 64gb)
VM: (2 VCPU, RAM 4GB, DISK 20GB) * 4
Linux kernel: 4.14 (latest version)
KSM setup - sleep_millisecs: 200ms, pages_to_scan: 200

Experiment process:
Firstly, we turn off KSM and launch 4 VMs.  Then we turn on the KSM and
measure the checksum computation time until full_scans become two.

The experimental results (the experimental value is the average of the measured values)
crc32c_intel: 1084.10ns
crc32c (no hardware acceleration): 7012.51ns
xxhash32: 2227.75ns
xxhash64: 1413.16ns
jhash2: 5128.30ns

In summary, the result shows that crc32c_intel has advantages over all of
the hash function used in the experiment.  (decreased by 84.54% compared
to crc32c, 78.86% compared to jhash2, 51.33% xxhash32, 23.28% compared to
xxhash64) the results are similar to those of Timofey.

But, use only xxhash for now, because for using crc32c, cryptoapi must be
initialized first - that require some tricky solution to work good in all
situations.

So:

- First patch implement compile time pickup of fastest implementation of
  xxhash for target platform.

- The second patch replaces jhash2 with xxhash

This patch (of 2):

xxh32() - fast on both 32/64-bit platforms
xxh64() - fast only on 64-bit platform

Create xxhash() which will pick up the fastest version at compile time.

Link: http://lkml.kernel.org/r/20181023182554.23464-2-nefelim4ag@gmail.com
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
Reviewed-by: Pavel Tatashin <pavel.tatashin@microsoft.com>
Reviewed-by: Mike Rapoport <rppt@linux.vnet.ibm.com>
Reviewed-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: leesioh <solee@os.korea.ac.kr>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2018-12-28 12:11:46 -08:00
..
2018-11-14 10:56:33 -08:00
2018-12-11 09:57:47 -08:00
2018-10-16 11:13:50 +02:00
2018-12-11 01:04:23 +00:00
2018-11-12 10:33:49 +01:00
2018-05-26 09:16:44 +02:00
2018-06-15 18:10:01 -03:00
2018-11-26 18:41:21 -05:00
2018-11-01 19:59:53 -06:00
2018-10-19 13:24:31 -07:00
2018-09-06 15:12:24 -06:00
2018-10-26 16:26:32 -07:00
2018-06-15 18:10:01 -03:00
2018-03-26 15:09:38 +02:00
2018-08-22 10:52:48 -07:00
2018-12-03 17:40:18 +01:00
2018-11-13 21:55:24 +01:00
2018-09-11 14:11:54 +02:00
2018-07-12 10:04:29 -04:00
2018-07-27 09:57:23 +10:00
2018-06-28 20:32:51 +09:00
2018-10-21 10:46:33 -04:00
2018-12-07 12:59:08 -08:00
2018-03-26 08:53:43 -06:00
2018-06-22 13:43:27 +09:00
2018-04-11 10:28:38 -07:00
2018-07-12 21:35:28 +02:00
2018-11-30 13:29:04 +00:00
2018-04-12 09:41:19 -07:00
2018-06-05 08:50:16 -04:00
2018-06-07 17:34:35 -07:00
2018-04-11 10:28:32 -07:00
2018-06-07 17:34:39 -07:00
2018-03-26 13:14:43 -04:00
2018-03-26 13:14:43 -04:00
2018-10-17 13:56:58 -07:00
2018-08-22 10:52:45 -07:00
2018-01-28 22:17:24 -05:00
2018-07-10 17:22:35 +02:00
2018-06-07 17:34:36 -07:00
2018-10-21 10:46:39 -04:00
2018-09-18 17:52:15 -05:00
2018-07-19 11:34:23 +01:00
2018-10-26 16:26:35 -07:00
2018-12-18 15:11:07 -08:00
2018-07-21 10:43:12 -05:00
2018-10-08 22:53:10 +11:00
2018-08-22 10:52:46 -07:00
2018-05-31 00:13:56 +08:00
2018-12-03 17:11:02 -08:00
2018-07-20 01:11:45 +02:00
2018-08-02 17:33:06 -04:00
2018-05-11 17:28:45 -07:00
2018-09-28 14:20:59 +02:00
2018-09-25 20:17:35 -07:00
2018-03-01 08:33:05 -07:00
2018-06-29 08:48:06 -06:00
2018-06-07 17:34:35 -07:00
2018-07-07 17:25:23 +02:00
2018-07-03 09:20:44 +02:00
2018-08-16 12:14:42 -07:00
2018-01-15 12:07:46 -08:00
2018-06-20 11:35:56 +02:00
2018-09-29 22:47:49 -04:00
2018-02-06 18:32:47 -08:00
2018-10-11 09:16:44 -07:00
2018-09-25 20:33:24 +02:00
2018-10-24 00:41:07 +01:00
2018-02-06 18:32:44 -08:00
2018-09-11 14:11:51 +02:00
2018-05-14 09:51:34 -04:00