Trace_definitions.Stat_trace
Trace of a tezos node run, or a replay run.
May be summarised to a JSON file.
The stat trace has these two properties:
There are multiple reasons for wanting compatibility with old versions:
For this system to work, the "decoding shape" of a version of the stat trace shouldn't ever change (once fixed). The way the trace is built for a version should be stable too.
To modify something in the definition or the collection: append a new version.
module V0 : sig ... end
module V1 : sig ... end
module Latest = V1
include module type of struct include Latest end
include module type of struct include V0 end
type tree = V0.tree = {
contents_hash : int;
contents_find : int;
contents_add : int;
node_hash : int;
node_mem : int;
node_add : int;
node_find : int;
node_val_v : int;
node_val_find : int;
node_val_list : int;
}
Stats extracted from Irmin.Tree.counters ()
.
val tree_t : tree Repr.t
type index = V0.index = {
bytes_read : int;
nb_reads : int;
bytes_written : int;
nb_writes : int;
nb_merge : int;
new_merge_durations : float list;
}
Stats extracted from Index.Stats.get ()
.
new_merge_durations
is not just a mirror of Index.Stats.merge_durations
, it only contains the new entries since the last time it was recorded. This list is always empty when in the header.
val index_t : index Repr.t
type gc = V0.gc = {
minor_words : float;
promoted_words : float;
major_words : float;
minor_collections : int;
major_collections : int;
heap_words : int;
compactions : int;
top_heap_words : int;
stack_size : int;
}
Stats extracted from Gc.quick_stat ()
.
val gc_t : gc Repr.t
Stats extracted from filesystem. Requires the path to the irmin store.
val disk_t : disk Repr.t
type 'pack_stats bag_of_stats_base = 'pack_stats V0.bag_of_stats_base = {
pack : 'pack_stats;
tree : tree;
index : index;
gc : gc;
disk : disk;
timestamp_wall : float;
timestamp_cpu : float;
}
Melting pot of stats, recorded before and after every commits.
They are necessary in order to compute any throughput analytics.
val bag_of_stats_base_t : 'a Repr.t -> 'b bag_of_stats_base Repr.t
Stats computed from the tree
value passed to the commit operation, before the commit, when the tree still carries the modifications brought by the previous operations.
val store_before_t : store_before Repr.t
Stats computed on the tree
value passed to the commit operation, after the commit, when the inode has been reconstructed and that Tree.length
is now innexpensive to perform.
val store_after_t : store_after Repr.t
type 'pack_stats commit_base = 'pack_stats V0.commit_base = {
duration : float32;
before : 'pack_stats bag_of_stats_base;
after : 'pack_stats bag_of_stats_base;
store_before : store_before;
store_after : store_after;
}
val commit_base_t : 'a Repr.t -> 'b commit_base Repr.t
val row_base_t :
'a Repr.t ->
[ `Add of int32
| `Checkout of int32
| `Commit of 'a commit_base
| `Copy of int32
| `Find of int32
| `Mem of int32
| `Mem_tree of int32
| `Remove of int32 ]
Repr.t
Informations gathered from the tree.exe parameters.
val setup_replay_t : setup_replay Repr.t
type config = V0.config = {
inode_config : int * int * int;
store_type : [ `Pack | `Pack_layered | `Pack_mem ];
setup : [ `Play of setup_play | `Replay of setup_replay ];
}
val config_t : config Repr.t
type 'pack_stats header_base = 'pack_stats V0.header_base = {
config : config;
hostname : string;
timeofday : float;
word_size : int;
initial_stats : 'pack_stats bag_of_stats_base;
}
val header_base_t : 'a Repr.t -> 'b header_base Repr.t
Stats extracted from Irmin_pack.Stats.get ()
.
val finds_t : finds Repr.t
type pack = V1.pack = {
finds : finds;
appended_hashes : int;
appended_offsets : int;
inode_add : int;
inode_remove : int;
inode_of_seq : int;
inode_of_raw : int;
inode_rec_add : int;
inode_rec_remove : int;
inode_to_binv : int;
inode_decode_bin : int;
inode_encode_bin : int;
}
Stats extracted from Irmin_pack.Stats.get ()
.
val pack_t : pack Repr.t
type commit = pack commit_base
val commit_t : pack commit_base Repr.t
type bag_of_stats = pack bag_of_stats_base
val bag_of_stats_t : pack bag_of_stats_base Repr.t
val row_t :
[ `Add of int32
| `Checkout of int32
| `Commit of pack commit_base
| `Copy of int32
| `Find of int32
| `Mem of int32
| `Mem_tree of int32
| `Remove of int32 ]
Repr.t
type header = pack header_base
val header_t : pack header_base Repr.t
val v1bos_of_v0bos : V0.bag_of_stats -> bag_of_stats
val watched_nodes : watched_node list
val step_list_per_watched_node : (watched_node * string list) list
val path_per_watched_node : (watched_node * string) list
include sig ... end
val encode_lheader : V1.pack V0.header_base Repr.encode_bin
val encode_lrow :
[ `Add of int32
| `Checkout of int32
| `Commit of V1.pack V0.commit_base
| `Copy of int32
| `Find of int32
| `Mem of int32
| `Mem_tree of int32
| `Remove of int32 ]
Repr.encode_bin
val open_reader :
string ->
V1.pack V0.header_base
* (unit ->
[ `Add of int32
| `Checkout of int32
| `Commit of V1.pack V0.commit_base
| `Copy of int32
| `Find of int32
| `Mem of int32
| `Mem_tree of int32
| `Remove of int32 ]
Stdlib__Seq.node)
val create_file : string -> V1.pack V0.header_base -> writer
val append_row :
writer ->
[ `Add of int32
| `Checkout of int32
| `Commit of V1.pack V0.commit_base
| `Copy of int32
| `Find of int32
| `Mem of int32
| `Mem_tree of int32
| `Remove of int32 ] ->
unit
val flush : writer -> unit
val close : writer -> unit
val remove : writer -> unit