Re: [PATCH] Performance Improvement in CRC16 Calculations.

From: Martin K. Petersen
Date: Fri Aug 24 2018 - 18:13:08 EST



Ard,

> This looks like it should work, yes. It does rely on the module name
> to start with 'crct10dif' but I guess that is reasonable, and matches
> the current state on all architectures.

Yep, I verified the module names on ARM and Power. There really wasn't
much I could key off of other than the name string.

> Anyone care to boot test this? Jeffrey?

Did some quick tests on my end with both scsi_debug and FC hardware. I
verified that performance went up as I loaded crct10dif-pclmul while the
test was running:

[ 23.488059] CRC T10 DIF calculated using crypto hash crct10dif-generic
[ 156.922455] sd 0:0:0:0: [sda] Enabling DIX T10-DIF-TYPE1-CRC protection
[ 221.577731] CRC T10 DIF calculated using crypto hash crct10dif-pclmul

R 63.60 MB/s, W 61.00 MB/s, IOPS 486 | Ops 4460, Rec 0, Err 0
R 61.80 MB/s, W 62.00 MB/s, IOPS 493 | Ops 6926, Rec 0, Err 0
R 62.60 MB/s, W 60.80 MB/s, IOPS 494 | Ops 9396, Rec 0, Err 0
R 59.40 MB/s, W 58.80 MB/s, IOPS 482 | Ops 11804, Rec 0, Err 0
R 151.40 MB/s, W 155.40 MB/s, IOPS 1216 | Ops 17883, Rec 0, Err 0
R 165.00 MB/s, W 166.40 MB/s, IOPS 1327 | Ops 24520, Rec 0, Err 0
R 175.00 MB/s, W 177.40 MB/s, IOPS 1417 | Ops 31604, Rec 0, Err 0
R 185.80 MB/s, W 188.60 MB/s, IOPS 1507 | Ops 39137, Rec 0, Err 0
R 200.60 MB/s, W 203.00 MB/s, IOPS 1629 | Ops 47284, Rec 0, Err 0

Note that in this case the CRC is calculated twice per I/O (block layer
and scsi_debug).

I'll do some more testing over the weekend...

--
Martin K. Petersen Oracle Linux Engineering