summaryrefslogtreecommitdiffstats
path: root/database/engine/datafile.ksy
blob: 28d4b393553ee25b6c19f6b946b52d9862f43be5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
meta:
  id: netdata_datafile
  endian: le

seq:
  - id: hdr
    type: header
    size: 4096
  - id: extents
    type: extent
    repeat: eos

types:
  header:
    seq:
      - id: magic
        contents: "netdata-data-file"
      - id: reserved
        size: 15
      - id: version
        contents: "1.0"
      - id: reserved1
        size: 13
      - id: tier
        type: u1
  extent_page_descr:
    seq:
      - id: type
        type: u1
        enum: page_type
      - id: uuid
        size: 16
      - id: page_len
        type: u4
      - id: start_time_ut
        type: u8
      - id: end_time_ut
        type: u8
    enums:
      page_type:
        0: metrics
        1: tier
  extent_header:
    seq:
      - id: payload_length
        type: u4
      - id: compression_algorithm
        type: u1
        enum: compression_algos
      - id: number_of_pages
        type: u1
      - id: page_descriptors
        type: extent_page_descr
        repeat: expr
        repeat-expr: number_of_pages
    enums:
      compression_algos:
        0: rrd_no_compression
        1: rrd_lz4
  extent_trailer:
    seq:
      - id: crc32_checksum
        type: u4
  extent:
    seq:
      - id: header
        type: extent_header
      - id: payload
        size: header.payload_length
      - id: trailer
        type: extent_trailer
      - id: padding
        size: (((_io.pos + 4095) / 4096) * 4096) - _io.pos
        # the extent size is made to always be a multiple of 4096