)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"367e69072aaafa6e68a8bb14c42044b528e52061","unresolved":true,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Benchmarks using 4 MiB and 64 MiB buffers on x86_64 found anycrc"},{"line_number":10,"context_line":"1.3.3 about 1.65 times faster than zlib 1.2.11 for both one-shot"},{"line_number":11,"context_line":"and 64 KiB incremental CRC32 calculations."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Select anycrc for CRC32 calculations when it is available, while"},{"line_number":14,"context_line":"retaining zlib as the fallback. Add tests for both selection paths and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"27762747_3e34bc22","line":11,"updated":"2026-09-03 22:13:20.000000000","message":"Do we know how ISA-L compares? Looks like they\u0027ve got a `crc32_gzip_refl` that should do standard CRC32...\n\nhttps://review.opendev.org/c/openstack/swift/+/1003890","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"ab50c868c8b8c99a24218d610e03ca2bea3d114a","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Benchmarks using 4 MiB and 64 MiB buffers on x86_64 found anycrc"},{"line_number":10,"context_line":"1.3.3 about 1.65 times faster than zlib 1.2.11 for both one-shot"},{"line_number":11,"context_line":"and 64 KiB incremental CRC32 calculations."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Select anycrc for CRC32 calculations when it is available, while"},{"line_number":14,"context_line":"retaining zlib as the fallback. Add tests for both selection paths and"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"010b1615_6a545056","line":11,"in_reply_to":"27762747_3e34bc22","updated":"2026-09-08 23:21:47.000000000","message":"yes, tested ISA-L vs anycrc vs zlib, a brief result at here: https://review.opendev.org/c/openstack/swift/+/1003890/comment/dd2ef7e3_c7d2fd24/","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"natemartes09@gmail.com","username":"nmartes"},"change_message_id":"1e4b60ab7290a2917dfb929526d252bf99b0d17c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"77c39a70_d7669bba","updated":"2026-09-03 11:45:44.000000000","message":"LGTM! Free speed!!!! 🏎️","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"7c6d25bbbb186ffa40535886253df51a5fab95e8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"d13ac097_775f67f4","updated":"2026-09-03 04:21:04.000000000","message":"```\n$ /opt/ss/bin/python3 crc-bench-4m-64m.py\npython\u003d3.10.16\nmachine\u003dx86_64\nanycrc\u003d1.3.3\nzlib_compile\u003d1.2.11\nzlib_runtime\u003d1.2.11\ncalculate anycrc-one-shot       part_mib\u003d 4 calls\u003d   1 median_ms\u003d1.928719 min_ms\u003d1.928674 max_ms\u003d1.929385 gib_per_s\u003d2.025 result\u003d1ed1aadd\ncalculate zlib-one-shot         part_mib\u003d 4 calls\u003d   1 median_ms\u003d3.187164 min_ms\u003d3.186223 max_ms\u003d3.189218 gib_per_s\u003d1.226 result\u003d1ed1aadd\ncalculate anycrc-stream-64KiB   part_mib\u003d 4 calls\u003d  64 median_ms\u003d1.946295 min_ms\u003d1.946007 max_ms\u003d1.946756 gib_per_s\u003d2.007 result\u003d1ed1aadd\ncalculate zlib-stream-64KiB     part_mib\u003d 4 calls\u003d  64 median_ms\u003d3.197235 min_ms\u003d3.196977 max_ms\u003d3.198254 gib_per_s\u003d1.222 result\u003d1ed1aadd\ncalculate anycrc-one-shot       part_mib\u003d64 calls\u003d   1 median_ms\u003d30.892067 min_ms\u003d30.890486 max_ms\u003d30.951493 gib_per_s\u003d2.023 result\u003da01c8416\ncalculate zlib-one-shot         part_mib\u003d64 calls\u003d   1 median_ms\u003d50.987407 min_ms\u003d50.971107 max_ms\u003d51.007101 gib_per_s\u003d1.226 result\u003da01c8416\ncalculate anycrc-stream-64KiB   part_mib\u003d64 calls\u003d1024 median_ms\u003d31.198746 min_ms\u003d31.180655 max_ms\u003d31.257153 gib_per_s\u003d2.003 result\u003da01c8416\ncalculate zlib-stream-64KiB     part_mib\u003d64 calls\u003d1024 median_ms\u003d51.147963 min_ms\u003d51.141301 max_ms\u003d51.158932 gib_per_s\u003d1.222 result\u003da01c8416\n```","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"b7c7f9b8fd5e43288d9f09f9948d8f150495d406","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"76262449_0a858149","in_reply_to":"6e590c65_9705044a","updated":"2026-09-03 19:05:16.000000000","message":"results of 1GB and 4GB\n```\ncalculate anycrc-one-shot       part_mib\u003d1024 calls\u003d    1 median_ms\u003d495.718935 min_ms\u003d495.680051 max_ms\u003d495.925203 gib_per_s\u003d2.017 result\u003d5df53d1e\ncalculate zlib-one-shot         part_mib\u003d1024 calls\u003d    1 median_ms\u003d816.007751 min_ms\u003d815.244518 max_ms\u003d816.536313 gib_per_s\u003d1.225 result\u003d5df53d1e\ncalculate anycrc-stream-64KiB   part_mib\u003d1024 calls\u003d16384 median_ms\u003d497.118672 min_ms\u003d497.029252 max_ms\u003d497.239048 gib_per_s\u003d2.012 result\u003d5df53d1e\ncalculate zlib-stream-64KiB     part_mib\u003d1024 calls\u003d16384 median_ms\u003d818.030279 min_ms\u003d817.946170 max_ms\u003d818.362740 gib_per_s\u003d1.222 result\u003d5df53d1e\ncalculate anycrc-one-shot       part_mib\u003d4096 calls\u003d    1 median_ms\u003d1982.921465 min_ms\u003d1982.745396 max_ms\u003d1983.195383 gib_per_s\u003d2.017 result\u003d5d4c6d2a\ncalculate zlib-one-shot         part_mib\u003d4096 calls\u003d    1 median_ms\u003d3264.432646 min_ms\u003d3262.600794 max_ms\u003d3266.623875 gib_per_s\u003d1.225 result\u003d5d4c6d2a\ncalculate anycrc-stream-64KiB   part_mib\u003d4096 calls\u003d65536 median_ms\u003d1988.597587 min_ms\u003d1988.560064 max_ms\u003d1988.937046 gib_per_s\u003d2.011 result\u003d5d4c6d2a\ncalculate zlib-stream-64KiB     part_mib\u003d4096 calls\u003d65536 median_ms\u003d3271.557499 min_ms\u003d3270.462799 max_ms\u003d3272.223429 gib_per_s\u003d1.223 result\u003d5d4c6d2a\n```","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"536ebb6872af234ff28444104dd2dd81c1c5c056","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"6e590c65_9705044a","in_reply_to":"d13ac097_775f67f4","updated":"2026-09-03 04:26:35.000000000","message":"tested with both 4 MiB and 64 MiB objects on a prod node, each run was repeated 5 times; ``one-shot`` is one crc32 calculation on the whole object, while ``stream-64KiB`` tests incremental 64KiB CRC32 updates; anycrc is ~1.65X faster than zlib on all those cases.","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"08b8d4585770fad71f88d48d31a128e58dd0286d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"5af4d299_63d7d92e","updated":"2026-09-09 18:35:41.000000000","message":"recheck\n```\nE: Unable to locate package ksmtuned\n```\n!? Some transient mirroring error, maybe?","commit_id":"9f1c278e6592000f3dc4a19db3e16370e53cd66a"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ceebc9cadc18d62c812b4feb0d2959b9f5e5c64e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"3436b8e3_5db4cd7f","updated":"2026-09-10 16:41:47.000000000","message":"Broke off from the checksum-persistence chain, \u0027cause I think this is ready to merge.","commit_id":"396cf55464a006beb4b6c401f3f2e41f2323290c"}],"swift/common/utils/checksum.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"367e69072aaafa6e68a8bb14c42044b528e52061","unresolved":true,"context_lines":[{"line_number":153,"context_line":"    # AMD 3900XT     | ~20GB/s   | ~5GB/s"},{"line_number":154,"context_line":"    #"},{"line_number":155,"context_line":"    # i.e., ISA-L is consistently 3-5x faster than kernel sockets"},{"line_number":156,"context_line":"    selected \u003d crc32c_isal or crc32c_kern or crc32c_anycrc or None"},{"line_number":157,"context_line":"    if not selected:"},{"line_number":158,"context_line":"        raise NotImplementedError("},{"line_number":159,"context_line":"            \u0027no crc32c implementation, install isal or anycrc\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"832f7944_21fa9355","line":156,"range":{"start_line":156,"start_character":30,"end_line":156,"end_character":58},"updated":"2026-09-03 22:13:20.000000000","message":"I wonder if these two should swap, too, come to think of it...","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ceebc9cadc18d62c812b4feb0d2959b9f5e5c64e","unresolved":false,"context_lines":[{"line_number":153,"context_line":"    # AMD 3900XT     | ~20GB/s   | ~5GB/s"},{"line_number":154,"context_line":"    #"},{"line_number":155,"context_line":"    # i.e., ISA-L is consistently 3-5x faster than kernel sockets"},{"line_number":156,"context_line":"    selected \u003d crc32c_isal or crc32c_kern or crc32c_anycrc or None"},{"line_number":157,"context_line":"    if not selected:"},{"line_number":158,"context_line":"        raise NotImplementedError("},{"line_number":159,"context_line":"            \u0027no crc32c implementation, install isal or anycrc\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"100ee467_e7410b1b","line":156,"range":{"start_line":156,"start_character":30,"end_line":156,"end_character":58},"in_reply_to":"832f7944_21fa9355","updated":"2026-09-10 16:41:47.000000000","message":"We can keep this scoped to CRC32 and benchmark isal vs anycrc vs kernel later. (Or maybe never -- why *wouldn\u0027t* you want isal??)","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"a1fb80a0b52e515e2e1450e7d998a376e072f5bc","unresolved":true,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"def log_selected_implementation(logger):"},{"line_number":313,"context_line":"    try:"},{"line_number":314,"context_line":"        impl \u003d _select_crc32c_impl()"},{"line_number":315,"context_line":"    except NotImplementedError:"},{"line_number":316,"context_line":"        logger.warning("}],"source_content_type":"text/x-python","patch_set":1,"id":"967b9d27_4500eb10","line":313,"updated":"2026-09-04 00:34:35.000000000","message":"ought to add the selection log lines for crc32 as well\n\n```\n    impl \u003d _select_crc32_impl()\n    impl_name \u003d \u0027zlib.crc32\u0027 if impl is zlib.crc32 else impl.__name__\n    logger.info(\u0027Using %s implementation for CRC32.\u0027 % impl_name)\n```","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"ab50c868c8b8c99a24218d610e03ca2bea3d114a","unresolved":false,"context_lines":[{"line_number":310,"context_line":""},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"def log_selected_implementation(logger):"},{"line_number":313,"context_line":"    try:"},{"line_number":314,"context_line":"        impl \u003d _select_crc32c_impl()"},{"line_number":315,"context_line":"    except NotImplementedError:"},{"line_number":316,"context_line":"        logger.warning("}],"source_content_type":"text/x-python","patch_set":1,"id":"7dbde017_1bca1963","line":313,"in_reply_to":"967b9d27_4500eb10","updated":"2026-09-08 23:21:47.000000000","message":"Done","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"}],"test/unit/common/utils/test_checksum.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"367e69072aaafa6e68a8bb14c42044b528e52061","unresolved":true,"context_lines":[{"line_number":89,"context_line":"class TestCRC32(unittest.TestCase):"},{"line_number":90,"context_line":"    def check_crc_func(self, impl):"},{"line_number":91,"context_line":"        self.assertEqual(zlib.crc32(b\u0027\u0027), impl(b\u0027\u0027))"},{"line_number":92,"context_line":"        self.assertEqual(zlib.crc32(b\u0027123456789\u0027), impl(b\u0027123456789\u0027))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        partial \u003d impl(b\u002712345\u0027)"},{"line_number":95,"context_line":"        self.assertEqual(zlib.crc32(b\u002712345\u0027), partial)"}],"source_content_type":"text/x-python","patch_set":1,"id":"93d8ab8a_481ce941","line":92,"updated":"2026-09-03 22:13:20.000000000","message":"A little tautological for `test_zlib`, but I definitely like that we always have a reference function available. We could make this even stronger by adding something like\n```\ndata \u003d os.urandom(1024)\nself.assertEqual(zlib.crc32(data), impl(data))\n```","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"ab50c868c8b8c99a24218d610e03ca2bea3d114a","unresolved":false,"context_lines":[{"line_number":89,"context_line":"class TestCRC32(unittest.TestCase):"},{"line_number":90,"context_line":"    def check_crc_func(self, impl):"},{"line_number":91,"context_line":"        self.assertEqual(zlib.crc32(b\u0027\u0027), impl(b\u0027\u0027))"},{"line_number":92,"context_line":"        self.assertEqual(zlib.crc32(b\u0027123456789\u0027), impl(b\u0027123456789\u0027))"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"        partial \u003d impl(b\u002712345\u0027)"},{"line_number":95,"context_line":"        self.assertEqual(zlib.crc32(b\u002712345\u0027), partial)"}],"source_content_type":"text/x-python","patch_set":1,"id":"da8c4c88_43b01ccc","line":92,"in_reply_to":"93d8ab8a_481ce941","updated":"2026-09-08 23:21:47.000000000","message":"it\u0027s added into https://review.opendev.org/c/openstack/swift/+/1003890/3/test/unit/common/utils/test_checksum.py#94","commit_id":"568d312317d7ae8e679f9473b91cb466ec0c9057"}]}
