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 1vgrOG-005aoE-1V for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Jan 2026 21:29:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vgrOE-005A2S-1R for pgsql-hackers@arkaria.postgresql.org; Fri, 16 Jan 2026 21:29:54 +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.96) (envelope-from ) id 1vgrOD-005A2K-2x for pgsql-hackers@lists.postgresql.org; Fri, 16 Jan 2026 21:29:54 +0000 Received: from relay8-d.mail.gandi.net ([217.70.183.201]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vgrOB-000p0q-0b for pgsql-hackers@lists.postgresql.org; Fri, 16 Jan 2026 21:29:53 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 537E942F7E; Fri, 16 Jan 2026 21:29:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vondra.me; s=gm1; t=1768598988; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=fyHk4m7LR7Nl4CCGPlmrvD8VXWv/lYsC5P9s3HZitIg=; b=YlMmKrlkGd3m8l92G7aNre8yT+8zwor7twEFAqfyOw53W5h6KHB7ndS174v5teQTJMHBna FoURIRBWFMYj0zmEXDQY6sqshZ84/LCU9x3unoALeoOhd/yt6V8PHHLEOnjUCvkC4MtrXC J7fxR69TKLeJ7XDaRbTz3Qh/YT/ivlaOjsIZVzJpuPEwfAj9DlVqweSwYO7O86DPb+RKPK RMsXaW6Edt9Fn0/Ch07yVmsDq+rKI+ujwUpiyC9YhMseqGbEF9R7E745sspUfw7kXGIzih YaKCD3LDtSAoUOyqXsLtbNmbK5sfM+ryblh9YWAgNIrQBdYf00pjnSikfyDQZA== Content-Type: multipart/mixed; boundary="------------ydLLfOKUmI7aIkNgXwvkqQZr" Message-ID: Date: Fri, 16 Jan 2026 22:29:47 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: failed NUMA pages inquiry status: Operation not permitted To: Jakub Wartak Cc: Christoph Berg , pgsql-hackers@lists.postgresql.org References: <54329add-59b6-4c08-96f0-a025a7804174@vondra.me> <4ff9578d-1de2-45c1-98c4-29caf99334ff@vondra.me> <183fe9ab-6010-4cca-b648-1deca332ce2a@vondra.me> Content-Language: en-US From: Tomas Vondra In-Reply-To: X-GND-Sasl: tomas@vondra.me X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefgedrtddtgddufedttddvucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpegtkfffgggfuffvvehfhfgjsehmtderredtvdejnecuhfhrohhmpefvohhmrghsucggohhnughrrgcuoehtohhmrghssehvohhnughrrgdrmhgvqeenucggtffrrghtthgvrhhnpeekudfhgfelgefhjedtheelhffgudegjedufefftedutdehlefhjeeftdevieefieenucfkphepkeeirdegledrvdeftddrvddtieenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeekiedrgeelrddvfedtrddvtdeipdhhvghloheplgdutddrudefjedrtddrvdgnpdhmrghilhhfrhhomhepthhomhgrshesvhhonhgurhgrrdhmvgdpqhhiugepheefjefgleegvdfhjefgpdhmohguvgepshhmthhpohhuthdpnhgspghrtghpthhtohepfedprhgtphhtthhopehjrghkuhgsrdifrghrthgrkhesvghnthgvrhhprhhishgvuggsrdgtohhmpdhrtghpthhtohepmhihohhnseguvggsihgrnhdrohhrghdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehlihhsthhsrdhpohhsthhgrhgvshhqlhdrohhrgh X-GND-State: clean X-GND-Score: -100 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. --------------ydLLfOKUmI7aIkNgXwvkqQZr Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, Here's WIP fix for the root cause, i.e. handling status -2 in the two views querying NUMA node for memory pages: * pg_shmem_allocations_numa * pg_buffercache_numa We can't prevent -2 from happening - the kernel can move arbitrary pages to swap, we have no control over it. So I think we need to handle -2 as "unknown" node, instead of failing. The patch simply returns NULL instead of the node, but in principle we might return some other value (but IMHO we should not return the raw status, the -2 makes no sense in our context, it's some internal kernel errno). The pg_buffercache_numa was not failing, it just returned the -2 status verbatim. But I modified it to return NULL, for consistency. AFAIK this will fix the regression tests too - they only check COUNT(*), not the actual values. I'm not sure if we need to mention this in the docs. It probably should mention the column can be NULL, which means "unknown node". regards -- Tomas Vondra --------------ydLLfOKUmI7aIkNgXwvkqQZr Content-Type: text/x-patch; charset=UTF-8; name="0001-Handle-ENOENT-status-when-querying-NUMA-node.patch" Content-Disposition: attachment; filename="0001-Handle-ENOENT-status-when-querying-NUMA-node.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZWEwZDgyYTFjNzJmMWZjYmY4MzRjZmE1YTc5MTNmY2UwNzc4YWM4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogRnJpLCAxNiBKYW4gMjAyNiAyMTo1NTowMiArMDEwMApTdWJqZWN0OiBbUEFUQ0hd IEhhbmRsZSBFTk9FTlQgc3RhdHVzIHdoZW4gcXVlcnlpbmcgTlVNQSBub2RlCgpXZSd2ZSBh c3N1bWVkIHRoYXQgdG91Y2hpbmcgdGhlIG1lbW9yeSBpcyBzdWZmaWNpZW50IGZvciBhIHBh Z2UgdG8gYmUKbG9jYXRlZCBvbiBvbmUgb2YgdGhlIE5VTUEgbm9kZXMuIEJ1dCB0aGF0J3Mg bm90IHF1aXRlIHRydWUsIGJlY2F1c2UKYSBwYWdlIG1heSBiZSBtb3ZlZCB0byBzd2FwIGFm dGVyIHdlIHRvdWNoIGl0LgoKSXQncyBub3QgaGFyZCB0byBtYWtlIHRoYXQgaGFwcGVuIHdp dGggY29tbWFuZHMgbGlrZSBDUkVBVEUgSU5ERVggKHdoaWNoCnVzZXMgb25seSBhIHNtYWxs IGNpcmN1bGFyIGJ1ZmZlciBpbiBzaGFyZWQgYnVmZmVycywgd2hpbGUgbG9hZGluZyBsYXJn ZQphbW91bnRzIG9mIGRhdGEgaW50byBwYWdlIGNhY2hlKS4gVGhpcyBtZW1vcnkgcHJlc3N1 cmUgbWF5IGZvcmNlIGEKc2lnbmlmaWNhbnQgZnJhY3Rpb24gb2Ygc2hhcmVkIGJ1ZmZlcnMg dG8gc3dhcC4KCldlIHRvdWNoIHRoZSBtZW1vcnkgYmVmb3JlIHF1ZXJ5aW5nIHRoZSBzdGF0 dXMsIGJ1dCB0aGVyZSBpcyBubwpndWFyYW5nZWUgaXQgd29uJ3QgYmUgbW92ZWQgdG8gc3dh cCBpbiBiZXR3ZWVuLiBXZSBkbyB0aGUgdG91Y2hpbmcgb25seQpkdXJpbmcgdGhlIGZpcnN0 IGNhbGwsIHNvIGxhdGVyIGNhbGxzIGFyZSBtb3JlIGxpa2VseSB0byBiZSBhZmZlY3RlZC4K ClRoaXMgb25seSBoYXBwZW5zIHdpdGggcmVndWxhciBtZW1vcnkgcGFnZXMgKGUuZy4gNEsp LiBIdWdlcGFnZXMgY2Fubm90CmJlIHN3YXBwZWQgb3V0IHVuZGVyIG1lbW9yeSBwcmVzc3Vy ZS4KCldlIGNhbid0IHByZXZlbnQgdGhpcyAtIGl0J3MgdXAgdG8gdGhlIGtlcm5lbCB0byBt b3ZlIHBhZ2VzIHRvIHN3YXAuClRoZXJlZm9yZSwgd2UgaGF2ZSB0byBhY2NlcHQgRU5PRU5U ICgtMikgc3RhdHVzIGFzIGEgdmFsaWQgcmVzdWx0LCBhbmQKaGFuZGxlIGl0IHdpdGhvdXQg ZmFpbGluZy4gVGhpcyBwYXRjaCBzaW1wbHkgdHJlYXRzIC0yIGFzIHVua25vd24gbm9kZSwK YW5kIHJldHVybnMgTlVMTCBpbiB0aGUgdHdvIGFmZmVjdGVkIHZpZXdzIChwZ19zaG1lbV9h bGxvY2F0aW9uc19udW1hCmFuZCBwZ19idWZmZXJjYWNoZV9udW1hKS4KClJlcG9ydGVkIGJ5 IENocmlzdG9waCBCZXJnLCBpbnZlc3RpZ2F0aW9uIGFuZCBmaXggYnkgbWUuIEJhY2twYXRj aCB0bwoxOCwgd2hlcmUgdGhlIHR3byB2aWV3cyB3ZXJlIGludHJvZHVjZWQuCgpSZXBvcnRl ZC1ieTogQ2hyaXN0b3BoIEJlcmcgPG15b25AZGViaWFuLm9yZz4KRGlzY3Vzc2lvbjogMTgK QmFja3BhdGNoLXRocm91Z2g6IGh0dHBzOi8vcG9zdGdyLmVzL20vYVRxNUd0X24tb1NfUVNw TEBtc2cuZGY3Y2IuZGUKLS0tCiBjb250cmliL3BnX2J1ZmZlcmNhY2hlL3BnX2J1ZmZlcmNh Y2hlX3BhZ2VzLmMgfCAxMiArKysrKy0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1l bS5jICAgICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysrKystLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv Y29udHJpYi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jIGIvY29udHJp Yi9wZ19idWZmZXJjYWNoZS9wZ19idWZmZXJjYWNoZV9wYWdlcy5jCmluZGV4IGRjYmEzZmI1 NDczLi45ZmYwZWI0YjBhMCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19idWZmZXJjYWNoZS9w Z19idWZmZXJjYWNoZV9wYWdlcy5jCisrKyBiL2NvbnRyaWIvcGdfYnVmZmVyY2FjaGUvcGdf YnVmZmVyY2FjaGVfcGFnZXMuYwpAQCAtNTUxLDggKzU1MSwxNiBAQCBwZ19idWZmZXJjYWNo ZV9vc19wYWdlc19pbnRlcm5hbChGdW5jdGlvbkNhbGxJbmZvIGZjaW5mbywgYm9vbCBpbmNs dWRlX251bWEpCiAKIAkJaWYgKGZjdHgtPmluY2x1ZGVfbnVtYSkKIAkJewotCQkJdmFsdWVz WzJdID0gSW50MzJHZXREYXR1bShmY3R4LT5yZWNvcmRbaV0ubnVtYV9ub2RlKTsKLQkJCW51 bGxzWzJdID0gZmFsc2U7CisJCQkvKiBzdGF0dXMgaXMgdmFsaWQgbm9kZSBudW1iZXIgKi8K KwkJCWlmIChmY3R4LT5yZWNvcmRbaV0ubnVtYV9ub2RlID49IDApCisJCQl7CisJCQkJdmFs dWVzWzJdID0gSW50MzJHZXREYXR1bShmY3R4LT5yZWNvcmRbaV0ubnVtYV9ub2RlKTsKKwkJ CQludWxsc1syXSA9IGZhbHNlOworCQkJfSBlbHNlIHsKKwkJCQkvKiBzb21lIGtpbmQgb2Yg ZXJyb3IgKGUuZy4gcGFnZXMgbW92ZWQgdG8gc3dhcCkgKi8KKwkJCQl2YWx1ZXNbMl0gPSAo RGF0dW0pIDA7CisJCQkJbnVsbHNbMl0gPSB0cnVlOworCQkJfQogCQl9CiAJCWVsc2UKIAkJ ewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggZDJmNDcxMGYxNDEuLjFiNTM2MzYz MTUyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTU5OSw3ICs1OTksNyBAQCBw Z19nZXRfc2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElPTl9BUkdTKQogCUluaXRN YXRlcmlhbGl6ZWRTUkYoZmNpbmZvLCAwKTsKIAogCW1heF9ub2RlcyA9IHBnX251bWFfZ2V0 X21heF9ub2RlKCk7Ci0Jbm9kZXMgPSBwYWxsb2NfYXJyYXkoU2l6ZSwgbWF4X25vZGVzICsg MSk7CisJbm9kZXMgPSBwYWxsb2NfYXJyYXkoU2l6ZSwgbWF4X25vZGVzICsgMik7CiAKIAkv KgogCSAqIFNoYXJlZCBtZW1vcnkgYWxsb2NhdGlvbnMgY2FuIHZhcnkgaW4gc2l6ZSBhbmQg bWF5IG5vdCBhbGlnbiB3aXRoIE9TCkBAIC02MzUsNyArNjM1LDYgQEAgcGdfZ2V0X3NobWVt X2FsbG9jYXRpb25zX251bWEoUEdfRlVOQ1RJT05fQVJHUykKIAloYXNoX3NlcV9pbml0KCZo c3RhdCwgU2htZW1JbmRleCk7CiAKIAkvKiBvdXRwdXQgYWxsIGFsbG9jYXRlZCBlbnRyaWVz ICovCi0JbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKIAl3aGlsZSAoKGVudCA9 IChTaG1lbUluZGV4RW50ICopIGhhc2hfc2VxX3NlYXJjaCgmaHN0YXQpKSAhPSBOVUxMKQog CXsKIAkJaW50CQkJaTsKQEAgLTY4NCwyMiArNjgzLDMzIEBAIHBnX2dldF9zaG1lbV9hbGxv Y2F0aW9uc19udW1hKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQllbG9nKEVSUk9SLCAiZmFpbGVk IE5VTUEgcGFnZXMgaW5xdWlyeSBzdGF0dXM6ICVtIik7CiAKIAkJLyogQ291bnQgbnVtYmVy IG9mIE5VTUEgbm9kZXMgdXNlZCBmb3IgdGhpcyBzaGFyZWQgbWVtb3J5IGVudHJ5ICovCi0J CW1lbXNldChub2RlcywgMCwgc2l6ZW9mKFNpemUpICogKG1heF9ub2RlcyArIDEpKTsKKwkJ bWVtc2V0KG5vZGVzLCAwLCBzaXplb2YoU2l6ZSkgKiAobWF4X25vZGVzICsgMikpOwogCiAJ CWZvciAoaSA9IDA7IGkgPCBzaG1fZW50X3BhZ2VfY291bnQ7IGkrKykKIAkJewogCQkJaW50 CQkJcyA9IHBhZ2VzX3N0YXR1c1tpXTsKIAogCQkJLyogRW5zdXJlIHdlIGFyZSBhZGRpbmcg b25seSB2YWxpZCBpbmRleCB0byB0aGUgYXJyYXkgKi8KLQkJCWlmIChzIDwgMCB8fCBzID4g bWF4X25vZGVzKQorCQkJaWYgKHMgPj0gMCAmJiBzIDw9IG1heF9ub2RlcykKKwkJCXsKKwkJ CQkvKiB2YWxpZCBOVU1BIG5vZGUgKi8KKwkJCQlub2Rlc1tzXSsrOworCQkJCWNvbnRpbnVl OworCQkJfQorCQkJZWxzZSBpZiAocyA9PSAtMikKIAkJCXsKLQkJCQllbG9nKEVSUk9SLCAi aW52YWxpZCBOVU1BIG5vZGUgaWQgb3V0c2lkZSBvZiBhbGxvd2VkIHJhbmdlICIKLQkJCQkJ ICJbMCwgIiBVSU5UNjRfRk9STUFUICJdOiAlZCIsIG1heF9ub2Rlcywgcyk7CisJCQkJLyog LTIgbWVhbnMgRU5PRU5UIChlLmcuIHBhZ2Ugd2FzIG1vdmVkIHRvIHN3YXApICovCisJCQkJ bm9kZXNbbWF4X25vZGVzICsgMV0rKzsKKwkJCQljb250aW51ZTsKIAkJCX0KIAotCQkJbm9k ZXNbc10rKzsKKwkJCWVsb2coRVJST1IsICJpbnZhbGlkIE5VTUEgbm9kZSBpZCBvdXRzaWRl IG9mIGFsbG93ZWQgcmFuZ2UgIgorCQkJCSAiWzAsICIgVUlOVDY0X0ZPUk1BVCAiXTogJWQi LCBtYXhfbm9kZXMsIHMpOwogCQl9CiAKKwkJLyogbm8gTlVMTHMgZm9yIHJlZ3VsYXIgbm9k ZXMgKi8KKwkJbWVtc2V0KG51bGxzLCAwLCBzaXplb2YobnVsbHMpKTsKKwogCQkvKgogCQkg KiBBZGQgb25lIGVudHJ5IGZvciBlYWNoIE5VTUEgbm9kZSwgaW5jbHVkaW5nIHRob3NlIHdp dGhvdXQgYWxsb2NhdGVkCiAJCSAqIG1lbW9yeSBmb3IgdGhpcyBzZWdtZW50LgpAQCAtNzEz LDYgKzcyMywxNCBAQCBwZ19nZXRfc2htZW1fYWxsb2NhdGlvbnNfbnVtYShQR19GVU5DVElP Tl9BUkdTKQogCQkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMocnNpbmZvLT5zZXRSZXN1bHQsIHJz aW5mby0+c2V0RGVzYywKIAkJCQkJCQkJIHZhbHVlcywgbnVsbHMpOwogCQl9CisKKwkJLyog VGhlIGxhc3QgZW50cnkgaXMgdXNlZCBmb3IgcGFnZXMgd2l0aG91dCBhIE5VTUEgbm9kZS4g Ki8KKwkJbnVsbHNbMV0gPSB0cnVlOworCQl2YWx1ZXNbMF0gPSBDU3RyaW5nR2V0VGV4dERh dHVtKGVudC0+a2V5KTsKKwkJdmFsdWVzWzJdID0gSW50NjRHZXREYXR1bShub2Rlc1ttYXhf bm9kZXMgKyAxXSAqIG9zX3BhZ2Vfc2l6ZSk7CisKKwkJdHVwbGVzdG9yZV9wdXR2YWx1ZXMo cnNpbmZvLT5zZXRSZXN1bHQsIHJzaW5mby0+c2V0RGVzYywKKwkJCQkJCQkgdmFsdWVzLCBu dWxscyk7CiAJfQogCiAJTFdMb2NrUmVsZWFzZShTaG1lbUluZGV4TG9jayk7Ci0tIAoyLjUy LjAKCg== --------------ydLLfOKUmI7aIkNgXwvkqQZr--