Files
zvfs/scripts/do_pgbecnh.md
2026-03-13 01:59:05 +00:00

77 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
```shell
# 1. 安装 PostgreSQL 和 pgbench
sudo apt-get update
sudo apt-get install -y postgresql postgresql-contrib
# 2. 找到 postgresql.confUbuntu 通常在这个目录)
ls /etc/postgresql/*/main/postgresql.conf
# 3. 配置禁用 mmap编辑 postgresql.conf
shared_memory_type = sysv
dynamic_shared_memory_type = sysv
# 4. 重启 PostgreSQL
sudo systemctl stop postgresql
rm -rf /home/lian/pg/pgdata
rm -rf /zvfs/pg_ts_bench
sudo chown -R postgres:postgres /home/lian/pg
sudo -u postgres mkdir -p /home/lian/pg/pgdata
sudo chown -R postgres:postgres /home/lian/pg/pgdata
sudo -u postgres env LD_PRELOAD=/home/lian/try/zvfs/src/libzvfs.so \
/usr/lib/postgresql/12/bin/initdb -D /home/lian/pg/pgdata
cp ./postgresql.conf /home/lian/pg/pgdata/
sudo -u postgres env LD_PRELOAD=/home/lian/try/zvfs/src/libzvfs.so \
/usr/lib/postgresql/12/bin/pg_ctl -D /home/lian/pg/pgdata -l /tmp/pg.log start
sudo -u postgres env LD_PRELOAD=/home/lian/try/zvfs/src/libzvfs.so \
/usr/lib/postgresql/12/bin/psql
sudo -u postgres env LD_PRELOAD=/home/lian/try/zvfs/src/libzvfs.so \
/usr/lib/postgresql/12/bin/pg_ctl -D /home/lian/pg/pgdata -l /tmp/pg.log restart
# 创建测试环境
sudo -u postgres mkdir -p /zvfs/pg_ts_bench
sudo chown -R postgres:postgres /zvfs/pg_ts_bench
sudo chmod 700 /zvfs/pg_ts_bench
CREATE TABLESPACE zvfs_ts LOCATION '/zvfs/pg_ts_bench';
DROP DATABASE IF EXISTS benchdb;
CREATE DATABASE benchdb TABLESPACE zvfs_ts;
DROP TABLE IF EXISTS hook_probe;
CREATE TABLE hook_probe(id int) TABLESPACE zvfs_ts;
INSERT INTO hook_probe VALUES (1);
INSERT INTO hook_probe VALUES (2);
INSERT INTO hook_probe VALUES (3);
INSERT INTO hook_probe VALUES (4);
SELECT * FROM hook_probe;
DELETE FROM hook_probe WHERE id = 1;
UPDATE hook_probe SET id = 11 WHERE id = 2;
SELECT * FROM hook_probe;
# 5. 验证配置生效
pid=$(pgrep -u postgres -xo postgres)
echo "pid=$pid"
sudo grep libzvfs /proc/$pid/maps
sudo -u postgres psql -p 5432 -c "show data_directory;"
sudo -u postgres psql -c "SHOW shared_memory_type;"
sudo -u postgres psql -c "SHOW dynamic_shared_memory_type;"
# 6. 创建测试库(如未创建)
sudo -u postgres createdb benchdb
# 7. 运行你的 bench 脚本
bash /home/lian/try/zvfs/scripts/run_pgbench_no_mmap.sh
```