Curve开发者的一些细节问题

问题1:ssd比hdd性能更好,为什么取消o_dsync后提升效果ssd更明显?
问题2:copyset的数量是可设置的,还是由chunksize大小决定的?
问题3:topology.yaml添加自定义变量,curveadm如何渲染到curve对应的配置文件?
问题4:curve在进行业务处理时,会对所在主机操作系统所在的盘进行读写吗?如有涉及有哪些读写?
问题5:polarFS和spdk的合入,发布的计划日期是什么?能否提供这两个特性的设计说明文档以供了解?

1 个赞

问题4:curve在进行业务处理时,会对所在主机操作系统所在的盘进行读写吗?如有涉及有哪些读写?

curve在加载服务的时候会读取配置文件,运行过程中会打印日志。如果日志和配置文件目录没有配置到系统盘上,基本上不会的影响系统盘。

Q: topology.yaml 添加自定义变量,curveadm 如何渲染到 curve 对应的配置文件

A: curve 在制作镜像时会将配置文件中的某些配置值替换成变量,而 curveadm 在同步配置时,会先拉取这个配置文件,逐行解析,发现有变量的话,会去 curveadm 的变量注册表中查找相应变量的值,并用该值替换配置文件中的变量。

问题6:braft leader IO定序对性能的影响如何,怎样消减呢?

问题5:polarFS和spdk的合入,发布的计划日期是什么?能否提供这两个特性的设计说明文档以供了解?

polarFS的spdk代码已经推到github,文档说明:PolarDB-FileSystem/nvme_chunkserver.md at curvestore · opencurve/PolarDB-FileSystem · GitHub

curve对接polarFS的代码已提交pr,正在联调测试:curvebs : support spdk over nvme by xu-chaojie · Pull Request #1770 · opencurve/curve · GitHub

预计稳定版本发布日志:10月底

写入在服务端处理分两层,一个是raft写wal,一个是apply到chunk。
apply到chunk现在是默认是10个队列,这个数字是经过测试后发现10个队列并发写可以把磁盘打满。
已经做了一些优化了,比如读写队列分开,让读不影响写。
在队列里面排队,就会有排队时间的问题,如果测试下来觉得这方面影响很大,可以尝试一下调整队列个数

问题2:copyset的数量是可设置的,还是由chunksize大小决定的?

copyset的数量是单独设置的,与chunksize无关。可以在部署集群时,进行设置。
修改 topology.yaml 中 chunkserver_services → config → copysets 对应的值,就是 copyset 的数量。

问题1:ssd比hdd性能更好,为什么取消o_dsync后提升效果ssd更明显?

hdd开了raid卡cache,主要是cache的影响,导致hdd上抖动很厉害,性能提升不明显。

更详细的说明 @xuchaojie 可以继续补充一下。

问题7:Raft需要定时打快照,以清理老的log entry,否则Raft日志会无限增长下去;
日志的增长会影响内存,快照服务必须要配置?

这里的快照是raft的概念,不是卷的快照,与curve的snapshotcloneserver无关。
参考资料: