ceph perf 源码分析
ceph为每个进程都记录了相应的性能统计计数,因此可以使用相应的命令行工具来查询ceph的读写性能,网络延迟等.
ceph的性能统计设计比较简单,从进程的角度来看,ceph的每个进程都有不同的子模块,而每个子模块又有不同的性能统计指标.
从源代码的设计上看,具体的性能统计指标对应一个perf_counter_data_any_d对象,其记录了该指标的名称和相应的值.每个子模块的所有的性能统计指标都记录在一个PerfCounters对象中,每个ceph进程的性能统计则记录在PerfCounterCollection对象中.
perf_counter_data_any_d
它对应了一个具体的性能统计指标,比方说一段时间内的读op数量,读取数据总量等.其中name属性记录指标名称,u64和avgcount分别记录相应的总值以及平均值,type记录了值的类型,ceph定义了4种基本的值类型,即枚举perfcounter_type_d
PerfCounters
它对应了每一个子模块的性能统计类,它包括了此模块下各种不同的性能统计指标,并且提供了相应的接口更新指标值,其中set, int, get用于整数值,而tset, tinc, tget用于时间值.有一点需要注意的是,它的构造函数设