Re: CRC algorithm selection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 05/06/2015 01:36 PM, Somnath Roy wrote:
Sage,
Based on the discussion of today's performance meeting, I ran the crc32 unittest and here is the result.

root@emsserver2:/home/ceph-main/src# ./unittest_crc32c
Running main() from gmock_main.cc
[==========] Running 7 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 7 tests from Crc32c
[ RUN      ] Crc32c.Small
[       OK ] Crc32c.Small (0 ms)
[ RUN      ] Crc32c.PartialWord
[       OK ] Crc32c.PartialWord (0 ms)
[ RUN      ] Crc32c.Big
[       OK ] Crc32c.Big (16 ms)
[ RUN      ] Crc32c.Performance
populating large buffer
calculating crc
best choice = 1193.86 MB/sec
best choice 0xffffffff = 1193.56 MB/sec
sctp = 1190.6 MB/sec
intel baseline = 261.623 MB/sec
[       OK ] Crc32c.Performance (7064 ms)
[ RUN      ] Crc32c.Range
[       OK ] Crc32c.Range (0 ms)
[ RUN      ] Crc32c.RangeZero
[       OK ] Crc32c.RangeZero (0 ms)
[ RUN      ] Crc32c.RangeNull
[       OK ] Crc32c.RangeNull (0 ms)
[----------] 7 tests from Crc32c (7080 ms total)

[----------] Global test environment tear-down
[==========] 7 tests from 1 test case ran. (7080 ms total)
[  PASSED  ] 7 tests.


So, it seems 'sctp' is giving better performance and thus it is recommending this.

So, it seems it is not picking up *_intel_fast method and going back to make file I saw 'configure' was skipping yasm check since in my setup yasm was not installed.
I manually installed 'yasm' and rebuild everything. Now, here is the result..It is picking up *_intel_fast method and it is ~6 times faster !!!


root@emsserver2:/home/ceph-main/src# ./unittest_crc32c
Running main() from gmock_main.cc
[==========] Running 7 tests from 1 test case.
[----------] Global test environment set-up.
[----------] 7 tests from Crc32c
[ RUN      ] Crc32c.Small
[       OK ] Crc32c.Small (0 ms)
[ RUN      ] Crc32c.PartialWord
[       OK ] Crc32c.PartialWord (0 ms)
[ RUN      ] Crc32c.Big
[       OK ] Crc32c.Big (4 ms)
[ RUN      ] Crc32c.Performance
populating large buffer
calculating crc
best choice = 6275.01 MB/sec
best choice 0xffffffff = 6314.59 MB/sec
sctp = 1187.1 MB/sec
intel baseline = 261.652 MB/sec
[       OK ] Crc32c.Performance (5709 ms)
[ RUN      ] Crc32c.Range
[       OK ] Crc32c.Range (0 ms)
[ RUN      ] Crc32c.RangeZero
[       OK ] Crc32c.RangeZero (0 ms)
[ RUN      ] Crc32c.RangeNull
[       OK ] Crc32c.RangeNull (0 ms)
[----------] 7 tests from Crc32c (5713 ms total)

[----------] Global test environment tear-down
[==========] 7 tests from 1 test case ran. (5713 ms total)
[  PASSED  ] 7 tests.


Thanks for the pointer and I will enable my journal tests with crc enabled.

BTW, I think we need to error out configure script (or at least document ) if build server is not having  'yasm' installed.

Excellent debugging Somnath!
--
To unsubscribe from this list: send the line "unsubscribe ceph-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux