GPT vs MBR for swap devices
Mark Millard
marklmi at yahoo.com
Sun Jun 17 03:38:13 UTC 2018
On 2018-Jun-16, at 5:01 PM, bob prohaska <fbsd at www.zefox.net> wrote:
> On Sat, Jun 16, 2018 at 04:03:06PM -0700, Mark Millard wrote:
>> bob prohaska fbsd at www.zefox.net wrote on
>> Sat Jun 16 19:12:22 UTC 2018 (some by reference
>> to other web pages, which is what I quote from
>> here) :
>>
>>> Presently, the divided swap layout fails during -j4 buildworld with
>>> "out of swap" kills during the more frantic portions of buildworld.
>>>
>>> When all swap is placed on a single 3 GB USB mechanical disk partition
>>> the "out of swap" errors go away. Similarly, when swap is placed entirely
>>> on the microSD card in two partitions, one the original 1 GB partition
>>> plus a second 2 GB partition, the "out of swap" errors dissapear.
>>
>> Since the "multiple swap partitions across multiple
>> devices" context (my description) is what has problems,
>> it would be interesting to see swapinfo information
>> from around the time frame of the failures: how much is
>> used vs. available on each swap partition? Is only one
>> being (significantly) used? The small one (1 GiByte)?
>>
>> A related, additional example to try? . . .
>>
>> Since you report needing around 1.2 GiByte of swap, what
>> happens if you have a split but both devices have, say,
>> 1.5 GiByte of swap space for the partition used? If I read
>> right, you could shrink the 2GiByte microSD card partition
>> and the 3 GiByte USB mechanical disk partition and then use
>> that pair as a test. (This also avoids the message about
>> having too much swap. Also, I'm avoiding having significant
>> size differences between the partitions used.) Technically,
>> without the split, either partition should be sufficient
>> without the other involved. In such a context, does the
>> split still fail? Or does it only fail when one partition
>> is too small to be sufficient by itself?
>>
> Thus far I think OOM kills have been happening long before either
> partition fills, but it'll take better logging than I have
> set up now to be sure.
>
> Is there a simple way to log recurrent swap measurements to
> a file? Swapinfo doesn't seem to have the right options.
> It would be particularly convenient if the swap usage info
> could be appended to the gstat log file. At one point I tried
> top -n -d all | grep Swap >> gstat.log (I'm using tcsh)
> but nothing was added to gstat.log and since there was no
> interest in swap usage totals I gave up.
>
>
>> These suggestions are going a different direction than the
>> I/O rate investigation but also having I/O rate information
>> would not hurt. But I/O rate information can not substitute
>> for the swapinfo output here. Nor can top cover what I'd be
>> looking for: per partition usage figures are required, not
>> just grand total swap-space usage.
>>
>>
> If you can suggest commands I'll gladly try them. As this little
> fiasco is playing out, it looks like the lesson for me is don't
> attempt to interleave swap. Old ideas die slow, but they do die...
>
> Thanks for reading, and all your help!
My notes will be for a context with:
# echo $SHELL
/bin/sh
Initially I'll show just:
# while true do swapinfo ; sleep 5 done
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
^C
You could, of course, specify a different sleep time
(in seconds).
As for logging to a file, that is just some additional
command line text:
# while true do swapinfo ; sleep 5 done > mmjnk.txt
^C
FBSDUSSD# more mmjnk.txt
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
Multiple processes writing to the same file in an uncoordinated
manner need not produce nice lines with the text from just one
program on each line.
For now I do not intend to try to handle such issues and only
give the above "just swapinfo" information logging in a specific
file.
But it is possible to get timestamps in the log file:
# while true do date ; swapinfo ; sleep 5 done > mmjnk.txt
^C
FBSDUSSD# more mmjnk.txt Sat Jun 16 20:35:11 PDT 2018
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
Sat Jun 16 20:35:16 PDT 2018
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
Sat Jun 16 20:35:21 PDT 2018
Device 1K-blocks Used Avail Capacity
/dev/gpt/FBSDUSSDswap 15728640 0 15728640 0%
Of course the time here is "computer local" if it has not
been set to track some standard.
===
Mark Millard
marklmi at yahoo.com
( dsl-only.net went
away in early 2018-Mar)
More information about the freebsd-arm
mailing list