cephfs内核客户端的性能如何?
问题描述测试c:。
查一下网卡流量,并不是全:
检查集群负载是否也非常低,osd磁盘是否非常空闲,并验证多台机器正在并发测试,总吞吐量是否可以上升。怀疑单个客户端上限存在瓶颈。
源代码分析集群没有满,网络不是瓶颈,只能从内核客户端cephfs的写io入手,寻找问题根源。cephfs内核客户端在文件fs/ceph/file.c:中编写io代码。
从代码实现来看,主要流程是三个步骤:n:。
先看超时时间,传入是0,最后结果是long_max,几乎都是wait:。
接下来,看条件的满足程度,:
根据kernel的注释,函数sch:。
从源代码分析,很明显,一个请求发出后,只有在请求完成后才会发出下一个请求,io并没有并发分配到后端集群。
下一个问题是如何确定每个请求的大小?这与文件的布局属性和当前的写入位置有关。如果从文件偏移量0开始写入并使用默认属性,则最大大小是ceph对象大小,即4mb。c:。
获取文件信息节点
对应于文件的对象
检查两个对象对应的osd信息,分别对应osd121和130:。
再次执行刚才的dd命令,观察两个主osd(121,130)上的op。同时使用ftrac:以上。
c:04:19.049346,止于16:04:19.44999。
这是osd130的信息。操作的对象是1000088.0001,操作持续439.539毫秒..op从16:04:19.491627开始,到16:04:19.9166结束。
可以清楚的看到,先写第一个对象,再写第二个对象。对象之间没有并发写,这不同于块存储和块存储的实现,至少是librbd的实现。如果一个io同时对应于多个对象,则同时发出多个请求,而不是等待第一个对象完成后再发出第二个对象的io。参见下面的代码:。
用于写入文件的客户端ftrace信息启用ftrac:
:观察日志
这里启动下一个请求花了将近500毫秒,但是从osd的分析来看,第一个io完成用了426毫秒。osd完成io后通知内核客户端有网络延迟,再加上内核调度的延迟,差不多可以匹配了。
结论通过源代码分析,cephfs在direct的情况下性能确实有限,然后分别通过集群osd和内核客户端验证。然而,用户不不要太担心性能,因为在正常情况下,它不会赢。;不要直接写,内核客户端有页面缓存,会让写的很快。
更接近真实的使用场景,用户首先写入数据,最后调用同步操作:一次。
希望我的回答能对你有所帮助!
10t希捷硬盘?
希捷exosx10硬盘包含10tb和8tb两个版本,是安全、大容量、高性能的企业级硬盘。它针对要求极高的超大规模应用进行了优化,最大限度地节省了总拥有成本。
exox10企业级硬盘支持每个硬盘高达8tb,每个机架额外增加25%pb。高存储密度支持使用最新技术和最高效率,有助于拓展数据域的边界,使数据中心架构师和it专业人员能够为要求苛刻的24x7运营提供可靠的性能、坚如磐石的可靠性和钢铁。总体安全性和非常低的总拥有成本。
exox10硬盘提供行业8tb硬盘的最高性能,配有高级写缓存,非常适合oltp、hadoop、ceph和hpc应用。超大规模sata型号针对大规模数据传输进行了调整,随机写入性能提升了20%。希捷优化存储。;的动力平衡功能和体验行业的最佳iops性能功耗比。exox10由250万小时的mtbf支持。
希捷企业盘10tb,好价到1699元,刚需入。
原文标题:ceph适合存储什么数据 CephFS内核客户端的性能如何?,如若转载,请注明出处:https://www.taihaichina.com/tag/26482.html
免责声明:此资讯系转载自合作媒体或互联网其它网站,「泰海号」登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,文章内容仅供参考。