searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

虚拟机磁盘流量统计实现方法介绍

2023-03-29 01:32:24
67
0

一、Ceph磁盘流量统计实现方法

    Ceph提供perf counters统计工具(src/common/perf_counters.h)方便各个模块(块设备客户端、文件系统客户端、对象存储网关客户端等)调用。

    Perf counters主要提供6种统计器,需使用PerfCountersBuilder提供的方法生成,包括:整数单值记录(add_u64)、整数总数统计(add_u64_counter)、整数平均值统计(add_u64_avg)、整数条形图统计(add_u64_counter_histogram)、时间单值记录(add_time)、时间平均值统计(add_time_avg)。

    每次请求完成时,客户端调用以上统计器提供的数据更新方法,对统计指标进行更新。

    此外, PerfCounters提供dump_formatted方法,可对所有统计值进行统一的格式化输出。

    目前Ceph的块设备客户端对读写请求的统计指标主要如下:读写请求总字节数,读写请求总次数、总时延、平均时延。

    块设备客户端的所有统计指标在src/librbd/Types.h中定义,统计器在src/librbd/ImageCtx.h的perf_start方法中调用PerfCountersBuilder提供的方法生成。块设备客户端以单个块设备为单位对以上指标分别进行统计。

    在ceph.conf配置文件的client域,配置admin socket参数指定socket文件路径,然后通过以下命令可打印以JSON格式呈现的时延统计信息:

# ceph --admin-daemon <socket_file> perf dump

    相关代码实现在src/common/ceph_context.cc中。

    在ceph.conf配置文件的client域,配置log file参数指定日志文件路径,配置debug rbd参数指定日志级别(建议设置为5)。

    代码中调用ldout方法(在src/common/dout.h中定义)可指定日志级别进行日志输出。

二、Qemu磁盘流量统计实现方法

    Qemu并没有一个公共的统计工具,对于访问块设备的请求,在block/accounting.h中进行统计,每次请求完成时,在block_account_one_io方法中对统计指标进行更新。

    此外,在block/accounting.h中并未提供公共的方法对所有统计值进行格式化输出。

    目前qemu对读写请求的统计指标主要如下:读写请求总字节数,读写请求总次数、总时延(平均时延可通过计算得到)。此外,通过QMP命令进行设置,可支持按时延区间的读写请求数统计(命令为x-block-latency-histogram-set,参数包括块设备名称以及区间边界)。

    Qemu的所有统计指标在block/accounting.h中的BlockAcctStats结构体中定义,Qemu同样以单个块设备为单位对以上指标分别进行统计。

    Qemu提供QMP命令方式对指标进行访问,命令为query-blockstats(连接Qemu Monitor的socket文件可能被libvirtd占用,对于通过libvirt启动的Qemu虚拟机,通过QMP命令进行指标访问,需要通过停止libvirtd服务或其它方式释放对socket文件的占用),代码实现在block/qapi.c的qmp_query_blockstats方法中。

    Qemu日志路径通过命令行参数指定(对于通过libvirt启动的Qemu虚拟机,日志路径在libvirt中指定,默认在/var/log/libvirt/qemu目录下)。

在代码中,打印日志的方法定义在util/qemu-error.c中,可使用info_report、warn_report、error_report打印不同级别的日志。

0条评论
作者已关闭评论
CD
15文章数
0粉丝数
CD
15 文章 | 0 粉丝
原创

虚拟机磁盘流量统计实现方法介绍

2023-03-29 01:32:24
67
0

一、Ceph磁盘流量统计实现方法

    Ceph提供perf counters统计工具(src/common/perf_counters.h)方便各个模块(块设备客户端、文件系统客户端、对象存储网关客户端等)调用。

    Perf counters主要提供6种统计器,需使用PerfCountersBuilder提供的方法生成,包括:整数单值记录(add_u64)、整数总数统计(add_u64_counter)、整数平均值统计(add_u64_avg)、整数条形图统计(add_u64_counter_histogram)、时间单值记录(add_time)、时间平均值统计(add_time_avg)。

    每次请求完成时,客户端调用以上统计器提供的数据更新方法,对统计指标进行更新。

    此外, PerfCounters提供dump_formatted方法,可对所有统计值进行统一的格式化输出。

    目前Ceph的块设备客户端对读写请求的统计指标主要如下:读写请求总字节数,读写请求总次数、总时延、平均时延。

    块设备客户端的所有统计指标在src/librbd/Types.h中定义,统计器在src/librbd/ImageCtx.h的perf_start方法中调用PerfCountersBuilder提供的方法生成。块设备客户端以单个块设备为单位对以上指标分别进行统计。

    在ceph.conf配置文件的client域,配置admin socket参数指定socket文件路径,然后通过以下命令可打印以JSON格式呈现的时延统计信息:

# ceph --admin-daemon <socket_file> perf dump

    相关代码实现在src/common/ceph_context.cc中。

    在ceph.conf配置文件的client域,配置log file参数指定日志文件路径,配置debug rbd参数指定日志级别(建议设置为5)。

    代码中调用ldout方法(在src/common/dout.h中定义)可指定日志级别进行日志输出。

二、Qemu磁盘流量统计实现方法

    Qemu并没有一个公共的统计工具,对于访问块设备的请求,在block/accounting.h中进行统计,每次请求完成时,在block_account_one_io方法中对统计指标进行更新。

    此外,在block/accounting.h中并未提供公共的方法对所有统计值进行格式化输出。

    目前qemu对读写请求的统计指标主要如下:读写请求总字节数,读写请求总次数、总时延(平均时延可通过计算得到)。此外,通过QMP命令进行设置,可支持按时延区间的读写请求数统计(命令为x-block-latency-histogram-set,参数包括块设备名称以及区间边界)。

    Qemu的所有统计指标在block/accounting.h中的BlockAcctStats结构体中定义,Qemu同样以单个块设备为单位对以上指标分别进行统计。

    Qemu提供QMP命令方式对指标进行访问,命令为query-blockstats(连接Qemu Monitor的socket文件可能被libvirtd占用,对于通过libvirt启动的Qemu虚拟机,通过QMP命令进行指标访问,需要通过停止libvirtd服务或其它方式释放对socket文件的占用),代码实现在block/qapi.c的qmp_query_blockstats方法中。

    Qemu日志路径通过命令行参数指定(对于通过libvirt启动的Qemu虚拟机,日志路径在libvirt中指定,默认在/var/log/libvirt/qemu目录下)。

在代码中,打印日志的方法定义在util/qemu-error.c中,可使用info_report、warn_report、error_report打印不同级别的日志。

文章来自个人专栏
文章 | 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0