From nobody Mon Feb 28 14:07:18 2022 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id AEF6019D89A8; Mon, 28 Feb 2022 14:07:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4K6hyt49kNz4f21; Mon, 28 Feb 2022 14:07:18 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1646057238; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Bf8Q9rkQmqFdawfQ/Uktt2T4MA2lrMjzKQqUM9lDMvo=; b=pffCc2nKzhyXS94iSQUfKbbISIQXq0YLJHl1skSNqtTkkTmDmdRbbvCRXqX+z7HfQz4/+x azDc4TGANNFyLMjxNmcryhnABA66cT7D5pBG1eNYhknwj53/ct9/iHHGct+kGy+jijxWvg R2cHy+sEV/a7QCsgMZr0QNK24/fZXfMwe+HJFvHDfhc4FaRxxwfTShxvJehL+YmeH9QjAZ twGTOdKOfGVUH02P7jbNsjfD4DVjbUZ8QazfFHRxxd/YXNsON1BSNmpi6jd9e1sLkt77eI zMHNRyWSVa++pHcUg+WUplw2iGPHwB9p3YrsjRTKfAfkfPUf8f/VSchZqvWEjA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 6F32E1CC3C; Mon, 28 Feb 2022 14:07:18 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 21SE7I2q064256; Mon, 28 Feb 2022 14:07:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 21SE7I4V064255; Mon, 28 Feb 2022 14:07:18 GMT (envelope-from git) Date: Mon, 28 Feb 2022 14:07:18 GMT Message-Id: <202202281407.21SE7I4V064255@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Mark Johnston Subject: git: 13ba1d283676 - stable/13 - vm_pageout: Print a more accurate message to the console before an OOM kill List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 13ba1d2836762d09f338158372806b90ce3d63ba Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1646057238; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Bf8Q9rkQmqFdawfQ/Uktt2T4MA2lrMjzKQqUM9lDMvo=; b=iJ0P0KhN/zlRrjEjtN1r6bUz7Szao/GkSEY7EolcMM/igX0ppHY1ZFHEC7ZsLT56ecZDEx dJMOxW6ruF7y6X4d615UGA8feGTdayCviqDkPUScKYueQXfJpmk0/eJ2tsCwes1TuWdd8g ub+VCyz3Ja0DahwH5hyQfUxZY0QvDO9X5L5+0Qt9MNyOSPJ48kSE/shmBXmtDwdVl6TFI8 vv9uxsYNwNbFFcxPJsue1OBmKx6aM2CthimC+HpeUTrF/xHVapilOgNK3fnY0pBBXCgOwh ja1y/svV0gC9hVSbRTqZZHFj6uTzqn8K1JrsFqEYtqa8gQolRJbs5V4f7i5Vew== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1646057238; a=rsa-sha256; cv=none; b=judTgbYiqESXMcIJvVq9UOCbAOmmCh0fcd6umLKFG0m55gVThH56su9cSUm+55B9eM0WL7 MkjL2Al4asBmz3IHmRMqAbgYJKR5ExiNXnPP13VomcDmnqtAJoZ8BHgTX+u3rWJA/z2Vjw gOoNUM3NXK0nlxelETIQznJ2AKa58TrUouSXZW5cf7PoJ202RM5Muulvsrs2nmJsGKlMbD zgXr1VyFWwAjXC8Ee9lo+JCpR42NpSqjulvK+Ez5lXr6jgVXoXwyQ2VZ8vmeZD7xyJzopp ph4y1OLwpVBD8Eh0r8jzuqnisMjRfc9JM75cf4m5MZzLF6+CGr+Pso8YyOmSEg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=13ba1d2836762d09f338158372806b90ce3d63ba commit 13ba1d2836762d09f338158372806b90ce3d63ba Author: Mark Johnston AuthorDate: 2022-01-14 20:03:53 +0000 Commit: Mark Johnston CommitDate: 2022-02-28 14:06:58 +0000 vm_pageout: Print a more accurate message to the console before an OOM kill Previously we'd always print "out of swap space." This can be misleading, as there are other reasons an OOM kill can be triggered. In particular, it's entirely possible to trigger an OOM kill on a system with plenty of free swap space. Reviewed by: kib Sponsored by: The FreeBSD Foundation (cherry picked from commit 4a864f624a7097f1d032a0350ac70fa6c371179e) --- sys/vm/vm_pageout.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/sys/vm/vm_pageout.c b/sys/vm/vm_pageout.c index 899d35cd43b6..36d5f3275800 100644 --- a/sys/vm/vm_pageout.c +++ b/sys/vm/vm_pageout.c @@ -1902,6 +1902,7 @@ static struct mtx vm_oom_ratelim_mtx; void vm_pageout_oom(int shortage) { + const char *reason; struct proc *p, *bigproc; vm_offset_t size, bigsize; struct thread *td; @@ -2014,11 +2015,25 @@ vm_pageout_oom(int shortage) } } sx_sunlock(&allproc_lock); + if (bigproc != NULL) { + switch (shortage) { + case VM_OOM_MEM: + reason = "failed to reclaim memory"; + break; + case VM_OOM_MEM_PF: + reason = "a thread waited too long to allocate a page"; + break; + case VM_OOM_SWAPZ: + reason = "out of swap space"; + break; + default: + panic("unknown OOM reason %d", shortage); + } if (vm_panic_on_oom != 0 && --vm_panic_on_oom == 0) - panic("out of swap space"); + panic("%s", reason); PROC_LOCK(bigproc); - killproc(bigproc, "out of swap space"); + killproc(bigproc, reason); sched_nice(bigproc, PRIO_MIN); _PRELE(bigproc); PROC_UNLOCK(bigproc);