ci: fix Node ARM release build (#971)

When we turned on fat LTO builds, we made the release build job **much**
more compute and memory intensive. The ARM runners have particularly low
memory per core, which makes them susceptible to OOM errors. To avoid
issues, I have enabled memory swap on ARM and bumped the side of the
runner.
This commit is contained in:
Will Jones
2024-02-14 13:02:09 -08:00
committed by Weston Pace
parent c425d3759d
commit cf3dbcf684
3 changed files with 16 additions and 6 deletions

View File

@@ -80,17 +80,25 @@ jobs:
- arch: x86_64
runner: ubuntu-latest
- arch: aarch64
runner: buildjet-8vcpu-ubuntu-2204-arm
# For successful fat LTO builds, we need a large runner to avoid OOM errors.
runner: buildjet-16vcpu-ubuntu-2204-arm
steps:
- name: Checkout
uses: actions/checkout@v4
# Buildjet aarch64 runners have only 1.5 GB RAM per core, vs 3.5 GB per core for
# x86_64 runners. Cargo defaults to spawn a job per core, but needs a lot
# of memory per job. Thus for ARM we need to reduce the number of jobs
# to avoid OOM errors when building.
# x86_64 runners. To avoid OOM errors on ARM, we create a swap file.
- name: Configure aarch64 build
if: ${{ matrix.config.arch == 'aarch64' }}
run: echo "CARGO_BUILD_JOBS=4" >> "$GITHUB_ENV"
run: |
free -h
sudo fallocate -l 16G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo "/swapfile swap swap defaults 0 0" >> sudo /etc/fstab
# print info
swapon --show
free -h
- name: Build Linux Artifacts
run: |
bash ci/build_linux_artifacts.sh ${{ matrix.config.arch }}

View File

@@ -13,7 +13,9 @@ docker build \
.
popd
# We turn on memory swap to avoid OOM killer
docker run \
-v $(pwd):/io -w /io \
--memory-swap=-1 \
lancedb-node-manylinux \
bash ci/manylinux_node/build.sh $ARCH

View File

@@ -73,7 +73,7 @@ export class Table {
/** Return Schema as empty Arrow IPC file. */
schema(): Buffer
add(buf: Buffer): Promise<void>
countRows(filter?: string): Promise<bigint>
countRows(filter?: string | undefined | null): Promise<bigint>
delete(predicate: string): Promise<void>
createIndex(): IndexBuilder
query(): Query