GBase GCDW
安装配置
文章

GCDW中关于foundationdb配置评估

发表于2026-02-28 16:06:2837次浏览4个评论

GCDW依赖 fdb环境,而fdb 对延迟和IOPS比较敏感,需要考虑磁盘延时以及自身配置。

一、磁盘性能评估(要求独立部署,磁盘建议裸盘或者raid10 ,不建议raid5或者raid6)

WAL (Write Ahead Log) 写⼊延迟: FDB 的提交延迟直接取决于磁盘执⾏ fsync 的速度。这是最关键

的指标。

随机读取 IOPS: 影响读操作(Get/Range scan)的并发能⼒。

随机写⼊ IOPS: 影响存储引擎(Storage Engine)将数据落盘的性能。

准备⼯作

安装 fio:

sudo yum install fio # CentOS/RHEL

确定测试⽬录:

确保你在 FDB 数据将要挂载的⽬录或磁盘上测试。

警告: 不要直接对裸设备(如 /dev/sdb)进⾏写⼊测试,除⾮该盘为空,否则会丢失数据。建议

在⽂件系统层⾯上测试(即指定 filename 为⼀个⽂件)。

详细测试⽅案与步骤

请依次执⾏以下 4 个测试场景。将 /data/fio_test_file 替换为你实际数据盘挂载点下的⽂件路径。

场景⼀:WAL 写⼊延迟测试 (最关键)

FoundationDB 的事务⽇志是顺序写⼊的,并且每次提交都会调⽤ fsync。我们需要模拟 单线程、顺序

写、同步落盘 的场景。

关注点:延迟与IOPS。

合格标准:

fio --name=fdb_wal_latency \

--filename=/data/fio_test_file \

--ioengine=libaio \

--direct=1 \

--sync=1 \

--rw=write \

--bs=4k \

--numjobs=1 \

--iodepth=1 \

--size=2G \

--runtime=60 \

--time_based \

--group_reporting

> 参数解读: rw=write (顺序写), sync=1 (每次写入都强制刷盘,模拟 FDB log), iodepth=1

(模拟单次提交).

场景⼆:随机读取 IOPS (读负载)

模拟客⼾端⾼并发查询数据库的

关注点: 延迟与IOPS。

合格标准: (适⽤场景⼆、三、四)

fio --name=fdb_rand_read \

--filename=/data/fio_test_file \

--ioengine=libaio \

--direct=1 \

--rw=randread \

--bs=4k \

--numjobs=4 \

--iodepth=64 \

--size=4G \

--runtime=60 \

--time_based \

--group_reporting

场景三:随机写⼊ IOPS (存储引擎负载)

模拟 FDB 存储引擎(如 Redwood 或 SQLite)后台将数据⻚刷⼊磁盘的过程。

关注点:延迟与IOPS。

fio --name=fdb_rand_write \

--filename=/data/fio_test_file \

--ioengine=libaio \

--direct=1 \

--rw=randwrite \

--bs=4k \

--numjobs=4 \

--iodepth=64 \

--size=4G \

--runtime=60 \

--time_based \

--group_reporting

场景四:混合读写 (模拟真实流量)

模拟 70% 读,30% 写的情况,这是典型的数据库⽣产环境负载。

fio --name=fdb_mixed \

--filename=/data/fio_test_file \

--ioengine=libaio \

--direct=1 \

--rw=randrw \

--rwmixread=70 \

--bs=4k \

--numjobs=4 \

--iodepth=64 \

--size=4G \

--runtime=60 \

--time_based \

--group_reporting

 

如何分析结果

运⾏结束后,查看 fio 输出的 clat (completion latency) 部分:

...

clat (usec): min=..., max=..., avg=..., stdev=...

lat (usec): 250=..., 500=..., 750=..., 1000=...

lat (msec): 2=..., 4=..., 10=......

READ: bw=..., iops=15000, ...

WRITE: bw=..., iops=5000, ...

IOPS (Input/Output Per Second): 越⾼越好。

Latency (clat 99.00th):

找到 clat percentiles (usec)。

二、fdb配置评估

1、fdb比较关键的角色
A、Storage    
B、Transaction
C、Stateless

2、配置的时候 
configure logs=? proxies=? resolvers=?

3、数量评估

A、storage 按照逻辑盘数量来定。1块盘一个。计算是: 节点数 * 每台机器逻辑磁盘个数。不用configure 指定。

B、transaction 是用 logs 参数设置, 计算比较固定: 节点数 * 副本数量
C、stateless 比较重要。包含proxy和resolver。
configure proxies 指定的是proxy数量,计算方式:节点数*单个proxy,这单个proxy 按照16核到20核分一个即可。比如64核,可以划分为2、3、4 都可以。
configure resolvers 指定的是resolver数量,一般节点数即可。

 

评论

登录后才可以发表评论
用户头像
GBase用户28017发表于 5个月前
好好学习。
GBase用户47954发表于 3个月前
感谢作者的精彩分享!
用户头像
levvel发表于 3个月前
先水一个
GBase用户51820发表于 2个月前
厉害了