On Arm platform, no 'core id' and 'physical id' in '/proc/cpuinfo'.
So we should search sysfs cpu path directly to get the data of
'thread_id' &'core_id' & 'node_id'.
This method can also be used on other platforms, such as x86, ppc64le...
/sys/bus/cpu/devices/cpu%d contains the information of 'core_id' & 'node_id'.
Such as:
cat /sys/bus/cpu/devices/cpu0/topology/core_id
ls /sys/bus/cpu/devices/cpu0/node0
Signed-off-by: Bin Lu <bin.lu@arm.com>
Use Utsname from golang.org/x/sys/unix which contains byte array
instead of int8/uint8 array members. This allows to simplify the string
conversions of these members.
PerDiskStats reported from cgroups were not being surfaced into
prometheus. In order to properly correlate the metrics, we need to
assign a device label to each metric (which is the FS or device path).
Since blkio cgroup tracks devices, we create a synthetic device
`/dev/NAME` for the metric.
Assign a Device label to each PerDiskStat for the handlers up front, and
then surface the PerDiskStat values into the prometheus metrics. Report
two new metrics - total bytes read and total bytes written.