RFC: Switching FreeBSD/EC2 images to UEFI boot

From: Colin Percival <cperciva_at_freebsd.org>
Date: Sat, 28 Aug 2021 21:05:32 -0700
Hi Cloudy people,

We have a decision to make and I'm looking for input from the community:
Should FreeBSD's x86 EC2 AMIs be marked as booting using UEFI instead of
the current (default) BIOS boot mode?

The argument in favour of sticking with BIOS booting is that the older EC2
instance types -- up to M4/C4/R4/T2 -- don't support UEFI.  There's a full
list of which instance types support UEFI at

  https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-boot.html

but roughly speaking it's a case of "Nitro instances support UEFI while Xen
based instances require BIOS".  (Note that whatever decision we make, it will
still be possible to build AMIs which support BIOS booting -- the question is
just which mode the official project-published images are marked to use.)

The argument in favour of switching to UEFI booting is that it's faster --
around 4.7 seconds faster in my testing.  While this may not seem like a big
difference, it's the difference between being on par with most Linuxes or
lagging far behind; and there's a definite quality-of-life benefit to being
able to spin up an EC2 instance and SSH in to start using it quickly.  (Also
benefits for people using autoscaling, since they can respond to increased
load faster.)

One obvious question to ask here is "how many people are using the older
instance types which only support BIOS", and I have some data from the AWS
Marketplace about that:
* Instances originally launched on FreeBSD 9.x and 10.x are all using older
instance types.
* About 60% of instances originally launched on FreeBSD 11.x are using older
instance types.
* About 40% of instances originally launched on FreeBSD 12.x and 13.0 are
using older instance types.

Almost all of the "older instance type" usage on FreeBSD 12.x and 13.0 is T2
family instances, which I suspect is for two reasons:
1. For a long time I had t2.micro listed as the default instance type on
the AWS Marketplace listings, and
2. FreeBSD 13.0 has problems on T3 instances due to the TSC timecounter not
working reliably.  This problem has now been corrected in HEAD and I'm hoping
the fix will be MFCed in time for FreeBSD 13.1.

I don't have any data on instances launched outside of the AWS Marketplace.

So, as I started this email saying: We have a decision to make and I'm
looking for input from the community.  Faster booting, or support for older
EC2 instance types in our published AMIs?

-- 
Colin Percival
Security Officer Emeritus, FreeBSD | The power to serve
Founder, Tarsnap | www.tarsnap.com | Online backups for the truly paranoid
Received on Sun Aug 29 2021 - 04:05:32 UTC

Original text of this message