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.96) (envelope-from ) id 1w7gav-005axS-0b for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 21:25:53 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7gat-00DJbL-2I for pgsql-hackers@arkaria.postgresql.org; Tue, 31 Mar 2026 21:25:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7gat-00DJbD-0o for pgsql-hackers@lists.postgresql.org; Tue, 31 Mar 2026 21:25:51 +0000 Received: from lahtoruutu.iki.fi ([185.185.170.37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w7gaq-00000002EwP-4BIA for pgsql-hackers@postgresql.org; Tue, 31 Mar 2026 21:25:51 +0000 Received: from [10.0.2.15] (unknown [130.41.208.2]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4flh4B3tbGz49PsK; Wed, 01 Apr 2026 00:25:45 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1774992347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dAJI9LKNtO62Q0qyeVJlAr3fs6EgMdsC2KRFwlHgZ1w=; b=uwzMtg1xQmB2xwdbwGAjByPFVhd5nGBeLwQRdY/rkOneZUO5baPULz8fmV4SEkTarZahuv 5MlM+osH21EqkyJSMUbUnZe6ioR65gKBJWkNdr4pkdvtu+Rn8ZTKpDG5Pd06hKx/RUrHmo ofWDkJxtEneU+/8li9wLKYMV4+R2Ui0PyqNe6PA0ZG80gGLf3rGbuM9HAU30DgcH+Un4Sd v7z2PdfO2MK/2rqyub5nrmIq3GKE9HcnvlcudhOoIIl93niETH5r5dZGyheTXv1I/rF7+V ULHBsqmx6DU4p9+NQAUyT/7qPKZBKk5EUCBE3cRUayiWIi9XfvTGRg0BJ3kBAw== ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1774992347; b=eGVen7CvhDuFoE3hVyHbQN5nVjSPG+fkJ2O+aVe1DHJxTdaJev8+N9oeQot4TO7MZ410jc 6TO9xwW0YiGNjq1pp+19X1oJA5xImAru9rp4YYlJWJ+DhbAvjVbXBTMzwLO7BXS46h2I9f gsm14EjBUtHQqOOgPGc6Idebwvfdiya3UZcELrYUo0rqFeQ8iU2d7OYkOhinN7JdWH28PZ v8Vel8qGUiJvCa6oIrRojpjWuxU2KS4yywU+OJBakXivo892kLYOI2zRBxLT9NT/vhJ9vE 16opdtthQ7vlCrQxUcsBlYJvZjzVCj2i3qwwHxZIWhda1gsQrUYn1kfx/ygIJw== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1774992347; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=dAJI9LKNtO62Q0qyeVJlAr3fs6EgMdsC2KRFwlHgZ1w=; b=HlV3HRCHzSmnNUgqyqUD+1iiWzKlwks5pr7Xe5ijBbq64zBWLrAAG6zTSIAVT+wyOsh3UC 88PYwQIKhzZ0xmju510f83/eIOT+1RiaPCGItC4s9wiiUeJhqiSmtyy08jn4v9PoEAxtIq xxFDvPzT+7kRKhjobTcV3RHeiF/3owYTA2X1Oi+6PUJRcsWnPKZxuLqwVYJRr0MRZvPRgN 1b+2VjLQ3Frk2NUQAU75+fdkYk+GZiMZWqA8NHRzg0LYx90IV+2sjKrEQltaKWk0OHS2EQ daZ1VAWk/uynwZ4FRww4aN1C/dpyRiiMofFYlDFA51z8L+33g7dNrsAMmrNhxQ== Content-Type: multipart/mixed; boundary="------------vc5jjlSwrPyDZ72XHS1CORob" Message-ID: Date: Wed, 1 Apr 2026 00:25:44 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Shared hash table allocations From: Heikki Linnakangas To: Tomas Vondra , "pgsql-hackers@postgresql.org" , Robert Haas , Rahila Syed References: <01ab1d41-3eda-4705-8bbd-af898f5007f1@iki.fi> <2981bb36-6bbe-4bdc-9a94-29b1114c79bd@vondra.me> <3026ec05-f664-4ebe-8bf6-0a1218b234ec@iki.fi> <19945803-6bcc-40fe-a14a-7dc5c462ed80@iki.fi> Content-Language: en-US In-Reply-To: <19945803-6bcc-40fe-a14a-7dc5c462ed80@iki.fi> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------vc5jjlSwrPyDZ72XHS1CORob Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 31/03/2026 01:02, Heikki Linnakangas wrote: > I wonder if we should change the defaults somehow. In usual > configurations, people are currently getting much more lock space than > you'd expect based on max_connections and max_locks_per_transaction, and > after these patches, they'll get much fewer locks. It might be prudent > bump up the default max_locks_per_transaction setting so that you'd get > roughly the same amount of locks in the default configuration. I did some testing of the memory usage and how removing the wiggle room affects the number of locks you can acquire. Attached are the test procedures I used, and proposed patches. The patches are new, designed to just change the parameters of the hash tables and shmem calculations with no other changes. They don't include the refactorings we've discussed so far in this thread. My plan is to commit these new patches first, and those other refactorings after that. Once these new patches are committed, the refactorings won't materially change the overall memory usage or how it's divided between different hash tables, all those effects are in these new patches. master: With the default configuration on master, the attached test procedure can take 14927 locks before hitting "out of shared memory" error. At that point, all the "wiggle room" is assigned for the LOCK hash table. A different scenario could make the PROCLOCK hash table consume all the wiggle room instead, but I believe running out of LOCK space is more common, and I don't think it changes the big picture anyway if you hit the ceiling with PROCLOCK instead. 0001: While looking at this, I noticed that we add 10% "safety margin" to the shmem calculations in predicate.c, but we had already marked the predicate.c hash tables as HASH_FIXED_SIZE so they were never able to make use of the safety margin. Oops. The extra memory was available for the lock.c hash tables, though. After removing that bogus 10% safety margin from predicate.c, memory usage was reduced by 200 kB, but the number of locks you could take went down from 14927 to 14159. 0002: As the next step, I also removed the 10% safety margin from lock.c. That reduced memory usage by another 320 kB, and the number of locks went down from 14159 to 12815. 0003: After those changes, there's only little extra memory sloshing around that's not accounted for any data structure. ipci.c reserves a constant 100 kB, but that's pretty much it. However, there's still flexibility between the LOCK and the PROCLOCK hash tables. The PROCLOCK hash table is estimated to be 2x the size of the LOCK table, but when it's not, the space can get assigned to the LOCK table instead. In patch 0003 I removed that flexibility by marking them both with HASH_FIXED_SIZE, and making init_size equal to max_size. That also stops the hash tables from using any of the other remaining wiggle room, making them truly fixed-size. This doesn't change the overall shared memory allocated, but the number of locks that the test procedure could acquire went down from 12815 to 8767, mostly because it cannot "steal" space from PROCLOCK anymore. 0004: To buy back that lock manager space in common out-of-the box situations, I propose to bump up the default for max_locks_per_transactions from 64 to 128. That increases memory usage again by 3216 kB, making it 2696 kB higher than on master (remember that the previous changes reduced memory usage). The number of locks you can take after that is 17535, which more than on master (14927). Increasing the default won't affect users who have already set max_locks_per_transaction to a non-default value. They will see that the number of locks they can acquire with their existing configuration will be reduced, again because of the lost wiggle room and flexibility between LOCK and PROCLOCK. Not sure if we could or should do something about that. Probably best to just document in the release notes that if you had raised increase max_locks_per_transaction, you might need to raise it further to be able to accommodate the same amount of locks as before. Here's all that in table form: | Patch | Shmem (kB) | Locks | | --------------------------------------+------------|-------| | master | 153560 | 14927 | | 0001: remove 10% from predicate.c | 153360 | 14159 | | 0002: remove 10% from lock.c | 153040 | 12815 | | 0003: Make lock.c tables fixed size | 153040 | 8767 | | 0004: max_locks_per_transactions=128 | 156256 | 17535 | This increase in memory usage is not great, but it's not that big in the grand scheme of things. I think it's well worth, and better than the sloppy scheme we have today. Any thoughts, objections? - Heikki --------------vc5jjlSwrPyDZ72XHS1CORob Content-Type: application/sql; name="shmem-test.sql" Content-Disposition: attachment; filename="shmem-test.sql" Content-Transfer-Encoding: base64 LS0KLS0gVGVzdCBwcm9jZWR1cmVzIHRvIGNyZWF0ZSBhIGxvdCBvZiB0YWJsZXMsIGFuZCB0 byBTRUxFQ1QgZnJvbSB0aGVtLAotLSB0byB0ZXN0IGhvdyBtYW55IGxvY2tzIHlvdSBjYW4g YWNxdWlyZS4KLS0KLS0gVXNhZ2U6Ci0tCi0tIDEuIEZpcnN0IGNyZWF0ZSBlbm91Z2ggdGVz dCB0YWJsZXMuIDIwMDAwIGlzIGVub3VnaCB0byBzYXR1cmF0ZSB0aGUKLS0gICAgbG9jayB0 YWJsZSBpbiBkZWZhdWx0IGNvbmZpZ3VyYXRpb24uCi0tCi0tICAgIENBTEwgbG9ja3Rlc3Qu Y3JlYXRlX3Rlc3RfdGFibGVzKDIwMDAwKTsKLS0KLS0gMi4gVG8gbWVhc3VyZSBob3cgbWFu eSBsb2NrcyB5b3UgY2FuIHRha2U6Ci0tCi0tICAgIHBvc3RncmVzPSMgQ0FMTCBsb2NrdGVz dC5zZWxlY3RfdGVzdF90YWJsZXMoKTsKLS0gICAgTk9USUNFOiAgZ290IGVycm9yIGF0IDE3 NTM1OiBvdXQgb2Ygc2hhcmVkIG1lbW9yeQotLSAgICBDQUxMCi0tCi0tICAgIE1ha2Ugbm90 ZSBvZiB0aGUgbnVtYmVyIGl0IHByaW50cy4gVGhhdCdzIGhvdyBtYW55IGxvY2tzIGl0IHdh cwotLSAgICBhYmxlIHRvIGFjcXVpcmUgYmVmb3JlIHRoZSBsb2NrIHRhYmxlIGZpbGxlZCB1 cC4KLS0KLS0KLS0gVG8gc2VlIHRoZSBzaXplIG9mIHRoZSB0b3RhbCBzaGFyZWQgbWVtb3J5 IHVzYWdlOgotLQotLSBTRUxFQ1QgU1VNKGFsbG9jYXRlZF9zaXplKSBGUk9NIHBnX3NobWVt X2FsbG9jYXRpb25zOwotLQoKY3JlYXRlIHNjaGVtYSBpZiBub3QgZXhpc3RzIGxvY2t0ZXN0 OwoKLS0gQ3JlYXRlIHRhYmxlcwpjcmVhdGUgb3IgcmVwbGFjZSBwcm9jZWR1cmUgbG9ja3Rl c3QuY3JlYXRlX3Rlc3RfdGFibGVzKG51bV9wYXJ0cyBpbnRlZ2VyKSBhcyAkJApiZWdpbgog IGZvciBpIGluIDEuLm51bV9wYXJ0cyBsb29wCiAgICBleGVjdXRlIGZvcm1hdCgnY3JlYXRl IHRhYmxlIGxvY2t0ZXN0LnBhcnR0ZXN0JXMoKScsIGkpOwogICAgaWYgaSAlIDEwMDAgPSAw IHRoZW4KICAgICAgcmFpc2Ugbm90aWNlICdwcm9ncmVzczogJSAvICUnLCBpLCBudW1fcGFy dHM7CiAgICAgIGNvbW1pdDsKICAgIGVuZCBpZjsKICBlbmQgbG9vcDsKICBjb21taXQ7CmVu ZDsKJCQgbGFuZ3VhZ2UgcGxwZ3NxbDsKCi0tIEhlbHBlciB0byBkcm9wIHRoZSB0YWJsZXMg aW4gYmF0Y2hlcywgdG8gY2xlYW4gdXAgYWZ0ZXIgdGhlCi0tIHRlc3QuIFBsYWluICJEUk9Q IFNDSEVNQSBsb2NrdGVzdCBDQVNDQURFIiB3b3VsZCB3b3JrIHRvbywgYnV0IHdpdGgKLS0g dGhlIGRlZmF1bHRzIGl0IHdpbGwgcnVuIG91dCBvZiBsb2NrIHNwYWNlIHRvby4KY3JlYXRl IG9yIHJlcGxhY2UgcHJvY2VkdXJlIGxvY2t0ZXN0LmRyb3BfdGVzdF90YWJsZXMobnVtX3Bh cnRzIGludGVnZXIpIGFzICQkCmJlZ2luCiAgZm9yIGkgaW4gMS4ubnVtX3BhcnRzIGxvb3AK ICAgIGV4ZWN1dGUgZm9ybWF0KCdkcm9wIHRhYmxlIGxvY2t0ZXN0LnBhcnR0ZXN0JXMnLCBp KTsKICAgIGlmIGkgJSAxMDAwID0gMCB0aGVuCiAgICAgIHJhaXNlIG5vdGljZSAncHJvZ3Jl c3M6ICUgLyAlJywgaSwgbnVtX3BhcnRzOwogICAgICBjb21taXQ7CiAgICBlbmQgaWY7CiAg ZW5kIGxvb3A7CiAgY29tbWl0OwplbmQ7CiQkIGxhbmd1YWdlIHBscGdzcWw7CgotLSBNZWFz dXJlCmNyZWF0ZSBvciByZXBsYWNlIHByb2NlZHVyZSBsb2NrdGVzdC5zZWxlY3RfdGVzdF90 YWJsZXMoKSBhcyAkJApkZWNsYXJlCiAgaSBpbnRlZ2VyOwpiZWdpbgogIGkgPSAxOwogIGJl Z2luCiAgICBsb29wCiAgICAgIGV4ZWN1dGUgZm9ybWF0KCdzZWxlY3QgMSBmcm9tIGxvY2t0 ZXN0LnBhcnR0ZXN0JXMnLCBpKTsKICAgICAgaSA9IGkgKyAxOwogICAgZW5kIGxvb3A7CiAg ZXhjZXB0aW9uCiAgICB3aGVuIG90aGVycyB0aGVuCiAgICAgIHJhaXNlIG5vdGljZSAnZ290 IGVycm9yIGF0ICU6ICUnLCBpLCBzcWxlcnJtOwogIGVuZDsKZW5kOwokJCBsYW5ndWFnZSBw bHBnc3FsOwoKLS0gVG8gY3JlYXRlIHRlc3QgdGFibGVzOgotLSBDQUxMIGxvY2t0ZXN0LmNy ZWF0ZV90ZXN0X3RhYmxlcygyMDAwMCk7CgotLSBUbyBtZWFzdXJlOgotLSBDQUxMIGxvY2t0 ZXN0LnNlbGVjdF90ZXN0X3RhYmxlcygpOwoKLS0gVG8gY2xlYW4gdXA6Ci0tIGNhbGwgbG9j a3Rlc3QuZHJvcF90ZXN0X3RhYmxlcygyMDAwMCk7Ci0tIGRyb3Agc2NoZW1hIGxvY2t0ZXN0 IGNhc2NhZGU7Cg== --------------vc5jjlSwrPyDZ72XHS1CORob Content-Type: text/x-patch; charset=UTF-8; name="v3-0001-Remove-bogus-safety-margin-from-predicate.c-shmem.patch" Content-Disposition: attachment; filename*0="v3-0001-Remove-bogus-safety-margin-from-predicate.c-shmem.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4ZjU1YTMyNWE0YmZlZWViODdlYzI1ODJjN2QzMGQ4YTIwZDBhYmU5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjYgMTI6MDY6NDQgKzAzMDAK U3ViamVjdDogW1BBVENIIHYzIDEvNF0gUmVtb3ZlIGJvZ3VzICJzYWZldHkgbWFyZ2luIiBm cm9tIHByZWRpY2F0ZS5jIHNobWVtCiBlc3RpbWF0ZXMKClRoZSAxMCUgc2FmZXR5IG1hcmdp biB3YXMgY29weS1wYXN0ZWQgZnJvbSBsb2NrLmMgd2hlbiB0aGUgcHJlZGljYXRlCmxvY2tp bmcgY29kZSB3YXMgb3JpZ2luYWxseSBhZGRlZC4gSG93ZXZlciwgd2UgbGF0ZXIgKGNvbW1p dAo3Yzc5N2U3MTk0KSBhZGRlZCB0aGUgSEFTSF9GSVhFRF9TSVpFIGZsYWcgdG8gdGhlIGhh c2ggdGFibGVzLCB3aGljaAptZWFucyB0aGF0IHRoZXkgY2Fubm90IGFjdHVhbGx5IHVzZSB0 aGUgc2FmZXR5IG1hcmdpbiB0aGF0IHdlJ3JlCmNhbGN1bGF0aW5nIGZvciB0aGVtLgoKVGhl IGV4dHJhIG1lbW9yeSB3YXMgbWFpbmx5IHVzZWQgYnkgdGhlIG1haW4gbG9jayBtYW5hZ2Vy LCB3aGljaCBpcwp0aGUgb25seSBzaG1lbSBoYXNoIHRhYmxlIG9mIG5vbi10cml2aWFsIHNp emUgdGhhdCBkb2VzIG5vdCB1c2UgdGhlCkhBU0hfRklYRURfU0laRSBmbGFnLiBJZiB3ZSB3 YW50ZWQgdG8gaGF2ZSBtb3JlIHNwYWNlIGZvciB0aGUgbG9jawptYW5hZ2VyLCB3ZSBzaG91 bGQgcmVzZXJ2ZSBpdCBkaXJlY3RseSBpbiBsb2NrLmMuIEFzIHRoaXMgcGF0Y2gKc3RhbmRz LCB0aGUgbG9jayBtYW5hZ2VyIHdpbGwganVzdCBoYXZlIGxlc3MgbWVtb3J5IGF2YWlsYWJs ZSB0aGFuCmJlZm9yZS4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRl LmMgfCA2IC0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmluZGV4IGFlMGU5NmFlZTVmLi5lZmE0N2Vj MTY4NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMTM4Mywx MiArMTM4Myw2IEBAIFByZWRpY2F0ZUxvY2tTaG1lbVNpemUodm9pZCkKIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgaGFzaF9lc3RpbWF0ZV9zaXplKG1heF9wcmVkaWNhdGVfbG9ja3MsCiAJ CQkJCQkJCQkJCSBzaXplb2YoUFJFRElDQVRFTE9DSykpKTsKIAotCS8qCi0JICogU2luY2Ug TlBSRURJQ0FURUxPQ0tUQVJHRVRFTlRTIGlzIG9ubHkgYW4gZXN0aW1hdGUsIGFkZCAxMCUg c2FmZXR5Ci0JICogbWFyZ2luLgotCSAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXpl IC8gMTApOwotCiAJLyogdHJhbnNhY3Rpb24gbGlzdCAqLwogCW1heF9zZXJpYWxpemFibGVf eGFjdHMgPSAoTWF4QmFja2VuZHMgKyBtYXhfcHJlcGFyZWRfeGFjdHMpICogMTA7CiAJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFByZWRYYWN0TGlzdERhdGFTaXplKTsKLS0gCjIuNDcuMwoK --------------vc5jjlSwrPyDZ72XHS1CORob Content-Type: text/x-patch; charset=UTF-8; name="v3-0002-Remove-10-safety-marging-from-lock-hash-table-est.patch" Content-Disposition: attachment; filename*0="v3-0002-Remove-10-safety-marging-from-lock-hash-table-est.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1M2UwYTYxNGZkZmFhNDIwMDM4NDFiNDc3NmNjNGFhYjcyZjExOTgyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjYgMjM6MTQ6MzYgKzAzMDAK U3ViamVjdDogW1BBVENIIHYzIDIvNF0gUmVtb3ZlIDEwJSBzYWZldHkgbWFyZ2luZyBmcm9t IGxvY2sgaGFzaCB0YWJsZQogZXN0aW1hdGVzCgotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9sb2NrLmMgfCA1IC0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwppbmRleCAyMzQ2NDNlNGRkNy4uMjE1OWRlOTAx NWEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xvY2suYwpAQCAtMzc3OCwxMSArMzc3OCw2IEBA IExvY2tNYW5hZ2VyU2htZW1TaXplKHZvaWQpCiAJbWF4X3RhYmxlX3NpemUgKj0gMjsKIAlz aXplID0gYWRkX3NpemUoc2l6ZSwgaGFzaF9lc3RpbWF0ZV9zaXplKG1heF90YWJsZV9zaXpl LCBzaXplb2YoUFJPQ0xPQ0spKSk7CiAKLQkvKgotCSAqIFNpbmNlIE5MT0NLRU5UUyBpcyBv bmx5IGFuIGVzdGltYXRlLCBhZGQgMTAlIHNhZmV0eSBtYXJnaW4uCi0JICovCi0Jc2l6ZSA9 IGFkZF9zaXplKHNpemUsIHNpemUgLyAxMCk7Ci0KIAlyZXR1cm4gc2l6ZTsKIH0KIAotLSAK Mi40Ny4zCgo= --------------vc5jjlSwrPyDZ72XHS1CORob Content-Type: text/x-patch; charset=UTF-8; name="v3-0003-Make-the-lock-hash-tables-fixed-sized.patch" Content-Disposition: attachment; filename="v3-0003-Make-the-lock-hash-tables-fixed-sized.patch" Content-Transfer-Encoding: base64 RnJvbSBlZGMyNWZmNzZiNzcyNDQ4ODAxMjA4MDNjYTBmNDk1ZmE3MzRhMDJjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgMzEgTWFyIDIwMjYgMTg6Mzk6MDMgKzAzMDAK U3ViamVjdDogW1BBVENIIHYzIDMvNF0gTWFrZSB0aGUgbG9jayBoYXNoIHRhYmxlcyBmaXhl ZC1zaXplZAoKLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jIHwgMTkgKysr KysrKysrLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMTAg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2xv Y2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKaW5kZXggMjE1OWRlOTAx NWEuLmFjN2M1ZWQwNjA0IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMKQEAgLTQ0NSwx NiArNDQ1LDE0IEBAIHZvaWQKIExvY2tNYW5hZ2VyU2htZW1Jbml0KHZvaWQpCiB7CiAJSEFT SENUTAkJaW5mbzsKLQlpbnQ2NAkJaW5pdF90YWJsZV9zaXplLAotCQkJCW1heF90YWJsZV9z aXplOworCWludDY0CQltYXhfdGFibGVfc2l6ZTsKIAlib29sCQlmb3VuZDsKIAogCS8qCi0J ICogQ29tcHV0ZSBpbml0L21heCBzaXplIHRvIHJlcXVlc3QgZm9yIGxvY2sgaGFzaHRhYmxl cy4gIE5vdGUgdGhlc2UKLQkgKiBjYWxjdWxhdGlvbnMgbXVzdCBhZ3JlZSB3aXRoIExvY2tN YW5hZ2VyU2htZW1TaXplIQorCSAqIENvbXB1dGUgc2l6ZXMgZm9yIGxvY2sgaGFzaHRhYmxl cy4gIE5vdGUgdGhhdCB0aGVzZSBjYWxjdWxhdGlvbnMgbXVzdAorCSAqIGFncmVlIHdpdGgg TG9ja01hbmFnZXJTaG1lbVNpemUhCiAJICovCiAJbWF4X3RhYmxlX3NpemUgPSBOTE9DS0VO VFMoKTsKLQlpbml0X3RhYmxlX3NpemUgPSBtYXhfdGFibGVfc2l6ZSAvIDI7CiAKIAkvKgog CSAqIEFsbG9jYXRlIGhhc2ggdGFibGUgZm9yIExPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVz IHBlci1sb2NrZWQtb2JqZWN0CkBAIC00NjUsMTQgKzQ2MywxNCBAQCBMb2NrTWFuYWdlclNo bWVtSW5pdCh2b2lkKQogCWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fTE9DS19QQVJUSVRJ T05TOwogCiAJTG9ja01ldGhvZExvY2tIYXNoID0gU2htZW1Jbml0SGFzaCgiTE9DSyBoYXNo IiwKLQkJCQkJCQkJCSAgIGluaXRfdGFibGVfc2l6ZSwKKwkJCQkJCQkJCSAgIG1heF90YWJs ZV9zaXplLAogCQkJCQkJCQkJICAgbWF4X3RhYmxlX3NpemUsCiAJCQkJCQkJCQkgICAmaW5m bywKLQkJCQkJCQkJCSAgIEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNIX1BBUlRJVElP Tik7CisJCQkJCQkJCQkgICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwKKwkJCQkJCQkJCSAg IEhBU0hfUEFSVElUSU9OICB8IEhBU0hfRklYRURfU0laRSk7CiAKIAkvKiBBc3N1bWUgYW4g YXZlcmFnZSBvZiAyIGhvbGRlcnMgcGVyIGxvY2sgKi8KIAltYXhfdGFibGVfc2l6ZSAqPSAy OwotCWluaXRfdGFibGVfc2l6ZSAqPSAyOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBoYXNoIHRh YmxlIGZvciBQUk9DTE9DSyBzdHJ1Y3RzLiAgVGhpcyBzdG9yZXMKQEAgLTQ4NCwxMCArNDgy LDExIEBAIExvY2tNYW5hZ2VyU2htZW1Jbml0KHZvaWQpCiAJaW5mby5udW1fcGFydGl0aW9u cyA9IE5VTV9MT0NLX1BBUlRJVElPTlM7CiAKIAlMb2NrTWV0aG9kUHJvY0xvY2tIYXNoID0g U2htZW1Jbml0SGFzaCgiUFJPQ0xPQ0sgaGFzaCIsCi0JCQkJCQkJCQkJICAgaW5pdF90YWJs ZV9zaXplLAorCQkJCQkJCQkJCSAgIG1heF90YWJsZV9zaXplLAogCQkJCQkJCQkJCSAgIG1h eF90YWJsZV9zaXplLAogCQkJCQkJCQkJCSAgICZpbmZvLAotCQkJCQkJCQkJCSAgIEhBU0hf RUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX1BBUlRJVElPTik7CisJCQkJCQkJCQkJICAg SEFTSF9FTEVNIHwgSEFTSF9GVU5DVElPTiB8CisJCQkJCQkJCQkJICAgSEFTSF9GSVhFRF9T SVpFIHwgSEFTSF9QQVJUSVRJT04pOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBmYXN0LXBhdGgg c3RydWN0dXJlcy4KLS0gCjIuNDcuMwoK --------------vc5jjlSwrPyDZ72XHS1CORob Content-Type: text/x-patch; charset=UTF-8; name="v3-0004-Change-default-max_locks_per_transactions-128.patch" Content-Disposition: attachment; filename*0="v3-0004-Change-default-max_locks_per_transactions-128.patch" Content-Transfer-Encoding: base64 RnJvbSA2OTJjMDcyN2Q4NGQ1MzRhMjU3NWUwNDQyYzk2ZTRkZjM3NTJhN2I0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgMSBBcHIgMjAyNiAwMDowOTozNSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjMgNC80XSBDaGFuZ2UgZGVmYXVsdCBtYXhfbG9ja3NfcGVyX3Ry YW5zYWN0aW9ucz0xMjgKCi0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAg ICAgICAgICAgICAgIHwgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5j ICAgICAgICAgICAgIHwgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1l dGVycy5kYXQgICAgIHwgMiArLQogc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3Fs LmNvbmYuc2FtcGxlIHwgMiArLQogc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdhbC5j ICAgICAgICAgICAgIHwgNCArKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygr KSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNn bWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggMjI5ZjQxMzUzZWIuLjIwNzA2 YjU2MTU4IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0xMTQ3MCw3ICsxMTQ3MCw3IEBAIGR5bmFtaWNf bGlicmFyeV9wYXRoID0gJy91c3IvbG9jYWwvbGliL3Bvc3RncmVzcWw6JGxpYmRpcicKICAg ICAgICAgY2FuIGxvY2sgbW9yZSBvYmplY3RzIGFzIGxvbmcgYXMgdGhlIGxvY2tzIG9mIGFs bCB0cmFuc2FjdGlvbnMKICAgICAgICAgZml0IGluIHRoZSBsb2NrIHRhYmxlLiAgVGhpcyBp cyA8ZW1waGFzaXM+bm90PC9lbXBoYXNpcz4gdGhlIG51bWJlciBvZgogICAgICAgICByb3dz IHRoYXQgY2FuIGJlIGxvY2tlZDsgdGhhdCB2YWx1ZSBpcyB1bmxpbWl0ZWQuICBUaGUgZGVm YXVsdCwKLSAgICAgICAgNjQsIGhhcyBoaXN0b3JpY2FsbHkgcHJvdmVuIHN1ZmZpY2llbnQs IGJ1dCB5b3UgbWlnaHQgbmVlZCB0bworICAgICAgICAxMjgsIGhhcyBoaXN0b3JpY2FsbHkg cHJvdmVuIHN1ZmZpY2llbnQsIGJ1dCB5b3UgbWlnaHQgbmVlZCB0bwogICAgICAgICByYWlz ZSB0aGlzIHZhbHVlIGlmIHlvdSBoYXZlIHF1ZXJpZXMgdGhhdCB0b3VjaCBtYW55IGRpZmZl cmVudAogICAgICAgICB0YWJsZXMgaW4gYSBzaW5nbGUgdHJhbnNhY3Rpb24sIGUuZy4sIHF1 ZXJ5IG9mIGEgcGFyZW50IHRhYmxlIHdpdGgKICAgICAgICAgbWFueSBjaGlsZHJlbi4gIFRo aXMgcGFyYW1ldGVyIGNhbiBvbmx5IGJlIHNldCBhdCBzZXJ2ZXIgc3RhcnQuCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMgYi9zcmMvYmFja2VuZC91 dGlscy9pbml0L3Bvc3Rpbml0LmMKaW5kZXggNTc3ZWY1ZWZmYmIuLjc4M2E3NDAwNDY0IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC01OTMsNyArNTkzLDcgQEAgSW5p dGlhbGl6ZUZhc3RQYXRoTG9ja3Modm9pZCkKIAkgKiB2YWx1ZSBhdCBGUF9MT0NLX0dST1VQ U19QRVJfQkFDS0VORF9NQVggYW5kIGluc2lzdCB0aGUgdmFsdWUgaXMgYXQKIAkgKiBsZWFz dCAxLgogCSAqCi0JICogVGhlIGRlZmF1bHQgbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlvbiA9 IDY0IG1lYW5zIDQgZ3JvdXBzIGJ5IGRlZmF1bHQuCisJICogVGhlIGRlZmF1bHQgbWF4X2xv Y2tzX3Blcl90cmFuc2FjdGlvbiA9IDEyOCBtZWFucyA4IGdyb3VwcyBieSBkZWZhdWx0Lgog CSAqLwogCUZhc3RQYXRoTG9ja0dyb3Vwc1BlckJhY2tlbmQgPQogCQlNYXgoTWluKHBnX25l eHRwb3dlcjJfMzIobWF4X2xvY2tzX3Blcl94YWN0KSAvIEZQX0xPQ0tfU0xPVFNfUEVSX0dS T1VQLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFyYW1ldGVy cy5kYXQgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAppbmRl eCAwYTg2MjY5M2ZjZC4uYTNlMGRkYTM0YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3BhcmFtZXRlcnMuZGF0CkBAIC0xOTc5LDcgKzE5NzksNyBAQAogICBzaG9ydF9k ZXNjID0+ICdTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyBwZXIgdHJhbnNhY3Rp b24uJywKICAgbG9uZ19kZXNjID0+ICdUaGUgc2hhcmVkIGxvY2sgdGFibGUgaXMgc2l6ZWQg b24gdGhlIGFzc3VtcHRpb24gdGhhdCBhdCBtb3N0ICJtYXhfbG9ja3NfcGVyX3RyYW5zYWN0 aW9uIiBvYmplY3RzIHBlciBzZXJ2ZXIgcHJvY2VzcyBvciBwcmVwYXJlZCB0cmFuc2FjdGlv biB3aWxsIG5lZWQgdG8gYmUgbG9ja2VkIGF0IGFueSBvbmUgdGltZS4nLAogICB2YXJpYWJs ZSA9PiAnbWF4X2xvY2tzX3Blcl94YWN0JywKLSAgYm9vdF92YWwgPT4gJzY0JywKKyAgYm9v dF92YWwgPT4gJzEyOCcsCiAgIG1pbiA9PiAnMTAnLAogICBtYXggPT4gJ0lOVF9NQVgnLAog fSwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25m LnNhbXBsZSBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZQppbmRleCBjZjE1NTk3Mzg1Yi4uNmUzNzZkODVkNjEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTg1Niw3ICs4NTYsNyBA QAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjZGVhZGxvY2tfdGltZW91dCA9IDFz Ci0jbWF4X2xvY2tzX3Blcl90cmFuc2FjdGlvbiA9IDY0ICAgICAgICAgIyBtaW4gMTAKKyNt YXhfbG9ja3NfcGVyX3RyYW5zYWN0aW9uID0gMTI4ICAgICAgICAjIG1pbiAxMAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKGNoYW5nZSByZXF1aXJlcyBy ZXN0YXJ0KQogI21heF9wcmVkX2xvY2tzX3Blcl90cmFuc2FjdGlvbiA9IDY0ICAgICMgbWlu IDEwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAoY2hhbmdl IHJlcXVpcmVzIHJlc3RhcnQpCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3Jlc2V0d2FsL3Bn X3Jlc2V0d2FsLmMgYi9zcmMvYmluL3BnX3Jlc2V0d2FsL3BnX3Jlc2V0d2FsLmMKaW5kZXgg YWI3NjZjMzRkNGIuLjQ0ZjJiNDQ2ZTVkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Jlc2V0 d2FsL3BnX3Jlc2V0d2FsLmMKKysrIGIvc3JjL2Jpbi9wZ19yZXNldHdhbC9wZ19yZXNldHdh bC5jCkBAIC03MjIsNyArNzIyLDcgQEAgR3Vlc3NDb250cm9sVmFsdWVzKHZvaWQpCiAJQ29u dHJvbEZpbGUubWF4X3dhbF9zZW5kZXJzID0gMTA7CiAJQ29udHJvbEZpbGUubWF4X3dvcmtl cl9wcm9jZXNzZXMgPSA4OwogCUNvbnRyb2xGaWxlLm1heF9wcmVwYXJlZF94YWN0cyA9IDA7 Ci0JQ29udHJvbEZpbGUubWF4X2xvY2tzX3Blcl94YWN0ID0gNjQ7CisJQ29udHJvbEZpbGUu bWF4X2xvY2tzX3Blcl94YWN0ID0gMTI4OwogCiAJQ29udHJvbEZpbGUubWF4QWxpZ24gPSBN QVhJTVVNX0FMSUdOT0Y7CiAJQ29udHJvbEZpbGUuZmxvYXRGb3JtYXQgPSBGTE9BVEZPUk1B VF9WQUxVRTsKQEAgLTkzMSw3ICs5MzEsNyBAQCBSZXdyaXRlQ29udHJvbEZpbGUodm9pZCkK IAlDb250cm9sRmlsZS5tYXhfd2FsX3NlbmRlcnMgPSAxMDsKIAlDb250cm9sRmlsZS5tYXhf d29ya2VyX3Byb2Nlc3NlcyA9IDg7CiAJQ29udHJvbEZpbGUubWF4X3ByZXBhcmVkX3hhY3Rz ID0gMDsKLQlDb250cm9sRmlsZS5tYXhfbG9ja3NfcGVyX3hhY3QgPSA2NDsKKwlDb250cm9s RmlsZS5tYXhfbG9ja3NfcGVyX3hhY3QgPSAxMjg7CiAKIAkvKiBUaGUgY29udHJvbCBmaWxl IGdldHMgZmx1c2hlZCBoZXJlLiAqLwogCXVwZGF0ZV9jb250cm9sZmlsZSgiLiIsICZDb250 cm9sRmlsZSwgdHJ1ZSk7Ci0tIAoyLjQ3LjMKCg== --------------vc5jjlSwrPyDZ72XHS1CORob--