From owner-freebsd-arm@freebsd.org Tue Mar 24 17:09:58 2020 Return-Path: Delivered-To: freebsd-arm@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id 8F143262278 for ; Tue, 24 Mar 2020 17:09:58 +0000 (UTC) (envelope-from marklmi@yahoo.com) Received: from sonic311-24.consmr.mail.gq1.yahoo.com (sonic311-24.consmr.mail.gq1.yahoo.com [98.137.65.205]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 48myRH1GY7z3Lmt for ; Tue, 24 Mar 2020 17:09:45 +0000 (UTC) (envelope-from marklmi@yahoo.com) X-YMail-OSG: 3NcAURgVM1n4QNtRJ5jV4GwUha.eqDqTIbkHe3yZrhSru9ryUm2hYVMAYEEOhKz X9z8tbQQa53qMY8ZMkOEEZuN7Bj_a1FQE6IV80UsYpfbHHjqVNkXsQudtLiQyyOJQYRBJ2OOo32n R2ThG.fzc3vt4kGDLkEsEQy4cJ4hRaWMwT.MZy0R3fJ78NQHL.oUlcTTuADJpXDcQ0Fnt5u0LkP6 d8rVOEHqVPa2E75nvVF8u6Ok4jrKy0E_5jW_CGn1ZZaSuILzS6B9QaAHcOU7.j2v3NqDv3tovs4W faocyTx0A5rF5e6q_HY_EMzLCnjqWnnGzJJt8QQuNoGFL8lcxqRBFOit1FskzKHVeH_LQ8Z1xbjX v6HSsKPmrub59ZC9S9LCAvE3gVw5o1RxXo1e.DMTGafiIdPpiU6qblaUq9WQvXu5IalNO1.SSRf9 fZSvEd5ofaZ0ovEvCkjufaE4Fec4xAlP64MWvxef1mpS6n50ObCqjvC1G8AO1ARLw0mxqgh6hZ5O Pn3ikBdd8pDc.C.yB.jdfUOu.ZZx3Ke7Ki9xw_R1lyKdqa2Rgo2.9MsLyYFcqfpfVW6mgyBnau1o Log.fUWFcxu7t86vlBSv8BlMwK4oxQ9OaO.xBEkCVDuTFbi_1FcZ3lQNNU_z53DgQ_CyknmqxkwB _PbAdjGtb79_tQ3JNhhP6aGHAKOFAhzOHHLq3yq2FI0lEaYCbyXZwKqfuhWT7IJ_mvCICssgfizQ ZkzQ2M4daTHHyTn8fTXnHVBkoTHOIVnJ4D6avBEgU3E9bW7PwN29MxWnycRjl0m4qOgvyl6rXzIY RVMf12nctLIZlWqjXU7faOZBUAtytBnfPXDD18aHTSjxgWUogxwh8IX73vXGKmRq.HyF6xl5MG3g toDiJd2720ez8gl3Iu5jpfnxjnYR3JPQcchHOVIMno_gF1Fxm.8CpgbHlm2GxHnzKXPwh1ls4PGV bI_ryhomQXR1zHTNQMUE0pLJX9IjZdG5q9LV12y3IjFPlrjj2bUjyidi78.34mZTfeWP5.pNmU5b M6CPKMo.s6CgLX4vrlYwrkUsvlO_HOgO3a0IiEIrFMR5t8tNmvkTxw76QFK7_pRGnNdxoldp4uQV 9uvuAm1fQBNCmTaBEKV8E2SjXmAaNI6QTXBsgdirhJcdK8Tm8DuRgNQglpHCIrJ3FIV9jGGO3r99 1EEchc8qIRzC0TNNndZ3AZK1qQtSBYGTqQ0uEdrVSFKdp2HF40g6hro_b2V1dEqNlIQdaFRaJuxG N3SUYB2Ajpx3F.N7qYYFckA.7fVUWTL9b2Mg5qrFDQUFVRaFObzyl7Hg9dBSy_AOfg5QH.539nqt VhACfHi.QHSubyjOjGkQ5RNARxu8VZHh3wULw2vnKzCvjVFbd8Hbq48hCjE1rrt_1Fro9.ZRIQRE UQL4LvAFJizwrpEWm3Z3SeVXoP0GTPaLC9QTQ452ELFCt9tKNj.x14vad Received: from sonic.gate.mail.ne1.yahoo.com by sonic311.consmr.mail.gq1.yahoo.com with HTTP; Tue, 24 Mar 2020 17:09:35 +0000 Received: by smtp414.mail.ne1.yahoo.com (Oath Hermes SMTP Server) with ESMTPA ID b71740cd43012fc2b0f0e710945367f4; Tue, 24 Mar 2020 17:09:30 +0000 (UTC) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\)) Subject: Re: Belated out of swap kill on rpi3 at r359216 From: Mark Millard In-Reply-To: <20200324155753.GA91922@www.zefox.net> Date: Tue, 24 Mar 2020 10:09:28 -0700 Cc: freebsd-arm@freebsd.org Content-Transfer-Encoding: quoted-printable Message-Id: <83E41A13-6C24-4B56-A837-779044038FBC@yahoo.com> References: <20200324155753.GA91922@www.zefox.net> To: bob prohaska X-Mailer: Apple Mail (2.3608.60.0.2.5) X-Rspamd-Queue-Id: 48myRH1GY7z3Lmt X-Spamd-Bar: - X-Spamd-Result: default: False [-1.53 / 15.00]; TO_DN_SOME(0.00)[]; R_SPF_ALLOW(-0.20)[+ptr:yahoo.com]; FREEMAIL_FROM(0.00)[yahoo.com]; MV_CASE(0.50)[]; DKIM_TRACE(0.00)[yahoo.com:+]; RCPT_COUNT_TWO(0.00)[2]; DMARC_POLICY_ALLOW(-0.50)[yahoo.com,reject]; FROM_EQ_ENVFROM(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; FREEMAIL_ENVFROM(0.00)[yahoo.com]; ASN(0.00)[asn:36647, ipnet:98.137.64.0/21, country:US]; MID_RHS_MATCH_FROM(0.00)[]; DWL_DNSWL_NONE(0.00)[yahoo.com.dwl.dnswl.org : 127.0.5.0]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.45)[-0.451,0]; R_DKIM_ALLOW(-0.20)[yahoo.com:s=s2048]; URIBL_BLOCKED(0.00)[dsl-only.net.multi.uribl.com]; FROM_HAS_DN(0.00)[]; NEURAL_HAM_LONG(-0.58)[-0.583,0]; MIME_GOOD(-0.10)[text/plain]; IP_SCORE(0.00)[ip: (4.47), ipnet: 98.137.64.0/21(0.82), asn: 36647(0.66), country: US(-0.05)]; IP_SCORE_FREEMAIL(0.00)[]; TO_MATCH_ENVRCPT_SOME(0.00)[]; RCVD_IN_DNSWL_NONE(0.00)[205.65.137.98.list.dnswl.org : 127.0.5.0]; RCVD_COUNT_TWO(0.00)[2] X-BeenThere: freebsd-arm@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Porting FreeBSD to ARM processors." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Mar 2020 17:09:58 -0000 On 2020-Mar-24, at 08:57, bob prohaska wrote: > An attempt to buildworld on an rpi3 running r359216 stopped with an > OOMA kill. Sources were at 359264, loader.conf contained > vm.pageout_oom_seq=3D"4096" .=20 What of the value of vm.pfault_oom_attempts ? If vm.pfault_oom_attempts was not -1, what of the value of vm.pfault_oom_wait ? > A snipped of gstat log suggests the worst congestion in the storage = I/O > happened at Tue Mar 24 04:52:26 PDT 2020 with an L(q) of 37, but the > OOMA kill happened at Tue Mar 24 04:53:04 PDT 2020, by which time the > L(q) had dropped to one, half a minute later. >=20 > Is the delay in OOMA action to be expected?=20 >=20 > Here's the relevant part of the log, I hope the columns display = readably: >=20 > 0/2/2/19177 mbuf clusters in use (current/cache/total/max) > procs memory page disks faults = cpu > r b w avm fre flt re pi po fr sr mm0 da0 in sy = cs us sy id > 0 0 29 1897320 47312 12851 9 4 5 13330 1669 0 0 14172 = 8020 3034 65 29 6 > dT: 1.056s w: 1.000s > L(q) ops/s r/s kBps ms/r w/s kBps ms/w d/s kBps = ms/d %busy Name > 37 367 323 5463 6.4 45 1511 76.8 0 0 = 0.0 91.7 mmcsd0 > 37 367 323 5463 6.5 45 1511 76.9 0 0 = 0.0 93.3 mmcsd0s2 > 34 133 111 3209 7.6 22 697 134.7 0 0 = 0.0 74.0 mmcsd0s2a > 3 235 212 2254 5.9 23 814 21.5 0 0 = 0.0 70.0 mmcsd0s2b > 34 133 111 3209 7.6 22 697 134.7 0 0 = 0.0 74.2 ufs/rootfs > Tue Mar 24 04:52:26 PDT 2020 > Device 1K-blocks Used Avail Capacity > /dev/mmcsd0s2b 4404252 224484 4179768 5% > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 21842, size: 12288 > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 25477, size: 4096 How bad were things back when the "indefinate wait buffer" notices were generated (Mar 24 04:20:50 time frame)? > 0/0/0/19177 mbuf clusters in use (current/cache/total/max) > procs memory page disks faults = cpu > r b w avm fre flt re pi po fr sr mm0 da0 in sy = cs us sy id > 3 0 29 1936132 19232 12849 9 4 5 13328 1671 0 0 14173 = 8020 3036 65 29 6 > dT: 1.010s w: 1.000s > L(q) ops/s r/s kBps ms/r w/s kBps ms/w d/s kBps = ms/d %busy Name > 9 323 148 2531 20.7 175 3327 14.6 0 0 = 0.0 97.2 mmcsd0 > 9 323 148 2531 20.8 175 3327 14.6 0 0 = 0.0 98.4 mmcsd0s2 > 2 96 96 1869 16.9 0 0 0.0 0 0 = 0.0 82.9 mmcsd0s2a > 7 227 51 661 28.3 175 3327 14.6 0 0 = 0.0 84.0 mmcsd0s2b > 2 96 96 1869 16.9 0 0 0.0 0 0 = 0.0 83.0 ufs/rootfs > Tue Mar 24 04:52:41 PDT 2020 > Device 1K-blocks Used Avail Capacity > /dev/mmcsd0s2b 4404252 272928 4131324 6% > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 21842, size: 12288 > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 25477, size: 4096 > 0/0/0/19177 mbuf clusters in use (current/cache/total/max) > procs memory page disks faults = cpu > r b w avm fre flt re pi po fr sr mm0 da0 in sy = cs us sy id > 0 0 29 1939940 48016 12849 9 4 5 13328 1676 948 0 14174 = 8019 3037 65 29 6 > dT: 1.001s w: 1.000s > L(q) ops/s r/s kBps ms/r w/s kBps ms/w d/s kBps = ms/d %busy Name > 3 371 151 1989 91.0 221 3847 14.0 0 0 = 0.0 100.1 mmcsd0 > 3 371 151 1989 91.1 221 3847 14.0 0 0 = 0.0 100.1 mmcsd0s2 > 1 41 41 415 74.5 0 0 0.0 0 0 = 0.0 304.8 mmcsd0s2a > 2 331 110 1574 97.3 221 3847 14.0 0 0 = 0.0 99.3 mmcsd0s2b > 1 41 41 415 74.5 0 0 0.0 0 0 = 0.0 304.9 ufs/rootfs > Tue Mar 24 04:52:45 PDT 2020 > Device 1K-blocks Used Avail Capacity > /dev/mmcsd0s2b 4404252 282480 4121772 6% > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 21842, size: 12288 > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 25477, size: 4096 > 0/2/2/19177 mbuf clusters in use (current/cache/total/max) > procs memory page disks faults = cpu > r b w avm fre flt re pi po fr sr mm0 da0 in sy = cs us sy id > 2 0 29 1944652 42768 12849 9 4 5 13328 1678 0 0 14174 = 8019 3037 65 29 6 > dT: 1.010s w: 1.000s > L(q) ops/s r/s kBps ms/r w/s kBps ms/w d/s kBps = ms/d %busy Name > 2 498 498 6345 3.5 0 0 0.0 0 0 = 0.0 88.8 mmcsd0 > 2 498 498 6345 3.9 0 0 0.0 0 0 = 0.0 98.3 mmcsd0s2 > 1 152 152 1501 4.1 0 0 0.0 0 0 = 0.0 62.1 mmcsd0s2a > 1 346 346 4844 3.9 0 0 0.0 0 0 = 0.0 88.8 mmcsd0s2b > 1 152 152 1501 4.2 0 0 0.0 0 0 = 0.0 62.5 ufs/rootfs > Tue Mar 24 04:52:47 PDT 2020 > Device 1K-blocks Used Avail Capacity > /dev/mmcsd0s2b 4404252 282396 4121856 6% > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 21842, size: 12288 > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 25477, size: 4096 > 0/0/0/19177 mbuf clusters in use (current/cache/total/max) > procs memory page disks faults = cpu > r b w avm fre flt re pi po fr sr mm0 da0 in sy = cs us sy id > 5 0 28 1980200 19676 12848 9 4 5 13327 1684 714 0 14175 = 8019 3039 65 29 6 > dT: 1.002s w: 1.000s > L(q) ops/s r/s kBps ms/r w/s kBps ms/w d/s kBps = ms/d %busy Name > 9 487 174 1449 26.2 313 2427 9.1 0 0 = 0.0 98.4 mmcsd0 > 9 487 174 1449 26.4 313 2427 9.1 0 0 = 0.0 100.0 mmcsd0s2 > 1 45 45 267 22.9 0 0 0.0 0 0 = 0.0 80.3 mmcsd0s2a > 9 442 129 1182 27.7 313 2427 9.1 0 0 = 0.0 97.2 mmcsd0s2b > 1 45 45 267 22.9 0 0 0.0 0 0 = 0.0 80.4 ufs/rootfs > Tue Mar 24 04:53:01 PDT 2020 > Device 1K-blocks Used Avail Capacity > /dev/mmcsd0s2b 4404252 309996 4094256 7% > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 21842, size: 12288 > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 25477, size: 4096 > 0/2/2/19177 mbuf clusters in use (current/cache/total/max) > procs memory page disks faults = cpu > r b w avm fre flt re pi po fr sr mm0 da0 in sy = cs us sy id > 0 0 29 1983636 44400 12848 9 4 5 13326 1689 0 0 14175 = 8018 3040 65 29 6 > dT: 1.002s w: 1.000s > L(q) ops/s r/s kBps ms/r w/s kBps ms/w d/s kBps = ms/d %busy Name > 12 528 0 0 0.0 528 3797 7.5 0 0 = 0.0 100.0 mmcsd0 > 12 528 0 0 0.0 528 3797 7.5 0 0 = 0.0 100.0 mmcsd0s2 > 11 528 0 0 0.0 528 3797 7.5 0 0 = 0.0 100.0 mmcsd0s2b > Tue Mar 24 04:53:05 PDT 2020 > Device 1K-blocks Used Avail Capacity > /dev/mmcsd0s2b 4404252 322360 4081892 7% > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 21842, size: 12288 > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 25477, size: 4096 > 3/769/772/19177 mbuf clusters in use (current/cache/total/max) > procs memory page disks faults = cpu > r b w avm fre flt re pi po fr sr mm0 da0 in sy = cs us sy id > 1 0 29 1826272 165204 12848 9 4 5 13326 1689 971 0 14176 = 8018 3040 65 29 6 > dT: 1.001s w: 1.000s > L(q) ops/s r/s kBps ms/r w/s kBps ms/w d/s kBps = ms/d %busy Name > 1 614 604 4661 4.9 10 168 40.6 0 0 = 0.0 93.8 mmcsd0 > 1 614 604 4661 4.9 10 168 40.6 0 0 = 0.0 94.5 mmcsd0s2 > 0 210 209 1243 4.1 1 32 181.0 0 0 = 0.0 83.1 mmcsd0s2a > 1 404 395 3418 5.4 9 136 25.1 0 0 = 0.0 81.0 mmcsd0s2b > 0 210 209 1243 4.1 1 32 181.0 0 0 = 0.0 83.6 ufs/rootfs > Tue Mar 24 04:53:08 PDT 2020 > Device 1K-blocks Used Avail Capacity > /dev/mmcsd0s2b 4404252 230064 4174188 5% > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 25477, size: 4096 > Mar 24 04:53:04 www kernel: pid 96708 (c++), jid 0, uid 0, was killed: = out of swap space > 0/772/772/19177 mbuf clusters in use (current/cache/total/max) > procs memory page disks faults = cpu > r b w avm fre flt re pi po fr sr mm0 da0 in sy = cs us sy id > 2 0 28 1705884 221144 12848 9 4 5 13326 1689 1109 0 14176 = 8018 3041 65 29 6 > dT: 1.002s w: 1.000s > L(q) ops/s r/s kBps ms/r w/s kBps ms/w d/s kBps = ms/d %busy Name > 0 545 545 3580 2.1 0 0 0.0 0 0 = 0.0 74.0 mmcsd0 > 0 545 545 3580 2.1 0 0 0.0 0 0 = 0.0 75.7 mmcsd0s2 > 0 288 288 1517 2.0 0 0 0.0 0 0 = 0.0 56.4 mmcsd0s2a > 0 256 256 2064 2.4 0 0 0.0 0 0 = 0.0 49.0 mmcsd0s2b > 0 288 288 1517 2.0 0 0 0.0 0 0 = 0.0 57.1 ufs/rootfs > Tue Mar 24 04:53:10 PDT 2020 > Device 1K-blocks Used Avail Capacity > /dev/mmcsd0s2b 4404252 230064 4174188 5% > Mar 24 04:20:50 www kernel: swap_pager: indefinite wait buffer: = bufobj: 0, blkno: 25477, size: 4096 > Mar 24 04:53:04 www kernel: pid 96708 (c++), jid 0, uid 0, was killed: = out of swap space >=20 Below I show code changes to be more explicit in the output messaging about what contributes to initiating OOM kills, without needing boot verbose or the like. There are also some messages from Mark J.'s old code for reporting on things related to initiating OOM kills, or some minor variations of them. You may want to try such changes to provide more context for your OOM kills when they happen. Below the 4 reasons reported are (showing the most detailed of the related messages from different stages): swp_pager_meta_build: swap blk uma zone exhausted swp_pager_meta_build: swap pctrie uma zone exhausted vm_fault_allocate: proc %d (%s) failed to alloc page on fault, starting = OOM m_pageout_mightbe_oom: kill context: v_free_count: %u, v_inactive_count: = %u The below is based on my head -r358966 context for the detailed diff's. # svnlite diff /usr/src/sys/vm/ | more Index: /usr/src/sys/vm/swap_pager.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- /usr/src/sys/vm/swap_pager.c (revision 358966) +++ /usr/src/sys/vm/swap_pager.c (working copy) @@ -1998,6 +1998,7 @@ 0, 1)) printf("swap blk zone exhausted, = " "increase = kern.maxswzone\n"); + printf("swp_pager_meta_build: swap blk = uma zone exhausted\n"); vm_pageout_oom(VM_OOM_SWAPZ); pause("swzonxb", 10); } else @@ -2028,6 +2029,7 @@ 0, 1)) printf("swap pctrie zone = exhausted, " "increase = kern.maxswzone\n"); + printf("swp_pager_meta_build: swap = pctrie uma zone exhausted\n"); vm_pageout_oom(VM_OOM_SWAPZ); pause("swzonxp", 10); } else Index: /usr/src/sys/vm/vm_fault.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- /usr/src/sys/vm/vm_fault.c (revision 358966) +++ /usr/src/sys/vm/vm_fault.c (working copy) @@ -1074,9 +1074,8 @@ fs->oom++; vm_waitpfault(dset, vm_pfault_oom_wait * hz); } else { - if (bootverbose) - printf( - "proc %d (%s) failed to alloc page on fault, starting = OOM\n", + printf( + "vm_fault_allocate: proc %d (%s) failed to alloc page on = fault, starting OOM\n", curproc->p_pid, curproc->p_comm); vm_pageout_oom(VM_OOM_MEM_PF); fs->oom =3D 0; Index: /usr/src/sys/vm/vm_page.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- /usr/src/sys/vm/vm_page.c (revision 358966) +++ /usr/src/sys/vm/vm_page.c (working copy) @@ -3134,6 +3134,7 @@ * race-free vm_wait_domain(). */ if (curproc =3D=3D pageproc) { + printf("thread %d waiting for memory\n", = curthread->td_tid); mtx_lock(&vm_domainset_lock); vm_pageproc_waiters++; msleep(&vm_pageproc_waiters, &vm_domainset_lock, PVM | = PDROP, Index: /usr/src/sys/vm/vm_pageout.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- /usr/src/sys/vm/vm_pageout.c (revision 358966) +++ /usr/src/sys/vm/vm_pageout.c (working copy) @@ -1741,6 +1741,8 @@ * start OOM. Initiate the selection and signaling of the * victim. */ + printf("vm_pageout_mightbe_oom: kill context: v_free_count: %u, = v_inactive_count: %u\n", + vmd->vmd_free_count, = vmd->vmd_pagequeues[PQ_INACTIVE].pq_cnt); vm_pageout_oom(VM_OOM_MEM); =20 /* @@ -1933,10 +1935,24 @@ } sx_sunlock(&allproc_lock); if (bigproc !=3D NULL) { + char *reason_text; + switch (shortage) { + case VM_OOM_MEM_PF: + reason_text=3D "fault's page allocation failed"; + break; + case VM_OOM_MEM: + reason_text=3D "free RAM stayed below = threshold"; + break; + case VM_OOM_SWAPZ: + reason_text=3D "swblk or swpctrie zone = exhausted"; + break; + default: + reason_text=3D "Unknown Reason"; + } if (vm_panic_on_oom !=3D 0 && --vm_panic_on_oom =3D=3D = 0) - panic("out of swap space"); + panic("%s",reason_text); PROC_LOCK(bigproc); - killproc(bigproc, "out of swap space"); + killproc(bigproc, reason_text); sched_nice(bigproc, PRIO_MIN); _PRELE(bigproc); PROC_UNLOCK(bigproc); =3D=3D=3D Mark Millard marklmi at yahoo.com ( dsl-only.net went away in early 2018-Mar)