Date: Sat, 4 Aug 2018 07:08:16 -0700 From: John-Mark Gurney <jmg@funkthat.com> To: Mark Millard <marklmi@yahoo.com> Cc: Jamie Landeg-Jones <jamie@catflap.org>, bob prohaska <fbsd@www.zefox.net>, freebsd-arm <freebsd-arm@freebsd.org>, markj@freebsd.org Subject: Re: RPI3 swap experiments ["was killed: out of swap space" with: "v_free_count: 5439, v_inactive_count: 1"] Message-ID: <20180804140816.GJ2884@funkthat.com> In-Reply-To: <8CC5DF53-F950-495C-9DC8-56FCA0087259@yahoo.com> References: <20180801034511.GA96616@www.zefox.net> <201808010405.w7145RS6086730@donotpassgo.dyslexicfish.net> <6BFE7B77-A0E2-4FAF-9C68-81951D2F6627@yahoo.com> <20180802002841.GB99523@www.zefox.net> <20180802015135.GC99523@www.zefox.net> <EC74A5A6-0DF4-48EB-88DA-543FD70FEA07@yahoo.com> <201808030034.w730YURL034270@donotpassgo.dyslexicfish.net> <F788BDD8-80DC-441A-AA3E-2745F50C3B56@yahoo.com> <201808040355.w743tPsF039729@donotpassgo.dyslexicfish.net> <8CC5DF53-F950-495C-9DC8-56FCA0087259@yahoo.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Mark Millard via freebsd-arm wrote this message on Sat, Aug 04, 2018 at 00:14 -0700: > On 2018-Aug-3, at 8:55 PM, Jamie Landeg-Jones <jamie at catflap.org> wrote: > > > Mark Millard <marklmi at yahoo.com> wrote: > > > >> If Inact+Laundry+Buf(?)+Free was not enough to provide sufficient > >> additional RAM, I'd would have guessed that some Active Real Memory > >> should then have been paged/swapped out and so RAM would be made > >> available. (This requires the system to have left itself sufficient > >> room in RAM for that guessed activity.) > >> > >> But I'm no expert at the intent or actual operation. > >> > >> Bob P.'s reports (for having sufficient swap space) > >> also indicate the likes of: > >> > >> v_free_count: 5439, v_inactive_count: 1 > >> > >> > >> So all the examples have: "v_inactive_count: 1". > >> (So: vmd->vmd_pagequeues[PQ_INACTIVE].pq_cnt==1 ) > > > > Thanks for the feedback. I'll do a few more runs and other stress tests > > to see if that result is consistent. I'm open to any other idea too! > > > > The book "The Design and Implementation of the FreeBSD Operating System" > (2nd edition, 2014) states (page labeled 296): > > QUOTE: > The FreeBSD swap-out daemon will not select a runnable processes to swap > out. So, if the set of runnable processes do not fit in memory, the > machine will effectively deadlock. Current machines have enough memory > that this condition usually does not arise. If it does, FreeBSD avoids > deadlock by killing the largest process. If the condition begins to arise > in normal operation, the 4.4BSD algorithm will need to be restored. > END QUOTE. > > As near as I can tell, for the likes of rpi3's and rpi2's, the condition > is occurring during buildworld "normal operation" that tries to use the > available cores to advantage. (Your context does not have the I/O > problems that Bob P.'s have had in at least some of your OOM process > kill examples, if I understand right.) > > (4.4BSD used to swap out the runnable process that had been resident > the longest, followed by the processes taking turns being swapped out. > I'll not quote the exact text about such.) > > So I guess the question becomes, is there a reasonable way to enable > the 4.4BSD style of "Swapping" for "small" memory machines in order to > avoid having to figure out how to not end up with OOM process kills > while also not just wasting cores by using -j1 for buildworld? > > In other words: enable swapping out active RAM when it eats nearly > all the non-wired RAM. > > But it might be discovered that the performance is not better than > using fewer cores during buildworld. (Experiments needed and > possibly environment specific for the tradeoffs.) Avoiding having > to figure out the maximum -j? that avoids OOM process kills but > avoids just sticking to -j1 seems and advantage for some rpi3 and > rpi2 folks. Interesting observation, maybe playing w/: vm.swap_idle_threshold2: Time before a process will be swapped out vm.swap_idle_threshold1: Guaranteed swapped in time for a process will help thing... lowering 2 will likely make the processes available for swap sooner... -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not."
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20180804140816.GJ2884>