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 1ujMm3-006g34-PG for pgsql-performance@arkaria.postgresql.org; Tue, 05 Aug 2025 18:52:36 +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 1ujMm0-00B9fb-V2 for pgsql-performance@arkaria.postgresql.org; Tue, 05 Aug 2025 18:52:32 +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.94.2) (envelope-from ) id 1ujMm0-00B9fP-8g for pgsql-performance@lists.postgresql.org; Tue, 05 Aug 2025 18:52:32 +0000 Received: from mail-yw1-x112b.google.com ([2607:f8b0:4864:20::112b]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1ujMlx-000vH1-0J for pgsql-performance@lists.postgresql.org; Tue, 05 Aug 2025 18:52:31 +0000 Received: by mail-yw1-x112b.google.com with SMTP id 00721157ae682-71840959355so2184427b3.1 for ; Tue, 05 Aug 2025 11:52:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joeconway.com; s=google; t=1754419947; x=1755024747; darn=lists.postgresql.org; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=uWH1Ck/yEQxaa+ZAFRjRC7fIjp1+A5MOr6hbwDbW6Q4=; b=L+bWBgOZclLcQa8okkn2ydgkrFyxnzg7Cj30DkIZ3ZjZxx40ts6GZQ4+ePB5IrLU88 9Y+0B1bX721VLSKjW38UDYCLrKtJizc8E5IrMTaD9d7wJnb4BZ907JZHIBwqO76NeqZO romgLD1L3UtIC6jegDjWjVl2iiC3VMwq9dc8yZd7kKM/RSkFO+NJNkwDbf6bzUEGukOR lBKfD4j6MUdRddJrZAFMMiZp37W7AHnyF75x3TsZw+ff4oGsPljIio6f2lqrot9Ir8xX ikKR6mk/s0pTVM6TNPo7h3RSaVWXYvkxeiD2hWGEAF/M9P/GixEDin8GZSt50utFiDMP cRiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754419947; x=1755024747; h=content-transfer-encoding:in-reply-to:autocrypt:from :content-language:references:to:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=uWH1Ck/yEQxaa+ZAFRjRC7fIjp1+A5MOr6hbwDbW6Q4=; b=veKWMLa4ycw3YwCevRHh+RW0SYeBt7KQgbj7nvca7JpyJ/ssClVZ5Fl1M0qeyxxBSx pivw4dtd3JrL+bxa5u5HKM105+pHtViKJ63CCeIexI6qUHcIAui+xDFXwA/KtGeSX8N/ 7502dr9FYJhh6+pbJE54mQz7PUPqtHKZ8Crt+oKdyHRp3UctShlA7copI6Gq8+0kf4Bl rcHxvdoFVeQI+LjkxNkH1Jgcoyl6ivB42/zO4Z4n+WxaUjfbNeJtKZ6LZlnjJIAKi816 s4terFRkS196v09vuNEVjhU/GQLjxLRr4yvdvhXfjkjv8OiQClzWNy3DUw1rtSaioAGf tnmQ== X-Forwarded-Encrypted: i=1; AJvYcCVgraAmrOkPx4VRNCBOzrckxTDGfN0EvSxd4fed8B19pL7C1PjJmrkvvpcwqLPBosnnSTJr4QUdTsDkvM+TVz1Xxg==@lists.postgresql.org X-Gm-Message-State: AOJu0YwcYbgsc/SGfSTSOQZL6cuxmEVIOdMpNmWRpzsDh7Lp24eLdsFe 3X1rpzBTM4k8XbvSrfvycOyFlIcZrLkLftxuQ/T+13wYk/v/Bghkdo2eLcxFDrIRbCs= X-Gm-Gg: ASbGncuZWOt6h9d4sxBk7d4hIL8N0MgBhHdwhhgo7Q5CadFIOzV2rqgtflg84XbJn/Y 0iWN4tpk2QbRXwr4uzo4eXDm6WBrh+y7k4KhKs8ZHiZhAhOWBtOJt4VRb2h7BS0VvP8Gz3iVtW/ 6eGRqy6Zf/ySTMASPol50JUMOU88Vi22C2PgvG6/9KLEJ2EOTugIKVVsGWF4l2wiQSQQAjG5NfF aUz3s75TOvDDsWzWULNiXr2vp2AUKItXb0XFZTUjLV/LKWceXJXU21yQJlNhvuzs3uF9QTI28Fo WArYg+fJXTS2joGfF6ldHXOk5hZXEyUUr/+X9OBopIP6NM5xPocCc3KU3LWoUr80VGl8rZFauwO 3lJV8UBX0hrKoYQhuG9WB32UJdpzAWpZLoVAJl9eRjIS/J/6/8na9XIOTd2KvvoPaPDLUbvC/Y2 oVTw== X-Google-Smtp-Source: AGHT+IE98yi93pjdBJGNft9ZJNWtEvLIfx3rNGjiByfqWtiYA3AnKjKQ4xdWnj/WQX0iqnhN5xe4EQ== X-Received: by 2002:a05:690c:6f93:b0:70e:7f7f:cfda with SMTP id 00721157ae682-71bca97743dmr230927b3.10.1754419946965; Tue, 05 Aug 2025 11:52:26 -0700 (PDT) Received: from [192.168.4.41] (162-239-31-113.lightspeed.dybhfl.sbcglobal.net. [162.239.31.113]) by smtp.gmail.com with ESMTPSA id 00721157ae682-71b5a5982f0sm34150327b3.59.2025.08.05.11.52.25 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 05 Aug 2025 11:52:26 -0700 (PDT) Message-ID: <3633df47-5693-4871-9e12-bfbb68dd3313@joeconway.com> Date: Tue, 5 Aug 2025 14:52:25 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Safe vm.overcommit_ratio for Large Multi-Instance PostgreSQL Fleet To: Priya V , pgsql-performance@lists.postgresql.org References: Content-Language: en-US From: Joe Conway Autocrypt: addr=mail@joeconway.com; keydata= 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 In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On 8/5/25 13:01, Priya V wrote: > *Environment:* > *PostgreSQL Versions:* Mix of 13.13 and 15.12 (upgrades in progress > to be at 15.12 currently both are actively in use) PostgreSQL 13 end of life after November 13, 2025 > *OS / Kernel:* RHEL 7 & RHEL 8 variants, kernels in the 4.14–4.18 range RHEL 7 has been EOL for quite a while now. Note that you have to watch out for collation issues/corrupted indexes after OS upgrades due to collations changing with newer glibc versions. > *Swap:* Currently none bad idea > *Workload:* Highly mixed — OLTP-style internal apps with > unpredictable query patterns and connection counts > > *Goal:* Uniform, safe memory settings across the fleet to avoid > kernel or database instability > We’re considering: > *|vm.overcommit_memory = 2|* for strict accounting yes > Increasing |vm.overcommit_ratio| from 50 → 80 or 90 to better > reflect actual PostgreSQL usage (e.g., |work_mem| reservations that > aren’t fully used) work_mem does not reserve memory -- it is a maximum that might be used in memory for a particular operation > *Our questions for those running large PostgreSQL fleets:* > 1. > What |overcommit_ratio| do you find safe for PostgreSQL without > causing kernel memory crunches? Read this: https://www.cybertec-postgresql.com/en/what-you-should-know-about-linux-memory-overcommit-in-postgresql/ > 2. > Do you prefer |overcommit_memory = 1| or |= 2| for production stability? Use overcommit_memory = 2 for production stability > 3. > How much swap (if any) do you keep in large-memory servers where > PostgreSQL is the primary workload? Is having swap configured a good > idea or not ? You don't necessary need a large amount of swap, but you definitely should not disable it. Some background on that: https://chrisdown.name/2018/01/02/in-defence-of-swap.html > 4. > Any real-world cases where kernel accounting was too strict or too > loose for PostgreSQL? In my experience the biggest issues are when postgres is running in a memory constrained cgroup. If you want to constrain memory with cgroups, use cgroup v2 (not 1) and use memory.high to constrain it, not memory.max. > 5. What settings to go with if we are not planning on using swap ? IMHO do not disable swap on Linux, at least not on production, ever. > We’d like to avoid both extremes: > Too low a ratio → PostgreSQL backends failing allocations even with > free RAM Have you actually seen this or are you theorizing? > Too high a ratio → OOM killer terminating PostgreSQL under load spikes If overcommit_memory = 2, overcommit_ratio is reasonable (less than 100, maybe 80 or so as you suggested), and swap is not disabled, and you are not running in a memory constrained cgroup, I would be very surprised if you will ever get hit by the OOM killer. And if you do, things are so bad the database was probably dying anyway. HTH, -- Joe Conway PostgreSQL Contributors Team Amazon Web Services: https://aws.amazon.com