Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 5 Aug 2018 10:39:27 -0700
From:      Mark Millard <marklmi@yahoo.com>
To:        John-Mark Gurney <jmg@funkthat.com>, markj@freebsd.org, Warner Losh <imp@bsdimp.com>
Cc:        Jamie Landeg-Jones <jamie@catflap.org>, bob prohaska <fbsd@www.zefox.net>, freebsd-arm <freebsd-arm@freebsd.org>
Subject:   Re: RPI3 swap experiments ["was killed: out of swap space" with: "v_free_count: 5439, v_inactive_count: 1"]
Message-ID:  <2C0383B0-3292-48BE-90BC-24FCF2A137D4@yahoo.com>
In-Reply-To: <20180805014545.GK2884@funkthat.com>
References:  <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> <20180804140816.GJ2884@funkthat.com> <16ABD9F0-C908-479C-960D-0C1AEDE89053@yahoo.com> <20180805014545.GK2884@funkthat.com>

next in thread | previous in thread | raw e-mail | index | archive | help
[I think the messages produced for OOM kills are misleading for
the type of context in this message exchange. More bottom-posted.]

On 2018-Aug-4, at 6:45 PM, John-Mark Gurney <jmg at funkthat.com> wrote:

Mark Millard wrote this message on Sat, Aug 04, 2018 at 09:08 -0700:
> On 2018-Aug-4, at 7:08 AM, John-Mark Gurney <jmg at funkthat.com> =
wrote:
>=20
>> Mark Millard via freebsd-arm wrote this message on Sat, Aug 04, 2018 =
at 00:14 -0700:
>>>>  . . .
>>>=20
>>> The book "The Design and Implementation of the FreeBSD Operating =
System"
>>> (2nd edition, 2014) states (page labeled 296):
>>>=20
>>> 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.
>>>=20
>>> 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.)
>>>=20
>>> (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.)
>>>=20
>>> 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?
>>>=20
>>> In other words: enable swapping out active RAM when it eats nearly
>>> all the non-wired RAM.
>>>=20
>>> 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.

The book's description makes the messages produced misleading:
(copied from someone else's message)

	Aug  5 01:34:24 rpi3 kernel: pid 63223 (ld.lld), uid 0, was =
killed: out of swap space
	Aug  5 01:34:26 rpi3 kernel: pid 63360 (c++), uid 0, was killed: =
out of swap space
	Aug  5 01:34:26 rpi3 kernel: pid 846 (ntpd), uid 123, was =
killed: out of swap space

"out of swap space" would appear to apply to the 4.4BSD style of =
swapping but
not necessarily to more modern FreeBSD's context.

"Total Active Working Set too large" (with lots of swap left) seems to =
be what folks
are running into in these rpi3/rpi2 examples.

If the messages had indicated such, this message chain would likely have =
been
rather different: working out adjustments of the total active working =
set size.

=3D=3D=3D
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2C0383B0-3292-48BE-90BC-24FCF2A137D4>