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 1uePTk-009VVu-9I for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Jul 2025 02:45:12 +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 1uePTh-00H4Ca-I5 for pgsql-hackers@arkaria.postgresql.org; Wed, 23 Jul 2025 02:45:09 +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 1uePTh-00H4CR-3I for pgsql-hackers@lists.postgresql.org; Wed, 23 Jul 2025 02:45:09 +0000 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1uePTf-000JHc-0d for pgsql-hackers@postgresql.org; Wed, 23 Jul 2025 02:45:08 +0000 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-30687111693so234191fac.0 for ; Tue, 22 Jul 2025 19:45:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1753238706; x=1753843506; darn=postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=yTxFyBBthwGsG50/70ctRyBgX70Yy9NlqQoiSgW5clA=; b=WONdb31X0IR0ubtVNMQFs91cn3t0/O9HBXaYOmCNMP1AGcD0x2CREFP24QO5u3Lchn WzI1xO/MBpOAvD6UgRYN6REDqtmKHhSjGTqKMMk5vU4qFugYA6EHvLz8PrkVaKvh1UPw RPpfX898usWqzRqHh7VdQGPmEWdJSlyFAyIUVRnD4cBveQYU9tujyvpYJBkPvopLUbGv LcjGPGTzTP0zgWJ+eVO8zv0kOn2OYuX4kB2qd6QdJcmMFb9PodUVqu1kfr1QZJ6jhhED 50Dr57vQtNko6cwT8qmunKoArGCE58jcME1I/jWpqo5DqBvyPa+6CxwUz+HyG//iqO/1 urGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1753238706; x=1753843506; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=yTxFyBBthwGsG50/70ctRyBgX70Yy9NlqQoiSgW5clA=; b=pLTsuKJFfKtfatlTpH9SSBNez0WF45uOSfPeFsDKgCfAMA0CXPA5J3f9EBJXbv+TVv lIbBGYpcDCePMoQfkgHV6iAMzZ8sT1pHW94drzxNIizU1FRuhaSfitq6oBhdF/QBfjeS 2SGWF4dAhext93WxSjhdvSCe+lwOCPJ9nwlCGzfZS4pZzm5RYKjo6Qa7Ar+Ri1cPpYTO vSDmE5yRuBOTrI8RF4GnKCEakkvb+QaKitTkIO7unwY6ZA63ykzOuNzWUefwU0d+xKNP UOgQiZej6zej1IYlYdvI+c6n+D+/15Z1uDT2z3YN4KWK22pKJd6e1djO4RiuwPLYmqOW zwmg== X-Gm-Message-State: AOJu0Yz8fxbIS56PcYJcoZma0WyaEyPaRHxm9p+H6Fvut5AMZ/9sT95F Y2CFFJDKlHNddoxcLhee7fgF3KE+4c09GG/9rtc3F4wS7jgX7qCEYFMIryDnxQjfqJZ+qD9w6dr 8guogLW2fZuNzlbAwplQieZReioI32Hw= X-Gm-Gg: ASbGncsoyKb7Bu+YLGOltPEGwZy4Y1cfr59ndSC2FtAHpFGXn3/AltEvNG6R99AzZp3 vmC4SKi7L2vg6RNwk+9LLevpgqQ1+dIlyeDqXGi45CTIxrpthEJFWaZ+hW5FfnQ3j7TOCRoMNDn mF81MsIf9hdKaZS1BTQyLJkPyDHQB3QnvRxoQLqG1DBuRtqrE+xb92k3sNGyYuS2tI+2c9tzL+y JTB6T2w4jJO7HuZ2BEUEuHbu5H/5uqICfNT0ppOLg== X-Google-Smtp-Source: AGHT+IGid5ClH7EcmGk5vUQ0iQMhxp4zdLkYpO9qVq7+W8wi9HQTDxpxovafjSlzAyhN/3KLvUI9l0vsxXjAYMdVfu8= X-Received: by 2002:a05:6870:71ce:b0:2e3:8acd:d48e with SMTP id 586e51a60fabf-306c7228d01mr290490fac.9.1753238705562; Tue, 22 Jul 2025 19:45:05 -0700 (PDT) MIME-Version: 1.0 References: <6899c044-4a82-49be-8117-e6f669765f7e@app.fastmail.com> <165530.1752362320@sss.pgh.pa.us> <02a7cd37-e2fc-4212-8b19-f8c239c95fb8@app.fastmail.com> <96f00bf1-cc9d-4520-9d02-9e14e7767c88@app.fastmail.com> <30c2aa7d-dd6c-4b68-a2e4-f217a1a34acf@app.fastmail.com> In-Reply-To: <30c2aa7d-dd6c-4b68-a2e4-f217a1a34acf@app.fastmail.com> From: Thomas Munro Date: Wed, 23 Jul 2025 14:44:29 +1200 X-Gm-Features: Ac12FXyZgNMzAvTn_jF07q0wSXBFnUeiNyiGM369IQvu0ZVxoNf3El31M5rUh7U Message-ID: Subject: Re: Optimize LISTEN/NOTIFY To: Joel Jacobson Cc: pgsql-hackers , Heikki Linnakangas , Rishu Bagga Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Wed, Jul 23, 2025 at 1:39=E2=80=AFPM Joel Jacobson w= rote: > In their patch, in asyn.c's SignalBackends(), they do > SendInterrupt(INTERRUPT_ASYNC_NOTIFY, procno) instead of > SendProcSignal(pid, PROCSIG_NOTIFY_INTERRUPT, procnos[i]). They don't > seem to check if the backend is already signalled or not, but maybe > SendInterrupt() has signal coalescing built-in so it would be a noop > with almost no cost? Yeah: + old_pending =3D pg_atomic_fetch_or_u32(&proc->pendingInterrupts, interrup= tMask); + + /* + * If the process is currently blocked waiting for an interrupt to arrive, + * and the interrupt wasn't already pending, wake it up. + */ + if ((old_pending & (interruptMask | SLEEPING_ON_INTERRUPTS)) =3D=3D SLEEPING_ON_INTERRUPTS) + WakeupOtherProc(proc);