GPT vs MBR for swap devices

Mark Millard marklmi at
Sat Jun 23 14:50:07 UTC 2018

On 2018-Jun-23, at 7:32 AM, bob prohaska <fbsd at> wrote:

> On Fri, Jun 22, 2018 at 12:08:56PM +1000, Trev wrote:
>> Unfortunately my rpi3B+ is not a direct comparison with the rpi2B 
>> because I only had the one USB2 memory device holding /usr, /usr/obj and 
>> swap. I'll try moving swap to a dedicated USB2 memory device.
> Have you considered putting a swapfile on the microSD card? That's one
> of the things I have not tried. A swap partition on SD seems to work. 
> A swapfile is easier to try and may work. 


for why I would not recommend using a swap file. In particular
comment 7 is a quote:

> On 2017-Feb-13, at 7:20 PM, Konstantin Belousov <kostikbel at> wrote
> on the freebsd-arm list:

> . . .
> swapfile write requires the write request to come through the filesystem
> write path, which might require the filesystem to allocate more memory
> and read some data. E.g. it is known that any ZFS write request
> allocates memory, and that write request on large UFS file might require
> allocating and reading an indirect block buffer to find the block number
> of the written block, if the indirect block was not yet read.
> As result, swapfile swapping is more prone to the trivial and unavoidable
> deadlocks where the pagedaemon thread, which produces free memory, needs
> more free memory to make a progress.  Swap write on the raw partition over
> simple partitioning scheme directly over HBA are usually safe, while e.g.
> zfs over geli over umass is the worst construction.

Comment 3 from Tom Vijlbrief even reports a way to reproduce
such a problem with swap files:

> This is not related to ARM or USB, I can reproduce it in a VirtualBox amd64 client with the standard emulated hard disk.
> . . .
> stress -d 2 -m 3 --vm-keep
> will hang the system as well.

(This was on 2016-Jan-22.)

Another reproduction report is Comment 5 from Sevan Janiyan:

> In my case, to reproduce the behaviour, boot PI, add swap file as per handbook instructions[1], run cat /somefile > /someotherfile
> In this case /somefile is a 4GB file containing garbage from /dev/urandom

Mark Millard
marklmi at
( went
away in early 2018-Mar)

More information about the freebsd-arm mailing list