class ElasticAPM::Metrics::CpuMemSet::Linux::ProcStat

@api private

def read!

def read!
  stat =
    IO.readlines('/proc/stat')
      .lazy
      .find { |sp| sp.start_with?('cpu ') }
      .split
      .map(&:to_i)[1..-1]
  values =
    CPU_FIELDS.each_with_index.each_with_object({}) do |(key, i), v|
      v[key] = stat[i] || 0
    end
  @total =
    values[:user] +
    values[:nice] +
    values[:system] +
    values[:idle] +
    values[:iowait] +
    values[:irq] +
    values[:softirq] +
    values[:steal]
  @usage = @total - (values[:idle] + values[:iowait])
  self
end