[Bug 216467] [request] Hardware (SSE 4.2) CRC32C support in calculate_crc32c()

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Wed Jan 25 21:26:03 UTC 2017


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 at FreeBSD.org
          Reporter: ben.rubson at 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.


More information about the freebsd-bugs mailing list