On Sat, Mar 1, 2025 at 6:24 AM Nazir Bilal Yavuz <byavu...@gmail.com> wrote:
> I think I found the problem, sd0j's fstype is not a swap. It worked like that:
>
> $ disklabel -E sd0
> $ umount /usr/obj
> $ disklabel -E sd0 # prompts are: m -> j -> \n -> \n -> swap -> w -> q
> $ disklabel -E sd0
> $ swapon /dev/sd0j # runs successfully

Thanks!  I just piped those characters in and it worked, shaving
another couple of minutes off.  The script is probably now about as
short and sweet as it needs to be?  And the times are pretty good.

https://cirrus-ci.com/build/5275349266726912
From 68232b16632fcc9469017ec219308c798e0d5391 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.mu...@gmail.com>
Date: Fri, 28 Feb 2025 22:19:07 +1300
Subject: [PATCH v2 1/2] ci: Use a RAM disk for NetBSD and OpenBSD.

Put the RAM disk setup for all three *BSD CI tasks into a common script,
replacing the old FreeBSD-specific one from commit 0265e5c1.  This makes
them run 3 times and a bit over 2 times faster, respectively.

NetBSD and FreeBSD can use the same one-liner to mount tmpfs, but
OpenBSD needs a GCP-image specific recipe that knows where to steal a
disk partition to reserve swap space to mount mfs, because its tmpfs
is deprecated and currently broken.  The configured size is enough for
our current tests but could potentially need future tweaks.  Thanks to
Bilal for the disklabel incantation.

Reviewed-by: Nazir Bilal Yavuz <byavu...@gmail.com>
Discussion: https://postgr.es/m/CA%2BhUKGJJ-XrPhN%2BQA4ZUfYAAXcwOSDty9t0vE9Z8__AdacKnQg%40mail.gmail.com
---
 .cirrus.tasks.yml                       |  5 ++---
 src/tools/ci/gcp_freebsd_repartition.sh | 26 -------------------------
 src/tools/ci/gcp_ram_disk.sh            | 22 +++++++++++++++++++++
 3 files changed, 24 insertions(+), 29 deletions(-)
 delete mode 100755 src/tools/ci/gcp_freebsd_repartition.sh
 create mode 100755 src/tools/ci/gcp_ram_disk.sh

diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml
index 91b51142d2e..c5e7b743bfb 100644
--- a/.cirrus.tasks.yml
+++ b/.cirrus.tasks.yml
@@ -155,8 +155,7 @@ task:
 
   ccache_cache:
     folder: $CCACHE_DIR
-  # Work around performance issues due to 32KB block size
-  repartition_script: src/tools/ci/gcp_freebsd_repartition.sh
+  setup_ram_disk_script: src/tools/ci/gcp_ram_disk.sh
   create_user_script: |
     pw useradd postgres
     chown -R postgres:postgres .
@@ -276,7 +275,7 @@ task:
 
   ccache_cache:
     folder: $CCACHE_DIR
-
+  setup_ram_disk_script: src/tools/ci/gcp_ram_disk.sh
   create_user_script: |
     useradd postgres
     chown -R postgres:users /home/postgres
diff --git a/src/tools/ci/gcp_freebsd_repartition.sh b/src/tools/ci/gcp_freebsd_repartition.sh
deleted file mode 100755
index 3adb8fb88ec..00000000000
--- a/src/tools/ci/gcp_freebsd_repartition.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/sh
-
-set -e
-set -x
-
-# fix backup partition table after resize
-gpart recover da0
-gpart show da0
-
-# delete and re-add swap partition with expanded size
-swapoff -a
-gpart delete -i 3 da0
-gpart add -t freebsd-swap -l swapfs -a 4096 da0
-gpart show da0
-swapon -a
-
-# create a file system on a memory disk backed by swap, to minimize I/O
-mdconfig -a -t swap -s20g -u md1
-newfs -b 8192 -U /dev/md1
-
-# migrate working directory
-du -hs $CIRRUS_WORKING_DIR
-mv $CIRRUS_WORKING_DIR $CIRRUS_WORKING_DIR.orig
-mkdir $CIRRUS_WORKING_DIR
-mount -o noatime /dev/md1 $CIRRUS_WORKING_DIR
-cp -a $CIRRUS_WORKING_DIR.orig/ $CIRRUS_WORKING_DIR/
diff --git a/src/tools/ci/gcp_ram_disk.sh b/src/tools/ci/gcp_ram_disk.sh
new file mode 100755
index 00000000000..d48634512ac
--- /dev/null
+++ b/src/tools/ci/gcp_ram_disk.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+# Move working directory into a RAM disk for better performance.
+
+set -e
+set -x
+
+mv $CIRRUS_WORKING_DIR $CIRRUS_WORKING_DIR.orig
+mkdir $CIRRUS_WORKING_DIR
+
+case "`uname`" in
+  FreeBSD|NetBSD)
+    mount -t tmpfs tmpfs $CIRRUS_WORKING_DIR
+    ;;
+  OpenBSD)
+    umount /dev/sd0j # unused /usr/obj partition
+    printf "m j\n\n\nswap\nw\nq\n" | disklabel -E sd0
+    swapon /dev/sd0j
+    mount -t mfs -o rw,noatime,nodev,-s=8000000 swap $CIRRUS_WORKING_DIR
+    ;;
+esac
+
+cp -a $CIRRUS_WORKING_DIR.orig/. $CIRRUS_WORKING_DIR/
-- 
2.39.5

From cf2f8301f30537d7448190f9a2d0889845b4d168 Mon Sep 17 00:00:00 2001
From: Thomas Munro <thomas.mu...@gmail.com>
Date: Sun, 2 Mar 2025 01:08:02 +1300
Subject: [PATCH v2 2/2] ci: Enable NetBSD and OpenBSD by default.

XXX Not saying we're quite ready to do this (are we?), but cfbot will
test them for this CF entry
---
 .cirrus.tasks.yml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.cirrus.tasks.yml b/.cirrus.tasks.yml
index c5e7b743bfb..2004610989d 100644
--- a/.cirrus.tasks.yml
+++ b/.cirrus.tasks.yml
@@ -218,7 +218,6 @@ task:
 
 task:
   depends_on: SanityCheck
-  trigger_type: manual
 
   env:
     # Below are experimentally derived to be a decent choice.
-- 
2.39.5

Reply via email to