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
|
||||
|
||||
env:
|
||||
# FreeBSD on GCP is slow when running with larger number of CPUS /
|
||||
# jobs. Using one more job than cpus seems to work best.
|
||||
CPUS: 2
|
||||
BUILD_JOBS: 3
|
||||
TEST_JOBS: 3
|
||||
CPUS: 4
|
||||
BUILD_JOBS: 4
|
||||
TEST_JOBS: 8
|
||||
IMAGE_FAMILY: pg-ci-freebsd-13
|
||||
DISK_SIZE: 50
|
||||
|
||||
|
|
|
@ -3,26 +3,24 @@
|
|||
set -e
|
||||
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
|
||||
gpart recover 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
|
||||
mv $CIRRUS_WORKING_DIR $CIRRUS_WORKING_DIR.orig
|
||||
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/
|
||||
|
|
Loading…
Reference in New Issue