免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2013 | 回复: 0
打印 上一主题 下一主题

RRD文件格式分析(二) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-06 19:01 |只看该作者 |倒序浏览
                                       i.              活动头部:
数据结构:
typedef struct live_head_t {
    time_t           last_up;  //最后更新时间(秒)
    long            last_up_usec;     //最后更新毫秒
} live_head_t;
说明:
last_up : RRD文件最后更新的时间(秒级)
last_up_usec:RRD文件最后更新时间(微秒级)
*仅一条数据
                                     ii.              PDP数据域:
数据结构:
typedef struct pdp_prep_t{   
    char last_ds[LAST_DS_LEN];  //目前更新rrd 文件的数据
    unival        scratch[10];   
} pdp_prep_t;
说明:
    unival        scratch[10]:该变量类型是一个结构体,变量的功能就是存储计算CDP,计算多长时间没有接受到数据,等相关的信息.在实际的rrd文件中PDP的数量为DS的数量.存储的是每个DS的相关数据信息(时间,真实数据).
                                    iii.              CDP数据域:
typedef struct cdp_prep_t{
    unival         scratch[MAX_CDP_PAR_EN];         
} cdp_prep_t;
说明:
scratch:该变量存储了与计算CDP相关的数据,如多少个PDP没有数据(与该RRA中PDP的数量有关),目前CDP数据的计算值等信息.
改CDP的数量与RRA的数量相同,同时每一条CDP数据里面包含所有的DS.简单的说就是CDP是RRA的缩小集合,目的是为计算相同RRA中下一条RRA记录做准备.
                                   iv.              RRA指针域:
typedef struct rra_ptr_t {
    unsigned long    cur_row; //目前不同RRA数据已经更新到的
//位置
} rra_ptr_t;
小节:
       到目前位置已经清楚的看到了RRD头文件的大体面貌,至于具体的结构体内部请参考相应的代码.
       RRD头文件结构图如下(根据上面创建命令绘制)







1.RRD数据区:
数据结构:
typedef    double   rrd_value_t;  //RRD数据类型
rrd_value_t      *rrd_value;            //RRD在内存中存储形式
说明:RRD文件文件中除了RRD文件头部区域剩下的就是RRD文件数据区域.数据区域可以想象成为n*k*m 的矩阵,n为RRA的数量,k为不同RRA的行数,m为数据源DS的数量.
RRD数据区域的图形请参考上面RRA与DS的小节.

                                                                                                                          (待续)


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/33167/showart_292599.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP