77 lines
2.2 KiB
Markdown
77 lines
2.2 KiB
Markdown
```shell
|
||
# 1. 安装 PostgreSQL 和 pgbench
|
||
|
||
sudo apt-get update
|
||
sudo apt-get install -y postgresql postgresql-contrib
|
||
|
||
# 2. 找到 postgresql.conf(Ubuntu 通常在这个目录)
|
||
|
||
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
|
||
``` |