On 15/06/21 09:53, Leon Romanovsky wrote:
Sorry for my naive questions, but how does telemetry get statistics
for hypervisors? Why is KVM different from hypervisors or NIC's statistics
or any other high speed devices (RDMA) that generate tons of data?
So the answer to the question "why KVM is different" is that it doesn't
have any stable identification except file descriptor. While hypervisors
have stable names, NICs and RDMA devices have interface indexes etc.
Did I get it right?
Right.
And this was second part of my question, the first part was my attempt to
get on answer why current statistics like process info (/proc/xxx/*), NICs
(netlink) and RDMA (sysfs) are not using binary format.
NICs are using binary format (partly in struct ethtool_stats, partly in
an array of u64). For KVM we decided to put the schema and the stats in
the same file (though you can use pread to get only the stats) to have a
single interface and avoid ioctls, unlike having both ETH_GSTRINGS and
ETH_GSTATS.
I wouldn't say processes are using any specific format. There's a mix
of "one value per file" (e.g. cpuset), human-readable tabular format
(e.g. limits, sched), human- and machine-readable tabular format (e.g.
status), and files that are ASCII but not human-readable (e.g. stat).
Paolo