Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pdpa5-00007R-3q for pgsql-hackers@arkaria.postgresql.org; Sun, 19 Mar 2023 09:44:01 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pdpa4-0001Dj-08 for pgsql-hackers@arkaria.postgresql.org; Sun, 19 Mar 2023 09:44:00 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pdpa3-0001DZ-Gj for pgsql-hackers@lists.postgresql.org; Sun, 19 Mar 2023 09:43:59 +0000 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pdpa1-00048B-1D for pgsql-hackers@postgresql.org; Sun, 19 Mar 2023 09:43:58 +0000 Received: by mail-pl1-x633.google.com with SMTP id p20so9579753plw.13 for ; Sun, 19 Mar 2023 02:43:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1679219035; h=cc:to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=aKxaGBwHBqg+c9Gcxo+uiL/akGrfwZicw0MEHm4CVNI=; b=gyiJGeBn9kbl7gB3fbnr3rh05qCnXpwuh4IFh8bmZNRcWUV2VnzlvdlviH2Z+hiTDe 7Lpj2VZCJ3eAjymqb5G6dZG7K+xzj/ti71yyeri3XkMKMUUV8C4R/BVdKsngsbttwTQ5 e053pRTtvEjbPQlqYISmDCli+8UeWrz8NdMfJMoDHtVM1P3bSucVoScbCgWHGuZimZ1I yDidDf4T37DryAjnal+bIA9RytE7X99iviu33UiuQZ6piwkdrooFoHl02FHfHtbgFz3v pYKZeChbubjum/M6TB3spYueCzk+qq6uIuf2sZWbEcOK6cU/i2vZnvM7Zm2zrCSeXlEZ 0kvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679219035; h=cc:to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=aKxaGBwHBqg+c9Gcxo+uiL/akGrfwZicw0MEHm4CVNI=; b=io5ZxNitf4C4I8SVycLX1MqYeZHtCcZMOCe+VsJlxgic4eQgjGKZYTF5KN6owLvKTW oPmLSdkqWlT1itilN4YGEaAC5HWaQt580Wea/qwUC0HFPmIXIs68mdxLkifG8GaIZUkY TsP4zRUK4nKak+DIGAWdsZx/0S/uZTs28gETcc0IACVsjs+GJQklo3wV7r5RbowFCz2c grvSsTNTlLHk8s6w9WEZF4d7u7SmnflYVXfWvXxNMGENRVF9jWFG0ReY8kd+QzMR0Q9a rZdavVLHxsC0O1s5gOndbw7zoNieO6FFf0G2Qrw4CXcG1mJ+xhV+zMXnHuN75ZwngHP2 Wg5w== X-Gm-Message-State: AO0yUKUlOq8pIKKrZrAHXexKiHcK9K/HHBRymPEaQluYV7/7CQhiQOOT S4WVV1MkzFA7vn358+YQKRPl0NiBoOJNeDH4RxUAJVuwRgU= X-Google-Smtp-Source: AK7set9EtQsQT3uPVZ5QO9yuq39IGca4NCks4vWmlZ8eVQ28pds0W0RGyiWJOAMtvP55/Kvu1QMK4Gb3r9q+ss3URLQ= X-Received: by 2002:a17:903:3252:b0:19a:64f6:e147 with SMTP id ji18-20020a170903325200b0019a64f6e147mr3313552plb.2.1679219035363; Sun, 19 Mar 2023 02:43:55 -0700 (PDT) MIME-Version: 1.0 From: Michail Nikolaev Date: Sun, 19 Mar 2023 12:43:43 +0300 Message-ID: Subject: Replace known_assigned_xids_lck by memory barrier To: PostgreSQL Hackers Cc: Tom Lane Content-Type: multipart/mixed; boundary="0000000000001a707d05f73da65c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001a707d05f73da65c Content-Type: text/plain; charset="UTF-8" Hello everyone and Tom. Tom, this is about your idea (1) from 2010 to replace spinlock with a memory barrier in a known assignment xids machinery. It was mentioned by you again in (2) and in (3) we have decided to extract this change into a separate commitfest entry. So, creating it here with a rebased version of (4). In a nutshell: KnownAssignedXids as well as the head/tail pointers are modified only by the startup process, so spinlock is used to ensure that updates of the array and head/tail pointers are seen in a correct order. It is enough to pass the barrier after writing to the array (but before updating the pointers) to achieve the same result. Best regards. [1]: https://github.com/postgres/postgres/commit/2871b4618af1acc85665eec0912c48f8341504c4#diff-8879f0173be303070ab7931db7c757c96796d84402640b9e386a4150ed97b179R2408-R2412 [2]: https://www.postgresql.org/message-id/flat/1249332.1668553589%40sss.pgh.pa.us#19d00eb435340f5c5455e3bf259eccc8 [3]: https://www.postgresql.org/message-id/flat/1225350.1669757944%40sss.pgh.pa.us#23ca1956e694910fd7795a514a3bc79f [4]: https://www.postgresql.org/message-id/flat/CANtu0oiPoSdQsjRd6Red5WMHi1E83d2%2B-bM9J6dtWR3c5Tap9g%40mail.gmail.com#cc4827dee902978f93278732435e8521 --0000000000001a707d05f73da65c Content-Type: application/x-patch; name="v2-0001-Removes-known_assigned_xids_lck-using-the-write-m.patch" Content-Disposition: attachment; filename="v2-0001-Removes-known_assigned_xids_lck-using-the-write-m.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lfebnkm50 RnJvbSBkOTY4NjQ1NTUxNDEyYWJkYjNmYWM2Yjg1MTRjM2Q2NzQ2ZThhYzNkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWlsIE5pa29sYWV2IDxtaWNoYWlsLm5pa29sYWV2QGdt YWlsLmNvbT4KRGF0ZTogU2F0LCAxOCBNYXIgMjAyMyAyMToyODowMCArMDMwMApTdWJqZWN0OiBb UEFUQ0ggdjJdIFJlbW92ZXMga25vd25fYXNzaWduZWRfeGlkc19sY2ssIHVzaW5nIHRoZSB3cml0 ZSBtZW1vcnkKIGJhcnJpZXIgYXMgc3VnZ2VzdGVkIGVhcmxpZXIuCgotLS0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIHwgNDEgKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDMyIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJheS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKaW5kZXggZWE5MWNlMzU1Zi4uOTVlMjY3MmY5YSAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKQEAgLTYxLDcgKzYxLDYgQEAKICNpbmNs dWRlICJwb3J0L3BnX2xmaW5kLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNs dWRlICJ1dGlscy9hY2wuaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUg InV0aWxzL3JlbC5oIgpAQCAtODIsNyArODEsNiBAQCB0eXBlZGVmIHN0cnVjdCBQcm9jQXJyYXlT dHJ1Y3QKIAlpbnQJCQludW1Lbm93bkFzc2lnbmVkWGlkczsJLyogY3VycmVudCAjIG9mIHZhbGlk IGVudHJpZXMgKi8KIAlpbnQJCQl0YWlsS25vd25Bc3NpZ25lZFhpZHM7CS8qIGluZGV4IG9mIG9s ZGVzdCB2YWxpZCBlbGVtZW50ICovCiAJaW50CQkJaGVhZEtub3duQXNzaWduZWRYaWRzOwkvKiBp bmRleCBvZiBuZXdlc3QgZWxlbWVudCwgKyAxICovCi0Jc2xvY2tfdAkJa25vd25fYXNzaWduZWRf eGlkc19sY2s7CS8qIHByb3RlY3RzIGhlYWQvdGFpbCBwb2ludGVycyAqLwogCiAJLyoKIAkgKiBI aWdoZXN0IHN1YnhpZCB0aGF0IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBLbm93bkFzc2lnbmVkWGlk cyBhcnJheSB0bwpAQCAtNDQ0LDcgKzQ0Miw2IEBAIENyZWF0ZVNoYXJlZFByb2NBcnJheSh2b2lk KQogCQlwcm9jQXJyYXktPm51bUtub3duQXNzaWduZWRYaWRzID0gMDsKIAkJcHJvY0FycmF5LT50 YWlsS25vd25Bc3NpZ25lZFhpZHMgPSAwOwogCQlwcm9jQXJyYXktPmhlYWRLbm93bkFzc2lnbmVk WGlkcyA9IDA7Ci0JCVNwaW5Mb2NrSW5pdCgmcHJvY0FycmF5LT5rbm93bl9hc3NpZ25lZF94aWRz X2xjayk7CiAJCXByb2NBcnJheS0+bGFzdE92ZXJmbG93ZWRYaWQgPSBJbnZhbGlkVHJhbnNhY3Rp b25JZDsKIAkJcHJvY0FycmF5LT5yZXBsaWNhdGlvbl9zbG90X3htaW4gPSBJbnZhbGlkVHJhbnNh Y3Rpb25JZDsKIAkJcHJvY0FycmF5LT5yZXBsaWNhdGlvbl9zbG90X2NhdGFsb2dfeG1pbiA9IElu dmFsaWRUcmFuc2FjdGlvbklkOwpAQCAtNDY1MSwxMCArNDY0OCw5IEBAIEtub3duQXNzaWduZWRU cmFuc2FjdGlvbklkc0lkbGVNYWludGVuYW5jZSh2b2lkKQogICogcG9pbnRlci4gIFRoaXMgd291 bGRuJ3QgcmVxdWlyZSBhbnkgbG9jayBhdCBhbGwsIGV4Y2VwdCB0aGF0IG9uIG1hY2hpbmVzCiAg KiB3aXRoIHdlYWsgbWVtb3J5IG9yZGVyaW5nIHdlIG5lZWQgdG8gYmUgY2FyZWZ1bCB0aGF0IG90 aGVyIHByb2Nlc3NvcnMKICAqIHNlZSB0aGUgYXJyYXkgZWxlbWVudCBjaGFuZ2VzIGJlZm9yZSB0 aGV5IHNlZSB0aGUgaGVhZCBwb2ludGVyIGNoYW5nZS4KLSAqIFdlIGhhbmRsZSB0aGlzIGJ5IHVz aW5nIGEgc3BpbmxvY2sgdG8gcHJvdGVjdCByZWFkcyBhbmQgd3JpdGVzIG9mIHRoZQotICogaGVh ZC90YWlsIHBvaW50ZXJzLiAgKFdlIGNvdWxkIGRpc3BlbnNlIHdpdGggdGhlIHNwaW5sb2NrIGlm IHdlIHdlcmUgdG8KLSAqIGNyZWF0ZSBzdWl0YWJsZSBtZW1vcnkgYWNjZXNzIGJhcnJpZXIgcHJp bWl0aXZlcyBhbmQgdXNlIHRob3NlIGluc3RlYWQuKQotICogVGhlIHNwaW5sb2NrIG11c3QgYmUg dGFrZW4gdG8gcmVhZCBvciB3cml0ZSB0aGUgaGVhZC90YWlsIHBvaW50ZXJzIHVubGVzcworICog V2UgaGFuZGxlIHRoaXMgYnkgdXNpbmcgYSBtZW1vcnkgYmFycmllciB0byBwcm90ZWN0IHdyaXRl cyBvZiB0aGUKKyAqIGhlYWQgcG9pbnRlci4KKyAqIFRoZSBtZW1vcnkgYmFycmllciBpcyB0YWtl biBiZWZvcmUgd3JpdGUgdGhlIGhlYWQgcG9pbnRlciB1bmxlc3MKICAqIHRoZSBjYWxsZXIgaG9s ZHMgUHJvY0FycmF5TG9jayBleGNsdXNpdmVseS4KICAqCiAgKiBBbGdvcml0aG1pYyBhbmFseXNp czoKQEAgLTQ3MTIsNyArNDcwOCw3IEBAIEtub3duQXNzaWduZWRYaWRzQ29tcHJlc3MoS0FYQ29t cHJlc3NSZWFzb24gcmVhc29uLCBib29sIGhhdmVMb2NrKQogCiAJLyoKIAkgKiBTaW5jZSBvbmx5 IHRoZSBzdGFydHVwIHByb2Nlc3MgbW9kaWZpZXMgdGhlIGhlYWQvdGFpbCBwb2ludGVycywgd2UK LQkgKiBkb24ndCBuZWVkIGEgbG9jayB0byByZWFkIHRoZW0gaGVyZS4KKwkgKiBhcmUgc2FmZSBy ZWFkIHRoZW0gaGVyZS4KIAkgKi8KIAloZWFkID0gcEFycmF5LT5oZWFkS25vd25Bc3NpZ25lZFhp ZHM7CiAJdGFpbCA9IHBBcnJheS0+dGFpbEtub3duQXNzaWduZWRYaWRzOwpAQCAtNDg5MywyMSAr NDg4OSwyMCBAQCBLbm93bkFzc2lnbmVkWGlkc0FkZChUcmFuc2FjdGlvbklkIGZyb21feGlkLCBU cmFuc2FjdGlvbklkIHRvX3hpZCwKIAlwQXJyYXktPm51bUtub3duQXNzaWduZWRYaWRzICs9IG54 aWRzOwogCiAJLyoKLQkgKiBOb3cgdXBkYXRlIHRoZSBoZWFkIHBvaW50ZXIuICBXZSB1c2UgYSBz cGlubG9jayB0byBwcm90ZWN0IHRoaXMKKwkgKiBOb3cgdXBkYXRlIHRoZSBoZWFkIHBvaW50ZXIu ICBXZSB1c2UgYSBtZW1vcnkgYmFycmllciB0byBwcm90ZWN0IHRoaXMKIAkgKiBwb2ludGVyLCBu b3QgYmVjYXVzZSB0aGUgdXBkYXRlIGlzIGxpa2VseSB0byBiZSBub24tYXRvbWljLCBidXQgdG8K IAkgKiBlbnN1cmUgdGhhdCBvdGhlciBwcm9jZXNzb3JzIHNlZSB0aGUgYWJvdmUgYXJyYXkgdXBk YXRlcyBiZWZvcmUgdGhleQogCSAqIHNlZSB0aGUgaGVhZCBwb2ludGVyIGNoYW5nZS4KIAkgKgog CSAqIElmIHdlJ3JlIGhvbGRpbmcgUHJvY0FycmF5TG9jayBleGNsdXNpdmVseSwgdGhlcmUncyBu byBuZWVkIHRvIHRha2UgdGhlCi0JICogc3BpbmxvY2suCisJICogYmFycmllci4KIAkgKi8KIAlp ZiAoZXhjbHVzaXZlX2xvY2spCiAJCXBBcnJheS0+aGVhZEtub3duQXNzaWduZWRYaWRzID0gaGVh ZDsKIAllbHNlCiAJewotCQlTcGluTG9ja0FjcXVpcmUoJnBBcnJheS0+a25vd25fYXNzaWduZWRf eGlkc19sY2spOworCQlwZ193cml0ZV9iYXJyaWVyKCk7CiAJCXBBcnJheS0+aGVhZEtub3duQXNz aWduZWRYaWRzID0gaGVhZDsKLQkJU3BpbkxvY2tSZWxlYXNlKCZwQXJyYXktPmtub3duX2Fzc2ln bmVkX3hpZHNfbGNrKTsKIAl9CiB9CiAKQEAgLTQ5MzAsMjAgKzQ5MjUsOCBAQCBLbm93bkFzc2ln bmVkWGlkc1NlYXJjaChUcmFuc2FjdGlvbklkIHhpZCwgYm9vbCByZW1vdmUpCiAJaW50CQkJdGFp bDsKIAlpbnQJCQlyZXN1bHRfaW5kZXggPSAtMTsKIAotCWlmIChyZW1vdmUpCi0JewotCQkvKiB3 ZSBob2xkIFByb2NBcnJheUxvY2sgZXhjbHVzaXZlbHksIHNvIG5vIG5lZWQgZm9yIHNwaW5sb2Nr ICovCi0JCXRhaWwgPSBwQXJyYXktPnRhaWxLbm93bkFzc2lnbmVkWGlkczsKLQkJaGVhZCA9IHBB cnJheS0+aGVhZEtub3duQXNzaWduZWRYaWRzOwotCX0KLQllbHNlCi0JewotCQkvKiB0YWtlIHNw aW5sb2NrIHRvIGVuc3VyZSB3ZSBzZWUgdXAtdG8tZGF0ZSBhcnJheSBjb250ZW50cyAqLwotCQlT cGluTG9ja0FjcXVpcmUoJnBBcnJheS0+a25vd25fYXNzaWduZWRfeGlkc19sY2spOwotCQl0YWls ID0gcEFycmF5LT50YWlsS25vd25Bc3NpZ25lZFhpZHM7Ci0JCWhlYWQgPSBwQXJyYXktPmhlYWRL bm93bkFzc2lnbmVkWGlkczsKLQkJU3BpbkxvY2tSZWxlYXNlKCZwQXJyYXktPmtub3duX2Fzc2ln bmVkX3hpZHNfbGNrKTsKLQl9CisJdGFpbCA9IHBBcnJheS0+dGFpbEtub3duQXNzaWduZWRYaWRz OworCWhlYWQgPSBwQXJyYXktPmhlYWRLbm93bkFzc2lnbmVkWGlkczsKIAogCS8qCiAJICogU3Rh bmRhcmQgYmluYXJ5IHNlYXJjaC4gIE5vdGUgd2UgY2FuIGlnbm9yZSB0aGUgS25vd25Bc3NpZ25l ZFhpZHNWYWxpZApAQCAtNTE4MSwxMyArNTE2NCw5IEBAIEtub3duQXNzaWduZWRYaWRzR2V0QW5k U2V0WG1pbihUcmFuc2FjdGlvbklkICp4YXJyYXksIFRyYW5zYWN0aW9uSWQgKnhtaW4sCiAJICog Y2Fubm90IGVudGVyIGFuZCB0aGVuIGxlYXZlIHRoZSBhcnJheSB3aGlsZSB3ZSBob2xkIFByb2NB cnJheUxvY2suICBXZQogCSAqIG1pZ2h0IG1pc3MgbmV3bHktYWRkZWQgeGlkcywgYnV0IHRoZXkg c2hvdWxkIGJlID49IHhtYXggc28gaXJyZWxldmFudAogCSAqIGFueXdheS4KLQkgKgotCSAqIE11 c3QgdGFrZSBzcGlubG9jayB0byBlbnN1cmUgd2Ugc2VlIHVwLXRvLWRhdGUgYXJyYXkgY29udGVu dHMuCiAJICovCi0JU3BpbkxvY2tBY3F1aXJlKCZwcm9jQXJyYXktPmtub3duX2Fzc2lnbmVkX3hp ZHNfbGNrKTsKIAl0YWlsID0gcHJvY0FycmF5LT50YWlsS25vd25Bc3NpZ25lZFhpZHM7CiAJaGVh ZCA9IHByb2NBcnJheS0+aGVhZEtub3duQXNzaWduZWRYaWRzOwotCVNwaW5Mb2NrUmVsZWFzZSgm cHJvY0FycmF5LT5rbm93bl9hc3NpZ25lZF94aWRzX2xjayk7CiAKIAlmb3IgKGkgPSB0YWlsOyBp IDwgaGVhZDsgaSsrKQogCXsKQEAgLTUyMzQsMTAgKzUyMTMsOCBAQCBLbm93bkFzc2lnbmVkWGlk c0dldE9sZGVzdFhtaW4odm9pZCkKIAkvKgogCSAqIEZldGNoIGhlYWQganVzdCBvbmNlLCBzaW5j ZSBpdCBtYXkgY2hhbmdlIHdoaWxlIHdlIGxvb3AuCiAJICovCi0JU3BpbkxvY2tBY3F1aXJlKCZw cm9jQXJyYXktPmtub3duX2Fzc2lnbmVkX3hpZHNfbGNrKTsKIAl0YWlsID0gcHJvY0FycmF5LT50 YWlsS25vd25Bc3NpZ25lZFhpZHM7CiAJaGVhZCA9IHByb2NBcnJheS0+aGVhZEtub3duQXNzaWdu ZWRYaWRzOwotCVNwaW5Mb2NrUmVsZWFzZSgmcHJvY0FycmF5LT5rbm93bl9hc3NpZ25lZF94aWRz X2xjayk7CiAKIAlmb3IgKGkgPSB0YWlsOyBpIDwgaGVhZDsgaSsrKQogCXsKLS0gCjIuMzQuMQoK --0000000000001a707d05f73da65c--