使用 Google Cloud 的本地 SSD (Postgresql) 进行缓慢的 Fsync

使用 Google Cloud 的本地 SSD (Postgresql) 进行缓慢的 Fsync

使用简单的“pgbench”测试,我在 GCE 的“本地 SSD”选项上获得的每秒交易量意外地低(与 SSD 持久磁盘相比):

# With Local SSD
# /dev/mapper/vg0-data on /data type xfs (rw,noexec,noatime,attr2,inode64,noquota)
pg-dev-002:~$ pgbench -c 8 -j 2 -T 60 -U postgres
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 8
number of threads: 2
duration: 60 s
number of transactions actually processed: 10765
tps = 179.287875 (including connections establishing)
tps = 179.322407 (excluding connections establishing)

# With SSD Persistent Disk
# /dev/mapper/vg1-data on /data1 type xfs (rw,noexec,noatime,attr2,inode64,noquota)
pg-dev-002:/data$ pgbench -c 8 -j 2 -T 60 -U postgres
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 1
query mode: simple
number of clients: 8
number of threads: 2
duration: 60 s
number of transactions actually processed: 62457
tps = 1040.806664 (including connections establishing)
tps = 1041.012782 (excluding connections establishing)

“fio”基准测试显示了本地 SSD 的宣传 IOPS 和吞吐量。然而,在本地 SSD 安装上执行“pg_test_fsync”让我相信 fsync 延迟是罪魁祸首。本地 SSD 数字是在应用 Google 的 IRQ 脚本后得出的这里

# Local SSD
open_datasync                     319.738 ops/sec    3128 usecs/op
fdatasync                         321.963 ops/sec    3106 usecs/op

# Persistent SSD
open_datasync                    1570.305 ops/sec     637 usecs/op
fdatasync                        1561.469 ops/sec     640 usecs/op
  • 使用 Ubuntu 14.04 和 Debian 7 镜像进行测试
  • 实例类型:n1-highmem-4
  • 两种卷类型的安装选项相同

我还没有看到任何关于 fsync 和本地 SSD 的限制,但我不确定在哪里可以检查或测试。

答案1

比较单身的本地 SSD/HDD/等与 SAN 类型 RAID 控制器相比,就像是将大众甲壳虫与奥迪 RS10 勒芒赛车进行比较,是的,它们都是来自同一家工厂,并且都使用四冲程发动机/SSD/HDD,但它们的调校等却截然不同。

我可以举几个经验例子,但简单的答案与基于 SAN 的存储相比,具有大量电池备份的 RAM 缓存,而本地 SSD/HDD 则没有。即使是 SSD,在确认数据已“提交”到磁盘时,也无法与电池备份的 DDR3 RAM 相媲美。此外,单个本地磁盘(实际上)一次只能处理一个操作,将一个块写入“磁盘”,而电池备份的 SAN 系统可以同时处理多个“写入磁盘”的请求(因为它将数据提交到电池备份的 DDR3 RAM)

最后,问题可能是哪个本地 SSD 磁盘正在被使用,因为我已经看到不同的驱动器之间的写入性能存在巨大差异尺寸属于同一系列的 SSD(越大越快),更不用说不同 SSD 磁盘品牌的不同速度了。

是的,SSD 比 HDD 快,但还没有电池供电的 DDR3 RAM 快;)

答案2

Google 承认,本地 SSD 上的写入缓存刷新速度相当慢,并提供了在文件系统挂载上禁用写入缓存的步骤,以避免这种延迟(如果适合您的用例)。文档如下这里

相关内容