Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bqU7T-0007I5-8i for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Oct 2016 23:55:03 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.84_2) (envelope-from ) id 1bqU7S-0005ec-DF for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Oct 2016 23:55:02 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bqU63-00048X-Kv for pgsql-hackers@postgreSQL.org; Sat, 01 Oct 2016 23:53:35 +0000 Received: from mail-by2nam01on0087.outbound.protection.outlook.com ([104.47.34.87] helo=NAM01-BY2-obe.outbound.protection.outlook.com) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA384:256) (Exim 4.84_2) (envelope-from ) id 1bqU5u-0007NY-84 for pgsql-hackers@postgreSQL.org; Sat, 01 Oct 2016 23:53:34 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=BlueTreble.onmicrosoft.com; s=selector1-bluetreble-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=rpgz3hcXv13jwrvUCujXnM3kZ6ZqvsvD8ZDGTSrvdwc=; b=YfU6TwJvznQwh+dHLIpyAWl04/Avp96m5CXHovtnl0hUeAzpmhBZMYisMz/UbtJVdfJ6LlNpjea/kK0MS0Ei+Oh/tMwAOcJTkvJKvG9QslfZlzFUmHwUtr1xriPoMgJISK6dn+2PSCnPnHZVCE2plc1gNE4rwpjsX1xiXqojrq0= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jim.Nasby@bluetreble.com; Received: from decina.local (70.113.18.142) by DM5PR11MB1643.namprd11.prod.outlook.com (10.172.38.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.649.16; Sat, 1 Oct 2016 23:53:21 +0000 Subject: Re: PATCH: two slab-like memory allocators To: Tomas Vondra , Petr Jelinek , References: <68b837a3-ce55-f9a2-f685-9eafac536f21@2ndquadrant.com> <885540a7-ac72-5a21-6dae-a4d5b50672da@2ndquadrant.com> <03110c11-ea72-7b4d-027d-6f19eb300b2a@2ndquadrant.com> From: Jim Nasby Message-ID: Date: Sat, 1 Oct 2016 18:53:16 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 MIME-Version: 1.0 In-Reply-To: <03110c11-ea72-7b4d-027d-6f19eb300b2a@2ndquadrant.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [70.113.18.142] X-ClientProxiedBy: BN6PR17CA0029.namprd17.prod.outlook.com (10.175.189.15) To DM5PR11MB1643.namprd11.prod.outlook.com (10.172.38.14) X-MS-Office365-Filtering-Correlation-Id: cb239875-9fc1-4fb9-e63c-08d3ea56209b X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1643;2:zAjdExdbQx0645Y8t4sptH9Hsiepj/NVeArQGCaxdV80MH2flQvXgIGnDJJPkccgCaTahjZpupLwsxaBQ1Wsr5kiVl8uLekNTgXe+f1JT4LG8otgTJ9j4bvsw8ewfCE5b1nCMkNrE0El0K5vsqjW7KcnfEGt8HFvqRd+PkhLW1himwhE1ovqK/nKwvHscx7mR/Njr2f5vki7LqtL0TwMlQ==;3:f8ynm0Z3s0JHsra+4LvmWfJki8tFXx187HYNny21ngx+jUjdIyODyBSe0JDmE3Hk+Jv6InchNLEycIdY98I3Is369MSYKWBUV7K0E5WNUntxI151SE8Nv9p4KefYJQ5UiJM+r8+41KR6O7krlnxEUQ== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM5PR11MB1643; X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1643;25:6yUhYWYmRBHSpNbAJUP0n9/Z3WOfSUBKWrJTas7LnbB40+zMyJMOdQHY7uAb4r7UBnGyFPOJnPfZiXNHWAH9KjwMOjzUAnY2T4e3z3ybCjTadIJBklgu/xAQ4HkhYH1A61E8Tomx/uOty4hHJQ1HJV/iKDcleunON5x2nKmnytsogbGd5InG0aFI9JVmupxnn8FAUK9+yt4bDwe6Fycvnz0dv50RpP0u6PeeFqc29248YKEHAKQ919ypw5qhsYzdGRh2Z5dTR8nI6hfr58BOLVMKa9U6aPsdcraZj5PsHEqAOn9G4CpBZShWqkuhXTbKOZ//pHY/v3j2+RS5a1UO0GGvsaZ6+F7a2Y4RPVic45rF7DAbkx1Q+pH021DqOQxXIQD/ZhC2dE8BTxObEqESxA3p3/b27RdXqNQveXXRjHKPtDCW+GbyXBxXKDIXVYD56dSPr5Do5X6LRCEVAzZQFY2TGvgKibenTl5IjilUGlA3rluaXBndk/LnS1RaDpheH9qwv/R9q4f54e3tpOIdepHZTrKXjV92q6mYpsJUUO0dpsYb8+54ZPVdsgsFNMdfPCA+EA4sBffGlvMUom2gd2r10gXWaaHnq9nOhlcQp8zJHCqa4cOznToumHep+85U4IT3iO62o06RJ/oJ1ClApDuxrz5D3V/tcK7xwxlSthUB8dbCwtg78Pn6w96/JPxyMzAHr9PUkvq/uDyW4NuvvZ53zKrgleieU9KFKP0BybSe4+a1+TrC4Bqckx4578Y/yob9rbpxMHoATDTGjiNANiHmcfPkjzNJr/lzmAFmF2a17IeASqhRg8qP9+sVG8dL8UlqCp8oIB7gL1tR2omCyQ== X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1643;31:1fL1ZE6USy1C08CIYfAXxXKUCuTe58GS0/owU9Wwkzu6EoBhwzBpi/fJuIQjaUOANItpPoZWQB/EMtwEX3HRpNEGKqnHIFvw/L5HpV4PeF0xBuUT5T5SGhc9nZTRispYZHL0N7E/NM+lFlkIRHeVLmnZz8ww0TbjxDjOX9t5uQLFm9DqCGY+T/RdViTSzJfgBk6tSkCNrjqXv+3axCnBg6lz3HgiGYxsfKGCQn/lMqps9jgRI+4WF9HZxu7QAD80;4:WlwdC0Ra0/T+V8qP7c9lNMKGOnYl2L++JqC+JyQYG+1BbCnskNz9cA2+40cqnScPwALjVbR19+zbTlSokWZVxk5Zwaa705+dbKTpaKtKF+ex9mSKqz0KbwHncZ+inglNnO7W617X8TaL3jAaVD1HRXcWCaCNkqg7wMvtfG9LrJV97yZ8HhIPUodSrerImTM0Prfqx1RZJiw4vk0nxK6w5kqYpB8KlVuloC7k6RGwigKsn8tRWX8PllT+5BNobNsZiEOll9aUtDy7/RG1jwY8aWKtQcE0xHPtiaVBwK6FdorWxpl5AyZ+uCSI5kOUfIzJdKRZyDJKorF1rUfQZ/IlMSxlJShz+G6JIfOHZtvQtPuFHGuwPWnhKi15r79bofZsGnz+Qa4pMser9wfpEeRZvoxHw3NlVJMK642qqI+g/qw7z02TQzoF6uKuRXsdUa+a X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6043046)(6042046);SRVR:DM5PR11MB1643;BCL:0;PCL:0;RULEID:;SRVR:DM5PR11MB1643; X-Forefront-PRVS: 00826B6158 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(377454003)(189002)(199003)(24454002)(5660300001)(68736007)(97736004)(107886002)(33646002)(6666003)(86362001)(36756003)(5001770100001)(189998001)(65826007)(31696002)(4001350100001)(19580395003)(305945005)(106356001)(42186005)(65956001)(66066001)(47776003)(5890100001)(31686004)(16601075003)(92566002)(105586002)(15975445007)(230700001)(2906002)(65806001)(23676002)(8676002)(101416001)(50466002)(77096005)(54356999)(6116002)(93886004)(81166006)(81156014)(76176999)(3846002)(83506001)(7736002)(2950100002)(64126003)(7846002)(586003)(50986999)(2101003)(85282002);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR11MB1643;H:decina.local;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; Received-SPF: None (protection.outlook.com: bluetreble.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtETTVQUjExTUIxNjQzOzIzOmVLaGZ4QjQwVENycThja2k2cG40Y1lINEVH?= =?utf-8?B?UVFCeURFTGEvZ203d01MaDN6NldSdmpQYTZBNlh1bnBqZXh5VHNJc0Q5RWJ4?= =?utf-8?B?bjMrS2t4aU5XWVMyZEhLUGRxTlBLV2R2YkZJQ0Npbm5kOXNZdUR5Uk1WOXVJ?= =?utf-8?B?UDdrMC93V2kreURkdnRrM3o2bWs0VDNuVWNzd3lvVUJqQmFleDFwb2dwdHJk?= =?utf-8?B?TVZaSUUzK09rVzB2T2trZzhXSGx2WjRZSHRmT2JaZFcxRjZZWjQyQ01vL0ZF?= =?utf-8?B?Qm9Ta3VVNVNIdnhZN3YwVW5hUk8zK1loZExlTGVuc0Z4YzlvTDNKL25WWFBx?= =?utf-8?B?YjNFemszc1UzL0MrOXFQeThQS25RMkExSU5RdWhxTXV0YTVhSi9qZEhKS2cx?= =?utf-8?B?Rk0xMEllZ0lhNHhnUG90Z0xDR3NJT3dERGI0M3Z2blkxWXlGcy9TMkRoY0lp?= =?utf-8?B?eFBXb1gwWlZhRjJvZ0YycDVTMTFBellOTHdEV3djY0NhZWg2MmVuN050QndM?= =?utf-8?B?MEQ5L3hhdVhhUU85NEdmYkZiSm5BTXdnWVB5NWxoTmJZemR2cWgvTHRUWkxF?= =?utf-8?B?SnNLK1FvbmFnK3ozM2FydGFIMVJCS2pEWW1IaXhkMXRPaGtoZEFSaFgzalIz?= =?utf-8?B?U0FVSnFKcVJ5L3lsd2pKc2RXWnJRbVRuZlBBdXpBeXZkMndZSmphWDU0Tml6?= =?utf-8?B?VnU1QmtWQlAraEMzUjMvUWpZYXRNOTVoVzVxZTFrTWJML3ZwTXB6OGJHT2dD?= =?utf-8?B?UENTSm5Ub2JwNWRFc1FuSjczRWFLdUF3MFdYZUFteWxxeUNHOVRieWtMYUZB?= =?utf-8?B?MWZ3ejlMNWFHQ1I5eUNUMDZhS1Fic1UzK1U4dTNzRkpzQnp0bytQSWZtVHRN?= =?utf-8?B?VmpUbW9kSitYbFJneFlQTUtpTStOS1BzaktGdXVEMlh2T0JhdGhGYklNbFN4?= =?utf-8?B?U0dXRitPaStsWXdSZ2VYUGZ5dDIrSWl1SWZBSDl0ZCt0QmFVNGVnZ3pvK2ky?= =?utf-8?B?S1pUSEZyWHF4S3ZkZkwvNTRMcEZiZ25XNkVESFM1a0J6bzdEcHhyTkYvZXI5?= =?utf-8?B?alM3TWs1d3VCQy9JM2FVUGNDVGNya1ltRG1wcjRSWDVFckV6WksvNDl5TGt5?= =?utf-8?B?VEpZNzVoZFhqRE9STy9nUU5ZUjhHMFAwRWlEbVhVM2tjcEY3c29CUnl4Q2Vl?= =?utf-8?B?K0VtbUQzaXRNSWtQOG94TGVkRVpCa3F0S1RtclRBdURLeVBWYUVpanc3bitq?= =?utf-8?B?SjRNbGUwbWloVHpCcWtMYlliS0tNNGVjK3kyc0NFK3NiTU9PZlZPTENqOTli?= =?utf-8?B?MlZ6YlIwNE90Yzl1S0JrNVdnbXJUWXJhQXBxU2JZSVJOTUZOalU3bzRmWmNN?= =?utf-8?B?amlkWm03aC9vNW12VElud1lJRUdVWjRlL0hzWDRMTE1LLzdLOHBvaWxib2Zh?= =?utf-8?B?SlFLalZLTk5CQ1ZHM3VxaFRjMXJFc00zeXZLdi9acDV2d0xMdHJwU0hoZ0xa?= =?utf-8?B?YVUwY2JGS3pOdXdENnQzNGVCMTQ1Si9XNnhIUXhRNEcxb3RJaWFVODMxVE9l?= =?utf-8?B?THA4bHl2OGdYSGlncnU1MytJMXFISVExclI1VDUzVDd6cytxZUF1LzhHcEJD?= =?utf-8?B?NmtGVUxmUUdMRnZvME1RZllUeHFnQTczTUZvZDM1cHJXWHNZZVVXM1ZqbVVm?= =?utf-8?B?VUpCd0UyUUJQM1MvUm11aEpTQko4ZHZ0Tmo2WWFqOXU2eEJUcGt5blBKeUc1?= =?utf-8?B?bFI0SVlyQTMzWU1jbS92UVhDakNLZVV5NmQrck5nai9VYjlyMnk1REE3ckZH?= =?utf-8?B?WVRUOE1QNGgvRW5zeGgwUkhZaTJxdFR6K0Y1Zzl3NEJoZG5jazd5Yzh4dUxS?= =?utf-8?B?U3RNL3RuOGFzZ0R6NFlCbFllNEZJeCtNZ3F5ZEFSRGplUjkyTGxLdzYvcTl5?= =?utf-8?B?dld0VUNOYzd3PT0=?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1643;6:4ZnylIfuRayLAU4WJB+JJb0SM0rNtinAh9Sc0+eYiQPr/QjIY4n5gvVBgReKEGTF0XM7tuWCQzAu36lljtuHMBN0nTUuPJ7f8wWAZSsM0ahQEY6GaHma5fgTa8aLSbBiH1C+rbWMn1w0QlYItEZ+kYWkVFoCL73RdllDNYTyt2HVlMc/FQo/bD1aKPc8ElcYBC9P9VGt26Nyhw73PzYTVKXX6CwAEOzG3tfxvreLDJZ3i4P12PeAYfXZWTgQhvx4hU4ROL7WsKKOY2rkgslxMd8uwf3LV+Ioi6cQUClnL6XGRCncX7h0Y45D5IyM8TLSu1XuzCDM8Fs3AQx8MvxSfg==;5:1HWqKAbvqTIikRNeLIxede/Mo03L82UeVYwGclBeC6S6DkgvwPZakRPVeBc2s+GFFGhXF2A36iV6WQVTuZGY/aFmLeR0APQ+vI06kZIyKigNbE2teAAqi8mlD/x0S9UQycufk/mnkSFrMc3NcgBt0/LqsJyDqEsjLhFa5uQi9uc=;24:PCKo1VsemUMUKf1Gxj0MTIxp5+WN9i0takXxCWT7dU5KFXzWyReJCJ3087URfGN4bFunuue1JTB8TXIVq/yqzWThR8ow/1uluRWJ2JRJWwE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR11MB1643;7:HWmXbPwadr/c3sg0Aht4f5PlXpERry0BnNxjoBDX81vBRfwz+6FhaQiy/uYBNzw7HPE8lMFBjbuY4Hu9CDdJ4QCk3oiZw7CnHQP/eDPk3w5JdkxxSmKnLCjc5z1CegXQY8IJxCznjeW55gSU552JwdfeqZ2JVMhdiKCaII27+B5LahzhMvPNZNPFF6zGRc1wE07Wul7TEbucsn5r2I7iCWYCL2TEYGSnnZJ7duPdFMnT9kNv5MJ/mo0hUb+tkRavzFEKXBnqRY1QJ6q41zczq/z+Gia2N/uifzOY3W0BlUymU4NF/Jr1gvrZNVpLkqaoyKHLfOm4wnDxV6nVrKWl+A== X-OriginatorOrg: bluetreble.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Oct 2016 23:53:21.9892 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1643 X-Pg-Spam-Score: -1.9 (-) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org On 9/26/16 9:10 PM, Tomas Vondra wrote: > Attached is v2 of the patch, updated based on the review. That means: + /* make sure the block can store at least one chunk (with 1B for a bitmap)? */ (and the comment below it) I find the question to be confusing... I think these would be better as + /* make sure the block can store at least one chunk (with 1B for a bitmap) */ and + /* number of chunks can we fit into a block, including header and bitmap */ I'm also wondering if a 1B freespace bitmap is actually useful. If nothing else, there should probably be a #define for the initial bitmap size. + /* otherwise add it to the proper freelist bin */ Looks like something went missing... :) Should zeroing the block in SlabAlloc be optional like it is with palloc/palloc0? + /* + * If there are no free chunks in any existing block, create a new block + * and put it to the last freelist bucket. + */ + if (set->minFreeCount == 0) Couldn't there be blocks that have a free count > minFreeCount? (In which case you don't want to just alloc a new block, no?) Nevermind, after reading further down I understand what's going on. I got confused by "we've decreased nfree for a block with the minimum count" until I got to the part that deals with minFreeCount = 0. I think it'd be helpful if the "we've decreased nfree" comment mentioned that if nfree is 0 we'll look for the correct value after updating the freelists. + block->bitmapptr[idx/8] |= (0x01 << (idx % 8)); Did you consider using a pre-defined map of values to avoid the shift? I know I've seen that somewhere in the code... Patch 2... Doesn't GenSlabReset() need to actually free something? If the call magically percolates to the other contexts it'd be nice to note that in the comment. -- Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX Experts in Analytics, Data Architecture and PostgreSQL Data in Trouble? Get it in Treble! http://BlueTreble.com 855-TREBLE2 (855-873-2532) mobile: 512-569-9461 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers