David Sterba
fa33b70513
btrfs: add xxhash to fast checksum implementations
...
[ Upstream commit efcfcbc6a3 ]
The implementation of XXHASH is now CPU only but still fast enough to be
considered for the synchronous checksumming, like non-generic crc32c.
A userspace benchmark comparing it to various implementations (patched
hash-speedtest from btrfs-progs):
Block size: 4096
Iterations: 1000000
Implementation: builtin
Units: CPU cycles
NULL-NOP: cycles: 73384294, cycles/i 73
NULL-MEMCPY: cycles: 228033868, cycles/i 228, 61664.320 MiB/s
CRC32C-ref: cycles: 24758559416, cycles/i 24758, 567.950 MiB/s
CRC32C-NI: cycles: 1194350470, cycles/i 1194, 11773.433 MiB/s
CRC32C-ADLERSW: cycles: 6150186216, cycles/i 6150, 2286.372 MiB/s
CRC32C-ADLERHW: cycles: 626979180, cycles/i 626, 22427.453 MiB/s
CRC32C-PCL: cycles: 466746732, cycles/i 466, 30126.699 MiB/s
XXHASH: cycles: 860656400, cycles/i 860, 16338.188 MiB/s
Comparing purely software implementation (ref), current outdated
accelerated using crc32q instruction (NI), optimized implementations by
M. Adler (https://stackoverflow.com/questions/17645167/implementing-sse-4-2s-crc32c-in-software/17646775#17646775 )
and the best one that was taken from kernel using the PCLMULQDQ
instruction (PCL).
Reviewed-by: Christoph Hellwig <hch@lst.de >
Signed-off-by: David Sterba <dsterba@suse.com >
Signed-off-by: Sasha Levin <sashal@kernel.org >
2024-03-01 13:21:55 +01:00
..
2023-11-28 16:56:19 +00:00
2021-06-29 10:53:48 -07:00
2023-02-01 08:27:06 +01:00
2024-02-23 08:54:39 +01:00
2023-09-23 11:09:54 +02:00
2021-08-19 09:02:55 +09:00
2021-06-29 10:53:48 -07:00
2024-03-01 13:21:55 +01:00
2022-07-02 16:41:14 +02:00
2024-02-23 08:55:09 +01:00
2024-03-01 13:21:53 +01:00
2023-03-10 09:39:50 +01:00
2022-12-31 13:14:15 +01:00
2021-01-05 23:02:47 -05:00
2022-11-10 18:15:37 +01:00
2024-01-25 14:52:27 -08:00
2022-02-01 17:27:01 +01:00
2023-09-19 12:22:52 +02:00
2024-02-23 08:54:40 +01:00
2024-01-25 14:52:33 -08:00
2024-03-01 13:21:48 +01:00
2023-11-28 16:56:19 +00:00
2022-06-09 10:23:32 +02:00
2023-09-23 11:09:57 +02:00
2024-03-01 13:21:46 +01:00
2024-03-01 13:21:53 +01:00
2022-06-09 10:22:42 +02:00
2021-10-04 22:13:12 +01:00
2024-01-05 15:13:36 +01:00
2024-01-25 14:52:35 -08:00
2023-03-10 09:39:57 +01:00
2023-05-24 17:36:43 +01:00
2021-08-26 22:28:02 +02:00
2021-07-27 11:00:36 +02:00
2024-02-23 08:55:10 +01:00
2023-12-08 08:48:05 +01:00
2021-11-12 15:05:50 +01:00
2024-01-25 14:52:29 -08:00
2023-07-23 13:47:34 +02:00
2024-02-23 08:54:39 +01:00
2024-02-23 08:54:51 +01:00
2024-03-01 13:21:48 +01:00
2023-09-19 12:22:43 +02:00
2022-04-13 20:59:10 +02:00
2021-12-29 12:28:59 +01:00
2024-01-25 14:52:36 -08:00
2021-10-04 22:02:17 +01:00
2023-11-28 16:56:34 +00:00
2024-02-23 08:55:14 +01:00
2023-09-19 12:22:27 +02:00
2023-07-23 13:47:36 +02:00
2022-11-26 09:24:52 +01:00
2024-03-01 13:21:47 +01:00
2023-09-19 12:22:34 +02:00
2021-06-29 10:53:48 -07:00
2021-03-12 22:15:22 -05:00
2022-12-31 13:14:44 +01:00
2023-11-28 16:56:29 +00:00
2023-12-03 07:31:24 +01:00
2024-02-23 08:54:39 +01:00
2021-09-21 08:36:48 -07:00
2023-11-28 16:56:31 +00:00
2023-07-23 13:47:33 +02:00
2023-09-19 12:22:30 +02:00
2020-10-24 12:26:05 -07:00
2021-12-14 10:57:12 +01:00
2023-02-22 12:57:07 +01:00
2021-08-06 13:05:28 +02:00
2023-08-11 15:13:58 +02:00
2023-09-23 11:10:02 +02:00
2024-02-23 08:54:26 +01:00
2023-09-19 12:22:53 +02:00
2021-08-19 09:02:55 +09:00
2021-05-02 00:43:35 +09:00
2021-09-27 11:26:21 -07:00
2023-09-19 12:22:52 +02:00
2024-02-23 08:54:32 +01:00
2024-03-01 13:21:43 +01:00
2023-02-22 12:57:05 +01:00
2021-01-15 12:17:25 -05:00
2023-09-23 11:10:01 +02:00
2021-08-18 22:08:24 +02:00
2021-09-05 10:15:05 -07:00
2023-10-06 13:18:24 +02:00
2022-11-03 23:59:12 +09:00
2022-06-09 10:22:26 +02:00
2022-12-31 13:14:39 +01:00
2022-11-26 09:24:51 +01:00
2022-12-31 13:14:30 +01:00
2021-01-06 08:42:51 -05:00
2022-04-08 14:24:18 +02:00
2021-09-02 10:07:29 -07:00
2022-09-28 11:11:56 +02:00
2024-02-23 08:54:46 +01:00
2021-04-09 14:54:23 -07:00
2021-09-03 09:58:10 -07:00
2023-09-19 12:22:30 +02:00
2023-06-21 15:59:14 +02:00
2024-02-23 08:54:31 +01:00
2021-09-03 10:08:28 -07:00
2021-04-07 13:56:43 -04:00
2022-10-26 12:34:58 +02:00
2023-08-11 15:13:58 +02:00
2021-08-23 01:25:40 -04:00
2023-07-23 13:47:34 +02:00
2021-09-07 16:07:47 -04:00
2023-11-20 11:08:13 +01:00
2021-01-24 14:27:19 +01:00
2023-12-08 08:48:04 +01:00
2023-08-30 16:18:19 +02:00
2024-02-23 08:54:25 +01:00
2024-01-05 15:13:36 +01:00
2021-07-25 22:33:03 -07:00
2021-10-18 20:22:03 -10:00
2022-12-31 13:14:03 +01:00
2023-09-23 11:09:55 +02:00
2022-12-14 11:37:31 +01:00
2023-01-12 11:59:20 +01:00
2021-01-24 14:29:34 +01:00
2021-03-11 07:47:48 -07:00
2024-02-23 08:54:26 +01:00
2024-01-25 14:52:35 -08:00
2023-08-11 15:13:57 +02:00
2024-02-23 08:54:33 +01:00
2023-01-12 11:58:47 +01:00
2021-03-08 15:18:43 +01:00
2022-07-02 16:41:17 +02:00
2022-07-02 16:41:14 +02:00
2022-12-19 12:36:39 +01:00
2021-04-17 11:39:49 -07:00
2022-07-21 21:24:14 +02:00
2022-01-29 10:58:25 +01:00
2022-07-12 16:35:08 +02:00
2021-12-14 10:57:15 +01:00
2022-10-26 12:34:17 +02:00
2022-04-27 14:38:57 +02:00
2023-05-24 17:36:54 +01:00
2023-08-11 15:13:58 +02:00
2022-04-27 14:38:50 +02:00
2021-08-10 17:57:22 +02:00
2022-10-26 12:34:36 +02:00
2021-01-24 14:27:18 +01:00
2022-12-31 13:14:01 +01:00