ci: Use a RAM disk and more CPUs on FreeBSD.
Run the tests in a RAM disk. It's still a UFS file system and is backed by 20GB of disk, but this avoids a lot of I/O. Even though we disable fsync, our tests do a lot of directory manipulations, some of which force file system meta-data to disk and flush slow device write caches on UFS. This was a bottleneck preventing effective scaling beyond 2 CPUs. Now we can use 4 CPUs like on other OSes, for a huge speedup. Reviewed-by: Maxim Orlov <orlovmg@gmail.com> Discussion: https://postgr.es/m/CA%2BhUKG%2BFXLcEg1dyTqJjDiNQ8pGom4KrJj4wF38C90thti9dVA%40mail.gmail.com
This commit is contained in:
parent
77cf6a78de
commit
0265e5c120
|
@ -126,11 +126,9 @@ task:
|
||||||
name: FreeBSD - 13 - Meson
|
name: FreeBSD - 13 - Meson
|
||||||
|
|
||||||
env:
|
env:
|
||||||
# FreeBSD on GCP is slow when running with larger number of CPUS /
|
CPUS: 4
|
||||||
# jobs. Using one more job than cpus seems to work best.
|
BUILD_JOBS: 4
|
||||||
CPUS: 2
|
TEST_JOBS: 8
|
||||||
BUILD_JOBS: 3
|
|
||||||
TEST_JOBS: 3
|
|
||||||
IMAGE_FAMILY: pg-ci-freebsd-13
|
IMAGE_FAMILY: pg-ci-freebsd-13
|
||||||
DISK_SIZE: 50
|
DISK_SIZE: 50
|
||||||
|
|
||||||
|
|
|
@ -3,26 +3,24 @@
|
||||||
set -e
|
set -e
|
||||||
set -x
|
set -x
|
||||||
|
|
||||||
# The default filesystem on freebsd gcp images is very slow to run tests on,
|
|
||||||
# due to its 32KB block size
|
|
||||||
#
|
|
||||||
# XXX: It'd probably better to fix this in the image, using something like
|
|
||||||
# https://people.freebsd.org/~lidl/blog/re-root.html
|
|
||||||
|
|
||||||
# fix backup partition table after resize
|
# fix backup partition table after resize
|
||||||
gpart recover da0
|
gpart recover da0
|
||||||
gpart show da0
|
gpart show da0
|
||||||
# kill swap, so we can delete a partition
|
|
||||||
swapoff -a || true
|
|
||||||
# (apparently we can only have 4!?)
|
|
||||||
gpart delete -i 3 da0
|
|
||||||
gpart add -t freebsd-ufs -l data8k -a 4096 da0
|
|
||||||
gpart show da0
|
|
||||||
newfs -U -b 8192 /dev/da0p3
|
|
||||||
|
|
||||||
# Migrate working directory
|
# 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
|
du -hs $CIRRUS_WORKING_DIR
|
||||||
mv $CIRRUS_WORKING_DIR $CIRRUS_WORKING_DIR.orig
|
mv $CIRRUS_WORKING_DIR $CIRRUS_WORKING_DIR.orig
|
||||||
mkdir $CIRRUS_WORKING_DIR
|
mkdir $CIRRUS_WORKING_DIR
|
||||||
mount -o noatime /dev/da0p3 $CIRRUS_WORKING_DIR
|
mount -o noatime /dev/md1 $CIRRUS_WORKING_DIR
|
||||||
cp -r $CIRRUS_WORKING_DIR.orig/* $CIRRUS_WORKING_DIR/
|
cp -r $CIRRUS_WORKING_DIR.orig/* $CIRRUS_WORKING_DIR/
|
||||||
|
|
Loading…
Reference in New Issue