mirror of
https://github.com/neondatabase/neon.git
synced 2025-12-22 21:59:59 +00:00
add script to set up EC2 storage-optimized instance store for benchmarking (#6350)
Been using this all the time in https://github.com/neondatabase/neon/pull/6214 Part of https://github.com/neondatabase/neon/issues/5771 Should consider this in https://github.com/neondatabase/neon/issues/6297
This commit is contained in:
committed by
GitHub
parent
97b48c23f8
commit
b76454ae41
52
scripts/ps_ec2_setup_instance_store
Executable file
52
scripts/ps_ec2_setup_instance_store
Executable file
@@ -0,0 +1,52 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# This script sets up an ext4 partition on an EC2 storage-optimized instance's instance store volume.
|
||||
# Unix permission/ownership is set to the calling user (the script does sudo internally.)
|
||||
#
|
||||
# It's intentionally not idempotent; don't take on that complexity in a bash script.
|
||||
|
||||
set -euo pipefail
|
||||
set -x
|
||||
|
||||
# This seems crude, but, apparently instance store NVMe volumes aren't exposed in the in instance metadata block-device-mapping.
|
||||
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html#bdm-instance-metadata
|
||||
if [ "$(cat /sys/class/block/nvme1n1/device/model)" != "Amazon EC2 NVMe Instance Storage " ]; then
|
||||
echo "nvme1n1 is not Amazon EC2 NVMe Instance Storage: '$(cat /sys/class/block/nvme1n1/device/model)'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# NB: we DO NOT warm up all the blocks on the drive as recommended by https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/disk-performance.html
|
||||
# The reason is that we don't do that in production either.
|
||||
|
||||
# do all the on-disk initialization work now instead of a background kernel thread
|
||||
# so that we're ready for benchmarking right after this line
|
||||
sudo mkfs.ext4 -E lazy_itable_init=0,lazy_journal_init=0 /dev/nvme1n1
|
||||
|
||||
MOUNTPOINT=/instance_store
|
||||
sudo mkdir "$MOUNTPOINT"
|
||||
sudo mount /dev/nvme1n1 "$MOUNTPOINT"
|
||||
sudo chown -R "$(id -u)":"$(id -g)" "$MOUNTPOINT"
|
||||
|
||||
TEST_OUTPUT="$MOUNTPOINT/test_output"
|
||||
mkdir "$TEST_OUTPUT"
|
||||
|
||||
NEON_REPO_DIR="$MOUNTPOINT/repo_dir"
|
||||
mkdir "$NEON_REPO_DIR"
|
||||
|
||||
cat <<EOF
|
||||
SETUP COMPLETE
|
||||
|
||||
To run your local neon.git build on the instance store volume,
|
||||
run the following commands from the top of the neon.git checkout
|
||||
|
||||
# test suite run
|
||||
export TEST_OUTPUT="$TEST_OUTPUT"
|
||||
DEFAULT_PG_VERSION=15 BUILD_TYPE=release ./scripts/pytest test_runner/performance/test_latency.py
|
||||
|
||||
# for interactive use
|
||||
export NEON_REPO_DIR="$NEON_REPO_DIR"
|
||||
cargo build_testing --release
|
||||
./target/release/neon_local init --force empty-dir-ok
|
||||
EOF
|
||||
|
||||
|
||||
Reference in New Issue
Block a user