формат архива показателей производительности (performance metrics archive format)
INDEX FILE (.index) RECORDS
After the archive log label record, the temporal index file
contains a plainly concatenated, unframed group of tuples, which
relate timestamps to 32-bit seek offsets in the volume and meta
files. These records are fixed-size, fixed-format, and are not
enclosed in the standard length/payload/length wrapper: they take
up the entire remainder of the .index file. See also
libpcp/logutil.c.
┌───────┬────────┬───────────────────────────────────────────────────┐
│Offset │ Length │ Name │
├───────┼────────┼───────────────────────────────────────────────────┤
│ 0 │ 4 │ event time, seconds part (past UNIX epoch) │
│ 4 │ 4 │ event time, microseconds part │
│ 8 │ 4 │ archive volume number (0...N) │
│ 12 │ 4 │ byte offset in .meta file of pmDesc or pmLogIndom │
│ 16 │ 4 │ byte offset in archive volume file of pmResult │
└───────┴────────┴───────────────────────────────────────────────────┘
Since the temporal index is optional, and exists only to speed up
time-based random access to metrics and their metadata, the index
records are emitted only intermittently. An archive reader
program should not presume any particular rate of data flow into
the index. However, common events that may trigger a new
temporal-index record include changes in instance-domains,
switching over to a new archive volume, and starting or stopping
logging. One reliable invariant however is that, for each index
entry, there are to be no meta or archive-volume records with a
timestamp after that in the index, but physically before the
byte-offset in the index.