)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c5bdd4fc2e43d1e08f887286ef8aad5bf5909c44","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"b3978a84_e89f1682","updated":"2025-04-03 11:49:46.000000000","message":"-1 because we need to establish if anycrc is faster than the kernel impl or vice-versa","commit_id":"31a49663eee7352a32904268bfd9ba3ba5bc0866"}],"swift/common/utils/checksum.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"0178b7211e1fe0695c222164b902333169a345e4","unresolved":true,"context_lines":[{"line_number":94,"context_line":"        raise"},{"line_number":95,"context_line":"    crc32c_kern \u003d None"},{"line_number":96,"context_line":"else:"},{"line_number":97,"context_line":"    def crc32c_kern(data, value\u003d0):"},{"line_number":98,"context_line":"        crc32c_sock \u003d socket.socket(AF_ALG, socket.SOCK_SEQPACKET)"},{"line_number":99,"context_line":"        try:"},{"line_number":100,"context_line":"            crc32c_sock.bind((\"hash\", \"crc32c\"))"}],"source_content_type":"text/x-python","patch_set":1,"id":"296ddf1d_98870f75","line":97,"updated":"2025-03-27 02:21:00.000000000","message":"I wonder about the continuing relevance of having a kernel implementation, especially once we drop py36 and have a path toward making `anycrc` a hard dep.","commit_id":"b56e67222639d45451d73c475d55e9c7f14aff99"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"0178b7211e1fe0695c222164b902333169a345e4","unresolved":true,"context_lines":[{"line_number":116,"context_line":"    # Use the best implementation available."},{"line_number":117,"context_line":"    # On various hardware we\u0027ve seen"},{"line_number":118,"context_line":"    #"},{"line_number":119,"context_line":"    #  CPU           |   ISA-L   |  Kernel  |  Naive"},{"line_number":120,"context_line":"    # ---------------+-----------+----------+---------"},{"line_number":121,"context_line":"    # Intel N100     |  ~9GB/s   | ~3.5GB/s | ~1.1MB/s"},{"line_number":122,"context_line":"    # ARM Cortex-A55 |  ~2.5GB/s | ~0.4GB/s | ~0.2MB/s"}],"source_content_type":"text/x-python","patch_set":1,"id":"b9476677_69e20ca5","line":119,"updated":"2025-03-27 02:21:00.000000000","message":"Should add an `anycrc` column.","commit_id":"b56e67222639d45451d73c475d55e9c7f14aff99"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"c5bdd4fc2e43d1e08f887286ef8aad5bf5909c44","unresolved":true,"context_lines":[{"line_number":116,"context_line":"    # Use the best implementation available."},{"line_number":117,"context_line":"    # On various hardware we\u0027ve seen"},{"line_number":118,"context_line":"    #"},{"line_number":119,"context_line":"    #  CPU           |   ISA-L   |  Kernel  |  Naive"},{"line_number":120,"context_line":"    # ---------------+-----------+----------+---------"},{"line_number":121,"context_line":"    # Intel N100     |  ~9GB/s   | ~3.5GB/s | ~1.1MB/s"},{"line_number":122,"context_line":"    # ARM Cortex-A55 |  ~2.5GB/s | ~0.4GB/s | ~0.2MB/s"}],"source_content_type":"text/x-python","patch_set":1,"id":"d7353504_7070f61f","line":119,"in_reply_to":"b9476677_69e20ca5","updated":"2025-04-03 11:49:46.000000000","message":"yes, seems like we want to know whether to prefer anycrc over the kernel impl","commit_id":"b56e67222639d45451d73c475d55e9c7f14aff99"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"9c4822fe75db59556c6a30be66227dec668dca32","unresolved":true,"context_lines":[{"line_number":116,"context_line":"    # Use the best implementation available."},{"line_number":117,"context_line":"    # On various hardware we\u0027ve seen"},{"line_number":118,"context_line":"    #"},{"line_number":119,"context_line":"    #  CPU           |   ISA-L   |  Kernel  |  Naive"},{"line_number":120,"context_line":"    # ---------------+-----------+----------+---------"},{"line_number":121,"context_line":"    # Intel N100     |  ~9GB/s   | ~3.5GB/s | ~1.1MB/s"},{"line_number":122,"context_line":"    # ARM Cortex-A55 |  ~2.5GB/s | ~0.4GB/s | ~0.2MB/s"}],"source_content_type":"text/x-python","patch_set":1,"id":"a2ebf62a_e5ab9b85","line":119,"in_reply_to":"d7353504_7070f61f","updated":"2025-04-10 05:06:53.000000000","message":"Kernel seems better:\n```\nisal: 21183.4MB/s\nref:  1.4MB/s\nmemo: 8.6MB/s\nkern: 4262.5MB/s\nanycrc: 2008.8MB/s\nawscrt: 21959.7MB/s\n```\nMight even want to allow awscrt as another provider...\n\nThe real trick though is that we want something measured in GB/s, not MB/s -- as long as we hit that, something else will be the bottleneck!\n\nIDK how feasible it is for me to fill this out for the *whole* table again. Above was for 11850H (though I can\u0027t explain the performance improvements for ISA-L \u0026 kernel); I\u0027ll see if I can at least get the N100 and 3900XT lines filled in, too...","commit_id":"b56e67222639d45451d73c475d55e9c7f14aff99"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"9415789dd01125c73a9f818af82691ad4a21a1fc","unresolved":true,"context_lines":[{"line_number":163,"context_line":""},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"def _select_crc64nvme_impl():"},{"line_number":166,"context_line":"    return crc64nvme_isal or crc64nvme_anycrc or crc64nvme_ref"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"class CRCHasher(object):"}],"source_content_type":"text/x-python","patch_set":3,"id":"d85662e0_d78f42fa","line":166,"range":{"start_line":166,"start_character":49,"end_line":166,"end_character":62},"updated":"2025-04-03 13:06:47.000000000","message":"hmmm, we\u0027re still left with the possibility of a cluster running with the ref impl, when an op might prefer to just not support crc64nvme. But given the soft-dependencies, we still need the ref impl, for testing at least.\n\ncrazy thought: could tests set a flag in this module that allows the ref impl to be used, whereas in prod we\u0027d raise a NotImplementedError if neither isal no anycrc are available?","commit_id":"555855785efbce40fe31aa22fff3bccd70020ed6"}]}
