• Timofey Titovets's avatar
    xxHash: create arch dependent 32/64-bit xxhash() · 0b9df58b
    Timofey Titovets authored
    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.comSigned-off-by: default avatarTimofey Titovets <nefelim4ag@gmail.com>
    Reviewed-by: default avatarPavel Tatashin <pavel.tatashin@microsoft.com>
    Reviewed-by: default avatarMike Rapoport <rppt@linux.vnet.ibm.com>
    Reviewed-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: leesioh <solee@os.korea.ac.kr>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    0b9df58b
xxhash.h 8.27 KB