GCDW中关于foundationdb配置评估
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数量,一般节点数即可。

评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25052
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526