Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 26 Jun 2020 12:58:02 +0200
From:      =?UTF-8?Q?Stefan_E=c3=9fer?= <se@freebsd.org>
To:        freebsd-stable@freebsd.org
Cc:        Peter Jeremy <peter@rulingia.com>
Subject:   Re: swap space issues
Message-ID:  <52753cf4-57db-93d9-d217-c8f812d6bc7c@freebsd.org>
In-Reply-To: <20200626102331.GA6406@server.rulingia.com>
References:  <CAEC7391qs%2BA-jMpR1RyvR-BmnLyiksXHkQUjsGeePuEZJfMciw@mail.gmail.com> <20200625000410.GA10210@eureka.lemis.com> <CAEC7390VDxbYSY%2B4_fEaYxwdSPzbFWUVTdHw=vbAgq%2Bnmv09Vw@mail.gmail.com> <20200625025248.GB10210@eureka.lemis.com> <CAEC73938Wjb5MHvLW36PdoAy_nso-tSN51AhUYydC6qxY99pog@mail.gmail.com> <E8763B97-2DB7-4C77-864D-08155168E352@gromit.dlib.vt.edu> <CAEC7391AHKXd0KfJdUGKMv1QRh_AtA1BrtqaQwy3dXEoJEMoDw@mail.gmail.com> <20200626102331.GA6406@server.rulingia.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Am 26.06.20 um 12:23 schrieb Peter Jeremy:
> On 2020-Jun-25 11:30:31 -0700, Donald Wilde <dwilde1@gmail.com> wrote:
>> Here's 'pstat -s' on the i3 (which registers as cpu HAMMER):
>>
>> Device          1K-blocks     Used    Avail Capacity
>> /dev/ada0s1b     33554432        0 33554432     0%
>> /dev/ada0s1d     33554432        0 33554432     0%
>> Total            67108864        0 67108864     0%
> 
> I strongly suggest you don't have more than one swap device on spinning
> rust - the VM system will stripe I/O across the available devices and
> that will give particularly poor results when it has to seek between the
> partitions.

This used to be beneficial, when disk read and write bandwidth was
limited and whole processes had to be swapped in or out due to RAM
pressure. (This changed due to more RAM and a different ratio of
seek to transfer times for a given amount of data.)

An idea for a better strategy:

It might be better to use an allocation algorithm that assigns a
swap device to each running process that needs pages written to the
swap device and only assign another swap device (and use if from
then on for that process) if there is no free space left on the one
used until then.

Such a strategy would at least reduce the number of processes that
need all configured swap devices at the same time in a striped
configuration.

If all processes start with the first configured swap device assigned
to them, this will lead to only one of them being used until it fills
up, then progressing to the next one.

The strategy of whether the initial swap device assigned to a process
is always the first one configured in the system, or whether after
that could not be used by some process is moved on to the next one
(typically the one assigned to that process for further page-outs) is
not obvious to me.

The behavior could be controlled by a sysctl to allow to adapt the
strategy to the hardware (e.g. rotating vs. flash disks for swap).

> As a further piece of arcana, vm.pageout_oom_seq is a count that controls
> the number of passes before the pageout daemon gives up and starts killing
> processes when it can't free up enough RAM.  "out of swap space" messages
> generally mean that this number is too low, rather than there being a
> shortage of swap - particularly if your swap device is rather slow.

I'm not sure that this specific sysctl is documented in such a way
that it is easy to find by people suffering from out-of-memory kills.

Perhaps it could be mentioned as a parameter that may need tuning in
the OOM message?

And while it does not come up that often in the mail list, it might
be better for many kinds of application if the default was increased
(a longer wait for resources might be more acceptable than the loss
of all results of a long running computation).

Regards, STefan



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?52753cf4-57db-93d9-d217-c8f812d6bc7c>