Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 25 Jan 2017 21:26:03 +0000
From:      bugzilla-noreply@freebsd.org
To:        freebsd-bugs@FreeBSD.org
Subject:   [Bug 216467] [request] Hardware (SSE 4.2) CRC32C support in calculate_crc32c()
Message-ID:  <bug-216467-8@https.bugs.freebsd.org/bugzilla/>

next in thread | raw e-mail | index | archive | help

https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=216467

            Bug ID: 216467
           Summary: [request] Hardware (SSE 4.2) CRC32C support in
                    calculate_crc32c()
           Product: Base System
           Version: CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: freebsd-bugs@FreeBSD.org
          Reporter: ben.rubson@gmail.com

Hello,

Could it be possible to implement an optimized version of calculate_crc32c()
with hardware CRC32C support please ?
SSE 4.2 has this feature, which is really interesting.

Here are some benchmarks with this :
https://github.com/laanwj/crcbench

On an Intel E5-2620v3 :

# ./crcbench 
CRC32C benchmarks
[sw] 65543000 bytes in 69730us monotonic 69726us CPU (940.0MB/s)
[hw-sse42] 65543000 bytes in 12619us monotonic 12618us CPU (5194.4MB/s)

On more data (10GB) :

# ./crcbench 
CRC32C benchmarks
[sw] 10485767000 bytes in 11179263us monotonic 11178667us CPU (938.0MB/s)
[hw-sse42] 10485767000 bytes in 2028412us monotonic 2028305us CPU (5169.7MB/s)

Sounds really interesting and promising.

Main goal behind this request is to improve iSCSI throughput when HeaderDigest
and DataDigest are enabled.
Enabling these options made my iSCSI throughput drop from 300MB/s to 200MB/s.
Hardware CRC32C should then help minimising this difference.

Thank you very much !

Ben

-- 
You are receiving this mail because:
You are the assignee for the bug.


Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-216467-8>