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

2.2 KiB
Raw Blame History

# 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