知识卡片
分层与追踪定位存储性能瓶颈的方法论
内容
面对一个复杂、多层次的分布式存储系统,”读/写延迟高”这类症状可能源自I/O路径上任何一层,定位方法有两条互补的路子。纵向分层测试:既然系统本身是应用层(RBD/RGW/CephFS)→LIBRADOS层→OSD层→ObjectStore层→设备层这样层层封装的,就可以逐层单独测试(比如绕过应用层直接对LIBRADOS做rados bench),把各层测得的性能数据摆在一起比较,性能骤降发生在哪一层的测试结果里,问题就大概率出在那一层。横向请求追踪:像op-tracker、LTTng这类工具记录一个具体请求在各个处理阶段各自花了多长时间,通过时间线直接定位到究竟是排队、锁等待、磁盘I/O还是网络传输拖慢了这次请求。发散:纵向分层测试回答的是”哪一层慢”,横向追踪回答的是”具体这次请求哪一步慢”,两者结合——先用分层测试圈定大致范围,再用追踪工具精确定位到某个函数或某次系统调用——是排查任何分层架构系统性能问题的通用打法,不限于存储系统。
参考来源
《Linux开源存储全栈详解从Ceph到容器存储》第7章《分布式存储与Ceph》