Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s80Kq-008tdN-4F for pgsql-hackers@arkaria.postgresql.org; Fri, 17 May 2024 16:21:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1s80Kq-00FIKP-0x for pgsql-hackers@arkaria.postgresql.org; Fri, 17 May 2024 16:21:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s80Kp-00FIKG-2g for pgsql-hackers@lists.postgresql.org; Fri, 17 May 2024 16:21:31 +0000 Received: from mgamail.intel.com ([192.198.163.17]) by makus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1s80Kj-000gfz-11 for pgsql-hackers@lists.postgresql.org; Fri, 17 May 2024 16:21:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1715962885; x=1747498885; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ZMfNd2DeWfOEUFrqiCFXjqUYgLsupNp/Orqhk+DpB5Q=; b=JFxoTDEDxZxyubpYo4suAlR5RsOxdX2wB6tF+A022dBzYa/Ow+uOzTsq mItMZdTpGVhlaREZPNdp6JzyZNFsOzjEGpnDfT2OU68XHYIP29ssfe0TF MycvLF3ah6lh1F8jGzEC+gE4EDH1nmgKN/oYW1uLM4y+K74EF9a2pU/Ol bTkcyHyBqzBW0TVegf8zJU/LQNr28EEalV/pf0NLiW1/HOKQ3o2hijdyG r9vMLYrAm0QdaOLa7pp6Nl3lifptFdE5rMNzeRNr6ho53EbMGYQQR5Ys6 MYvPQiUmZaEIVWTqqW46y4B5uZPmCqSSpwgv/lUJLWTY9At+8mwZd6B8C g==; X-CSE-ConnectionGUID: mOgwktODRnKK+8rWx63foA== X-CSE-MsgGUID: 4uzsyztRT1uOtEQQgXUHjw== X-IronPort-AV: E=McAfee;i="6600,9927,11075"; a="12019180" X-IronPort-AV: E=Sophos;i="6.08,168,1712646000"; d="scan'208";a="12019180" Received: from fmviesa010.fm.intel.com ([10.60.135.150]) by fmvoesa111.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 May 2024 09:21:23 -0700 X-CSE-ConnectionGUID: vz1PMBGoSMu6PtOPJNb2vg== X-CSE-MsgGUID: SshmuZHpS1S7/9y5t/1UBw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.08,168,1712646000"; d="scan'208";a="31928323" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmviesa010.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 17 May 2024 09:21:22 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 17 May 2024 09:21:22 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39 via Frontend Transport; Fri, 17 May 2024 09:21:22 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.168) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Fri, 17 May 2024 09:21:22 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lpix6bJr87UWBlADnA7vpMuUcmlHUpLet+zY53t/5AsO/e9uGoMKyxYPsvxTfc9hcD6WAOxAiZGxiX38xx7UpNKa7roO0dArKlF/pS0dJBOUNm2uq0hWOotqqznO698lJ6xb01AfVwc8UIfvyGD9nIugmSBmsk5Z1f5lDwXeT4MjFcg1+QD5xItntQ0yL19Jmb5hgld46ggyqmdBnH4J/qD+nZUxa8PJ7ogZxbMqe9SHCNgmTWcUAEcAFmSAVMZ+GZ7CoHEoMpVAfUVCcQt15X++cW5WcUeF4eqtj0aOTODwMcLzksGbnLPNIofnHTGE+aJChEGnGU8E7RkGANtrvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=OsmlNHM7Pod1U9AoosYl/5HDTLCme/AXfmh0nl62yC0=; b=beBuCP06s4DqB4WkFGmkfDgDX3nUBGq3E6y6tIImFefP9GjdAzzcCLX9ldJDUKGiSV9E6N2ktcTX7R7oUSC9v1nhdpXArCJzQWlWTRlxKjV2c1JcTHMdHpI5egmR+ykdKPHn2j1JuDqewZyioInIF5T4Cgp+e344ndhcgbeftFF2E0q129jEOfLeBFiGAtl2rEiHXdpMhQphfw0yiKX97iW5BW5pDwHLZtWygJICk0Sngi9Fneeh4BpAS4El5mQKjyH72G6isFdOkMMfi8JZUr5S6xHYkl/gj0bYaVgX+S1sSoT/Fm6XYchWy+bUYSiyb22aZKvWj+F9+94YGEiQ3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN0SPR01MB0008.namprd11.prod.outlook.com (2603:10b6:408:151::12) by PH7PR11MB6883.namprd11.prod.outlook.com (2603:10b6:510:202::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.55; Fri, 17 May 2024 16:21:19 +0000 Received: from BN0SPR01MB0008.namprd11.prod.outlook.com ([fe80::700:d273:bfe8:90c0]) by BN0SPR01MB0008.namprd11.prod.outlook.com ([fe80::700:d273:bfe8:90c0%6]) with mapi id 15.20.7587.026; Fri, 17 May 2024 16:21:19 +0000 From: "Amonson, Paul D" To: "pgsql-hackers@lists.postgresql.org" CC: Nathan Bossart , "Shankaran, Akash" Subject: RE: Proposal for Updating CRC32C with AVX-512 Algorithm. Thread-Topic: Proposal for Updating CRC32C with AVX-512 Algorithm. Thread-Index: Adqb27jiuXmC5sH1QzmzETmUIqng2AMmmwIw Date: Fri, 17 May 2024 16:21:19 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN0SPR01MB0008:EE_|PH7PR11MB6883:EE_ x-ms-office365-filtering-correlation-id: 85ad29b3-7ff8-42c2-53fa-08dc768d6293 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230031|376005|1800799015|366007|3613699003|38070700009; x-microsoft-antispam-message-info: =?us-ascii?Q?FaCJmiGVYUjZFo5QDYIWoyq13Sg6xcUMl29LonYDkB8mIQRVJNdEDMLcm1PY?= =?us-ascii?Q?Rl8INQOh69x/hs2NkEEkvj0bSbD2fI8C2UewcZwVXo8IucyOKMHfXPMA2Y7o?= =?us-ascii?Q?0sm+uhSMYMVWXZt8HSs//w1zUK+TWxjsIEawO38GBVvMepZHpEk4k7DhHZAE?= =?us-ascii?Q?WUYvrI8sXu40Aq+OF/2ZTOLotl2dzoBpYMloz1FlLj9/xqvUGHv408O0kiQg?= =?us-ascii?Q?EWztuB4/VP6jM8wziEFYk6i3or5/+mFAXntPDgJoIOid8yGFEQMuSucLCRUx?= =?us-ascii?Q?XCjECSPqca81OSfnKGF4T1yW7jeSw8z611alF65w/d0nuK0rnWJBtaMFTAAe?= =?us-ascii?Q?ILpC/G5KDf+9hDa44PoD7nktalZ4BNFOmh1fqCNtmGw4hON/S66yJKKShsOi?= =?us-ascii?Q?/JZkia0ZRxK0WIt1PAEajSLYIQV2y7AbHa0DHWMOGdyfS1UZSuAmSpLYtF7s?= =?us-ascii?Q?Ve7C8rdRAOb0LN+Rgu+xXnM06pfjr9xZdEqYREtaOBUbQ5UWE5Qty9M4Ht51?= =?us-ascii?Q?tOHqpyk7KHqqjFM1O7W8RtARxTiJXR/7qiZexVUDfAXioAPTaqW14bOSLg/2?= =?us-ascii?Q?TClMdcfv+8YuJ//U+YcysCoe02wdu1qSm2VfQ0jh2TYdEeP82JdMIqRwLKau?= =?us-ascii?Q?iuu4bJHI2+noc+rOTvN3nWzuSd18CIcOmEu+KJOo1UcgOiiIrSQYdPboQ5pD?= =?us-ascii?Q?6w7/3eLW6bQP5l+54gpdRUn+p+tgwOmvf2x6PO5krI/YnyE561T8ZdvReqdt?= =?us-ascii?Q?UWEIzMNztoSsq3ufyZVHA5IJ8VfN0Whb5iOiNvBiL3P1eF5bmjrJ9DVR374V?= =?us-ascii?Q?hsMq7iwPX732XBTeWkP+Pcbts9ZGBH+Nk0fEAR/wKIqBbbyFCh8qN59noXll?= =?us-ascii?Q?lD8THSNOBp7D7iPatW/5ev/Q+FFFJBjEGo4NNlouLZjWrunDh2u8QiPJJq/D?= =?us-ascii?Q?zFcIxtH0kVuEndA8mtesZRf3Ji4503kmpnW72M5xn/CiVdGhC5JKoJwmMrlK?= =?us-ascii?Q?asYdz2gJa0Zg4UIZ/gvSqiOXDpdPY93vX70gs2cS7dNuyxqBM2ZgARrDLMiO?= =?us-ascii?Q?C0Fl+SRDgrGK7Y4jp2QitzMEJjwI1d/5/2Qtrtsc7L5pYthbbDO1I5467Md2?= =?us-ascii?Q?Lkuvv6rUr4wloYi3XSlwme75WwBsOHOGHEaDk4FCoM+Qkq/a1LUuiLZDZYaS?= =?us-ascii?Q?WuVtKs0yLYfQYuXZyjAAGHBw9w70+G/MJa3Wq9+IMQRrj2OJJjw2Va37DQi0?= =?us-ascii?Q?zUlNxW1xQ93ODS7ZGs1jtXQaJdCL294GtI9n+1sFHVWXE6Fq0DSFlTQoHE+v?= =?us-ascii?Q?+8bUN/5rs6uTYo3irm/fRzcW?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN0SPR01MB0008.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376005)(1800799015)(366007)(3613699003)(38070700009);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?/d2LRm+5LKl8xdrKX4PYKTy2FFzY0YeRk4sPjNdGvbDpVO7hDW1BmmpLlAkE?= =?us-ascii?Q?B+S1wuwPR72idN64wLntaEDXEbLVEoPRRMViYuThslB09oiYpg2eNzIMslYE?= =?us-ascii?Q?KMtbbRfxSwnLGcc+4pP6wsE1rcFH84D3FEqGDQWtw5zwq0ey45Z0mDaRV8CW?= =?us-ascii?Q?s6ArDbzkwXXdSwSgI9kTRSh7JRedkSdOjrPvUKVcmqfQPKr4NdD0f8W02TOb?= =?us-ascii?Q?QcOAxY2HQiGCWSb7gU7zN11uoQv787ayRMDKJ9Ycrt62hKIzNzLzZoRlFxGd?= =?us-ascii?Q?K2UIiJVBrClWw1/BKEDznx7SjGk1dq0az7LTKRugg1MUgoFdOAtm5ZOHHkqj?= =?us-ascii?Q?DGCfrc8WrF4Ltu7nCsYkFiRSA/EYtv5okNBICqb/l9dnceIwMTygtcNY9K03?= =?us-ascii?Q?CIwe01TyhRTay6RCB2zivauZBZomSl2BwD6idUFZtMkMAYgnZaYF61LUQyTn?= =?us-ascii?Q?xncWVLtUipTpIn9UzXvvJxKufX7mviLMV0lGPb92F1faH5bXd+U6oHych75N?= =?us-ascii?Q?EOjnZQMz+jgsC2p8c8HFbO1iOfXk+hdfLRS+XNAho+ufjvUwKxYItQ3P91bP?= =?us-ascii?Q?J2jDIs/FJ1IZv9oMpbGUpCl9YtKx2VtQdJgwMh5MldpCAfpictnqZQVQ84cs?= =?us-ascii?Q?yRwuSNHunh6j77EBVtYkQkBGT2p7U0H2TM6FxAcDJ+/Jq0DL9fG4tWjiBGt8?= =?us-ascii?Q?RYw9ye8zLWORogjbQRtWiphBzBw0WDYzXlyjhj7rPSG/0ZgYAqTzPBvnl49K?= =?us-ascii?Q?OSMVC2r+bORfvTklS772RNwlO1Y74fCE0Ca0FlruB9LZAyLY3DTnCtGHq/78?= =?us-ascii?Q?EfSDfG3BzqymnZJwJ/gq3i6hs/D9QK8v7/FbwTHR0QBtCUg0zrZJEbfmjdTN?= =?us-ascii?Q?iR0TM9O8dgMpaocgUe6dQfDRI7QxfFdpwEzJjVCLQIGugVWWjrv/2yH3qvGp?= =?us-ascii?Q?L1H6N1TziVVrQLo1J1XNUSf0wY4GVWwc0S1jpxO/fkNpANArQQwQGeH3YbU4?= =?us-ascii?Q?MSJB5o/JF/RLnzy8EbdSUIr97MIFYee+l/jJDZHxxH7pXFM9w/vsq7UGq+WZ?= =?us-ascii?Q?7Mkd4Wlmuyndh+fnnNx6KRZaIlbJIL7Twzt4f6cVurtsCd3omp8ve/TyfVm0?= =?us-ascii?Q?TsQVfaKXP9qs0A8Ry2gB8pXQrO+uf3yFk8Yn9ZdT917g4HYPcyJe1vf0nDFR?= =?us-ascii?Q?RIkAZ54PH+kLcq+AwBr1fwUTlZ+gnm6RDt3LJ2joUE+RMjQ1zKVFjXI53Xas?= =?us-ascii?Q?9aAlfnYm+o0c3//MaDRNMaJ+0Es7QoHJv6AtVKRCvHl7CTQt+VkRinsszJXN?= =?us-ascii?Q?iae289gs3J3vYGy/eH2oaIyYu611ov25m3n9ogH1xqqgVn5MN6VvV+89fJ+W?= =?us-ascii?Q?BGX7ITi0fnEVXtUMiMCuviVGZGUDqRjYC3QCIOcrh95fFuPcsTWz+WwhvD2R?= =?us-ascii?Q?zexFJP9THV92wmzL5XM+HBB/4QmZ51pgQ4UwBe+sFlarS5YUx5XbMtI3qoNC?= =?us-ascii?Q?6PT/3fXHKXsGiwZuzH+PzybCmyxPzzjgGEUQdGeZnjodkTo14VstWuTyyZZU?= =?us-ascii?Q?YzQpolkGCDxcDUvlPqIR4HmXiF8VkZatBCUYKdph?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN0SPR01MB0008.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85ad29b3-7ff8-42c2-53fa-08dc768d6293 X-MS-Exchange-CrossTenant-originalarrivaltime: 17 May 2024 16:21:19.6002 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 7w9vG6Hx8FEh7FQxiNShegsGuBeITe54v92/8TO5Q/KZcS0DtCIeijRokEyS+e/w/O3c4fzCXpobskmur6R/YiypLpucM+llLdWwpVsn4OE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB6883 X-OriginatorOrg: intel.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Hi, forgive the top-post but I have not seen any response to this post? Thanks, Paul > -----Original Message----- > From: Amonson, Paul D > Sent: Wednesday, May 1, 2024 8:56 AM > To: pgsql-hackers@lists.postgresql.org > Cc: Nathan Bossart ; Shankaran, Akash > > Subject: Proposal for Updating CRC32C with AVX-512 Algorithm. >=20 > Hi, >=20 > Comparing the current SSE4.2 implementation of the CRC32C algorithm in > Postgres, to an optimized AVX-512 algorithm [0] we observed significant > gains. The result was a ~6.6X average multiplier of increased performance > measured on 3 different Intel products. Details below. The AVX-512 algori= thm > in C is a port of the ISA-L library [1] assembler code. >=20 > Workload call size distribution details (write heavy): > * Average was approximately around 1,010 bytes per call > * ~80% of the calls were under 256 bytes > * ~20% of the calls were greater than or equal to 256 bytes up to the = max > buffer size of 8192 >=20 > The 256 bytes is important because if the buffer is smaller, it makes sen= se > fallback to the existing implementation. This is because the AVX-512 algo= rithm > needs a minimum of 256 bytes to operate. >=20 > Using the above workload data distribution, > at 0% calls < 256 bytes, a 841% improvement on average for crc32c > functionality was observed. > at 50% calls < 256 bytes, a 758% improvement on average for crc32c > functionality was observed. > at 90% calls < 256 bytes, a 44% improvement on average for crc32c > functionality was observed. > at 97.6% calls < 256 bytes, the workload's crc32c performance breaks-even= . > at 100% calls < 256 bytes, a 14% regression is seen when using AVX-512 > implementation. >=20 > The results above are averages over 3 machines, and were measured on: Int= el > Saphire Rapids bare metal, and using EC2 on AWS cloud: Intel Saphire Rapi= ds > (m7i.2xlarge) and Intel Ice Lake (m6i.2xlarge). >=20 > Summary Data (Saphire Rapids bare metal, AWS m7i-2xl, and AWS m6i-2xl): > +---------------------+-------------------+-------------------+----------= ---------+--------- > -----------+ > | Rates in Bytes/us | Bare Metal | AWS m6i-2xl | AWS m7i= -2xl | > | > | (Larger is Better) +---------+---------+---------+---------+---------+= ---------+ > Overall Multiplier | > | | SSE 4.2 | AVX-512 | SSE 4.2 | AVX-512 | SSE 4.2 |= AVX-512 | > | > +---------------------+---------+---------+---------+---------+---------+= ---------+------- > -------------+ > | Numbers 256-8192 | 12,046 | 83,196 | 7,471 | 39,965 | 11,867 | > 84,589 | 6.62 | > +---------------------+---------+---------+---------+---------+---------+= ---------+------- > -------------+ > | Numbers 64 - 255 | 16,865 | 15,909 | 9,209 | 7,363 | 12,496 | > 10,046 | 0.86 | > +---------------------+---------+---------+---------+---------+---------+= ---------+------- > -------------+ > | Weighted Multiplie= r [*] | 1.44 | > +--------------------= ---------+--------------------+ > There was no evidence of AVX-512 frequency throttling from perf data, whi= ch > stayed steady during the test. >=20 > Feedback on this proposed improvement is appreciated. Some questions: > 1) This AVX-512 ISA-L derived code uses BSD-3 license [2]. Is this compat= ible > with the PostgreSQL License [3]? They both appear to be very permissive > licenses, but I am not an expert on licenses. > 2) Is there a preferred benchmark I should run to test this change? >=20 > If licensing is a non-issue, I can post the initial patch along with my P= ostgres > benchmark function patch for further review. >=20 > Thanks, > Paul >=20 > [0] > https://www.researchgate.net/publication/263424619_Fast_CRC_computati > on#full-text > [1] https://github.com/intel/isa-l > [2] https://opensource.org/license/bsd-3-clause > [3] https://opensource.org/license/postgresql >=20 > [*] Weights used were 90% of requests less than 256 bytes, 10% greater th= an > or equal to 256 bytes.