328 lines
14 KiB
Go
328 lines
14 KiB
Go
//go:build linux
|
|
|
|
package cgroup
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"github.com/influxdata/telegraf"
|
|
"github.com/influxdata/telegraf/metric"
|
|
"github.com/influxdata/telegraf/testutil"
|
|
)
|
|
|
|
func TestCgroupV2Cpu(t *testing.T) {
|
|
var acc testutil.Accumulator
|
|
var cg = &CGroup{
|
|
Paths: []string{"testdata/v2"},
|
|
Files: []string{"cpu.*"},
|
|
logged: make(map[string]bool),
|
|
}
|
|
|
|
expected := []telegraf.Metric{
|
|
metric.New(
|
|
"cgroup",
|
|
map[string]string{"path": `testdata/v2`},
|
|
map[string]interface{}{
|
|
|
|
"cpu.idle": int64(0),
|
|
|
|
"cpu.max.0": int64(4800000),
|
|
"cpu.max.1": int64(100000),
|
|
"cpu.max.burst": int64(0),
|
|
|
|
"cpu.pressure.full.avg10": float64(0),
|
|
"cpu.pressure.full.avg300": float64(0.05),
|
|
"cpu.pressure.full.avg60": float64(0.08),
|
|
"cpu.pressure.full.total": int64(277111656),
|
|
"cpu.pressure.some.avg10": float64(0),
|
|
"cpu.pressure.some.avg300": float64(0.06),
|
|
"cpu.pressure.some.avg60": float64(0.08),
|
|
"cpu.pressure.some.total": int64(293391454),
|
|
|
|
"cpu.stat.burst_usec": int64(0),
|
|
"cpu.stat.core_sched.force_idle_usec": int64(0),
|
|
"cpu.stat.nr_bursts": int64(0),
|
|
"cpu.stat.nr_periods": int64(3936904),
|
|
"cpu.stat.nr_throttled": int64(6004),
|
|
"cpu.stat.system_usec": int64(37345608977),
|
|
"cpu.stat.throttled_usec": int64(19175137007),
|
|
"cpu.stat.usage_usec": int64(98701325189),
|
|
"cpu.stat.user_usec": int64(61355716211),
|
|
|
|
"cpu.weight": int64(79),
|
|
"cpu.weight.nice": int64(1),
|
|
},
|
|
time.Unix(0, 0),
|
|
),
|
|
}
|
|
|
|
require.NoError(t, acc.GatherError(cg.Gather))
|
|
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
|
|
}
|
|
|
|
func TestCgroupV2Memory(t *testing.T) {
|
|
var acc testutil.Accumulator
|
|
var cg = &CGroup{
|
|
Paths: []string{"testdata/v2"},
|
|
Files: []string{"memory.*"},
|
|
logged: make(map[string]bool),
|
|
}
|
|
|
|
expected := []telegraf.Metric{
|
|
metric.New(
|
|
"cgroup",
|
|
map[string]string{"path": `testdata/v2`},
|
|
map[string]interface{}{
|
|
"memory.current": int64(13071106048),
|
|
"memory.events.high": int64(0),
|
|
"memory.events.local.high": int64(0),
|
|
"memory.events.local.low": int64(0),
|
|
"memory.events.local.max": int64(0),
|
|
"memory.events.local.oom": int64(0),
|
|
"memory.events.local.oom_group_kill": int64(0),
|
|
"memory.events.local.oom_kill": int64(0),
|
|
"memory.events.low": int64(0),
|
|
"memory.events.max": int64(0),
|
|
"memory.events.oom": int64(0),
|
|
"memory.events.oom_group_kill": int64(0),
|
|
"memory.events.oom_kill": int64(0),
|
|
"memory.high": int64(math.MaxInt64),
|
|
"memory.low": int64(0),
|
|
"memory.max": int64(103079215104),
|
|
"memory.min": int64(0),
|
|
"memory.numa_stat.active_anon.N0": int64(81920),
|
|
"memory.numa_stat.active_anon.N1": int64(98304),
|
|
"memory.numa_stat.active_file.N0": int64(2946760704),
|
|
"memory.numa_stat.active_file.N1": int64(2650640384),
|
|
"memory.numa_stat.anon.N0": int64(1330585600),
|
|
"memory.numa_stat.anon.N1": int64(1141161984),
|
|
"memory.numa_stat.anon_thp.N0": int64(0),
|
|
"memory.numa_stat.anon_thp.N1": int64(2097152),
|
|
"memory.numa_stat.file.N0": int64(4531773440),
|
|
"memory.numa_stat.file.N1": int64(4001075200),
|
|
"memory.numa_stat.file_dirty.N0": int64(258048),
|
|
"memory.numa_stat.file_dirty.N1": int64(45056),
|
|
"memory.numa_stat.file_mapped.N0": int64(10272768),
|
|
"memory.numa_stat.file_mapped.N1": int64(3940352),
|
|
"memory.numa_stat.file_thp.N0": int64(0),
|
|
"memory.numa_stat.file_thp.N1": int64(0),
|
|
"memory.numa_stat.file_writeback.N0": int64(0),
|
|
"memory.numa_stat.file_writeback.N1": int64(0),
|
|
"memory.numa_stat.inactive_anon.N0": int64(1330479104),
|
|
"memory.numa_stat.inactive_anon.N1": int64(1141067776),
|
|
"memory.numa_stat.inactive_file.N0": int64(1584979968),
|
|
"memory.numa_stat.inactive_file.N1": int64(1350430720),
|
|
"memory.numa_stat.kernel_stack.N0": int64(4161536),
|
|
"memory.numa_stat.kernel_stack.N1": int64(5537792),
|
|
"memory.numa_stat.pagetables.N0": int64(7839744),
|
|
"memory.numa_stat.pagetables.N1": int64(8462336),
|
|
"memory.numa_stat.sec_pagetables.N0": int64(0),
|
|
"memory.numa_stat.sec_pagetables.N1": int64(0),
|
|
"memory.numa_stat.shmem.N0": int64(0),
|
|
"memory.numa_stat.shmem.N1": int64(4096),
|
|
"memory.numa_stat.shmem_thp.N0": int64(0),
|
|
"memory.numa_stat.shmem_thp.N1": int64(0),
|
|
"memory.numa_stat.slab_reclaimable.N0": int64(950447920),
|
|
"memory.numa_stat.slab_reclaimable.N1": int64(1081869088),
|
|
"memory.numa_stat.slab_unreclaimable.N0": int64(2654816),
|
|
"memory.numa_stat.slab_unreclaimable.N1": int64(2661512),
|
|
"memory.numa_stat.swapcached.N0": int64(0),
|
|
"memory.numa_stat.swapcached.N1": int64(0),
|
|
"memory.numa_stat.unevictable.N0": int64(0),
|
|
"memory.numa_stat.unevictable.N1": int64(0),
|
|
"memory.numa_stat.workingset_activate_anon.N0": int64(0),
|
|
"memory.numa_stat.workingset_activate_anon.N1": int64(0),
|
|
"memory.numa_stat.workingset_activate_file.N0": int64(40145),
|
|
"memory.numa_stat.workingset_activate_file.N1": int64(65541),
|
|
"memory.numa_stat.workingset_nodereclaim.N0": int64(0),
|
|
"memory.numa_stat.workingset_nodereclaim.N1": int64(0),
|
|
"memory.numa_stat.workingset_refault_anon.N0": int64(0),
|
|
"memory.numa_stat.workingset_refault_anon.N1": int64(0),
|
|
"memory.numa_stat.workingset_refault_file.N0": int64(346752),
|
|
"memory.numa_stat.workingset_refault_file.N1": int64(282604),
|
|
"memory.numa_stat.workingset_restore_anon.N0": int64(0),
|
|
"memory.numa_stat.workingset_restore_anon.N1": int64(0),
|
|
"memory.numa_stat.workingset_restore_file.N0": int64(19386),
|
|
"memory.numa_stat.workingset_restore_file.N1": int64(10010),
|
|
"memory.oom.group": int64(1),
|
|
"memory.peak": int64(87302021120),
|
|
"memory.pressure.full.avg10": float64(0),
|
|
"memory.pressure.full.avg300": float64(0),
|
|
"memory.pressure.full.avg60": float64(0),
|
|
"memory.pressure.full.total": int64(250662),
|
|
"memory.pressure.some.avg10": float64(0),
|
|
"memory.pressure.some.avg300": float64(0),
|
|
"memory.pressure.some.avg60": float64(0),
|
|
"memory.pressure.some.total": int64(250773),
|
|
"memory.stat.active_anon": int64(180224),
|
|
"memory.stat.active_file": int64(5597401088),
|
|
"memory.stat.anon": int64(2471755776),
|
|
"memory.stat.anon_thp": int64(2097152),
|
|
"memory.stat.file": int64(8532865024),
|
|
"memory.stat.file_dirty": int64(319488),
|
|
"memory.stat.file_mapped": int64(14213120),
|
|
"memory.stat.file_thp": int64(0),
|
|
"memory.stat.file_writeback": int64(0),
|
|
"memory.stat.inactive_anon": int64(2471559168),
|
|
"memory.stat.inactive_file": int64(2935459840),
|
|
"memory.stat.kernel": int64(2065149952),
|
|
"memory.stat.kernel_stack": int64(9699328),
|
|
"memory.stat.pagetables": int64(16302080),
|
|
"memory.stat.percpu": int64(3528),
|
|
"memory.stat.pgactivate": int64(13516655),
|
|
"memory.stat.pgdeactivate": int64(9151751),
|
|
"memory.stat.pgfault": int64(1973187551),
|
|
"memory.stat.pglazyfree": int64(5549),
|
|
"memory.stat.pglazyfreed": int64(1),
|
|
"memory.stat.pgmajfault": int64(8497),
|
|
"memory.stat.pgrefill": int64(9153617),
|
|
"memory.stat.pgscan": int64(12149209),
|
|
"memory.stat.pgscan_direct": int64(4436521),
|
|
"memory.stat.pgscan_kswapd": int64(7712688),
|
|
"memory.stat.pgsteal": int64(12139915),
|
|
"memory.stat.pgsteal_direct": int64(4429690),
|
|
"memory.stat.pgsteal_kswapd": int64(7710225),
|
|
"memory.stat.sec_pagetables": int64(0),
|
|
"memory.stat.shmem": int64(4096),
|
|
"memory.stat.shmem_thp": int64(0),
|
|
"memory.stat.slab": int64(2037641160),
|
|
"memory.stat.slab_reclaimable": int64(2032322192),
|
|
"memory.stat.slab_unreclaimable": int64(5318968),
|
|
"memory.stat.sock": int64(0),
|
|
"memory.stat.swapcached": int64(0),
|
|
"memory.stat.thp_collapse_alloc": int64(3),
|
|
"memory.stat.thp_fault_alloc": int64(13),
|
|
"memory.stat.unevictable": int64(0),
|
|
"memory.stat.vmalloc": int64(0),
|
|
"memory.stat.workingset_activate_anon": int64(0),
|
|
"memory.stat.workingset_activate_file": int64(105686),
|
|
"memory.stat.workingset_nodereclaim": int64(0),
|
|
"memory.stat.workingset_refault_anon": int64(0),
|
|
"memory.stat.workingset_refault_file": int64(629356),
|
|
"memory.stat.workingset_restore_anon": int64(0),
|
|
"memory.stat.workingset_restore_file": int64(29396),
|
|
"memory.swap.current": int64(0),
|
|
"memory.swap.events.fail": int64(0),
|
|
"memory.swap.events.high": int64(0),
|
|
"memory.swap.events.max": int64(0),
|
|
"memory.swap.high": int64(math.MaxInt64),
|
|
"memory.swap.max": int64(0),
|
|
},
|
|
time.Unix(0, 0),
|
|
),
|
|
}
|
|
|
|
require.NoError(t, acc.GatherError(cg.Gather))
|
|
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
|
|
}
|
|
func TestCgroupV2Io(t *testing.T) {
|
|
var acc testutil.Accumulator
|
|
var cg = &CGroup{
|
|
Paths: []string{"testdata/v2"},
|
|
Files: []string{"io.*"},
|
|
logged: make(map[string]bool),
|
|
}
|
|
|
|
expected := []telegraf.Metric{
|
|
metric.New(
|
|
"cgroup",
|
|
map[string]string{"path": `testdata/v2`},
|
|
map[string]interface{}{
|
|
"io.bfq.weight.default": int64(100),
|
|
"io.pressure.full.avg10": float64(0),
|
|
"io.pressure.full.avg300": float64(0),
|
|
"io.pressure.full.avg60": float64(0),
|
|
"io.pressure.full.total": 184607952,
|
|
"io.pressure.some.avg10": float64(0),
|
|
"io.pressure.some.avg300": float64(0),
|
|
"io.pressure.some.avg60": float64(0),
|
|
"io.pressure.some.total": 185162400,
|
|
"io.stat.259:8.dbytes": int64(0),
|
|
"io.stat.259:8.dios": int64(0),
|
|
"io.stat.259:8.rbytes": int64(74526720),
|
|
"io.stat.259:8.rios": int64(2936),
|
|
"io.stat.259:8.wbytes": int64(3789381632),
|
|
"io.stat.259:8.wios": int64(181928),
|
|
},
|
|
time.Unix(0, 0),
|
|
),
|
|
}
|
|
|
|
require.NoError(t, acc.GatherError(cg.Gather))
|
|
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
|
|
}
|
|
|
|
func TestCgroupV2Hugetlb(t *testing.T) {
|
|
var acc testutil.Accumulator
|
|
var cg = &CGroup{
|
|
Paths: []string{"testdata/v2"},
|
|
Files: []string{"hugetlb.*"},
|
|
logged: make(map[string]bool),
|
|
}
|
|
|
|
expected := []telegraf.Metric{
|
|
metric.New(
|
|
"cgroup",
|
|
map[string]string{"path": `testdata/v2`},
|
|
map[string]interface{}{
|
|
"hugetlb.1GB.current": int64(0),
|
|
"hugetlb.1GB.events.0": int64(math.MaxInt64),
|
|
"hugetlb.1GB.events.1": int64(0),
|
|
"hugetlb.1GB.events.local.0": int64(math.MaxInt64),
|
|
"hugetlb.1GB.events.local.1": int64(0),
|
|
"hugetlb.1GB.max": int64(math.MaxInt64),
|
|
"hugetlb.1GB.numa_stat.N0": int64(0),
|
|
"hugetlb.1GB.numa_stat.N1": int64(0),
|
|
"hugetlb.1GB.numa_stat.total": int64(0),
|
|
"hugetlb.1GB.rsvd.current": int64(0),
|
|
"hugetlb.1GB.rsvd.max": int64(math.MaxInt64),
|
|
"hugetlb.2MB.current": int64(0),
|
|
"hugetlb.2MB.events.0": int64(math.MaxInt64),
|
|
"hugetlb.2MB.events.1": int64(0),
|
|
"hugetlb.2MB.events.local.0": int64(math.MaxInt64),
|
|
"hugetlb.2MB.events.local.1": int64(0),
|
|
"hugetlb.2MB.max": int64(math.MaxInt64),
|
|
"hugetlb.2MB.numa_stat.N0": int64(0),
|
|
"hugetlb.2MB.numa_stat.N1": int64(0),
|
|
"hugetlb.2MB.numa_stat.total": int64(0),
|
|
"hugetlb.2MB.rsvd.current": int64(0),
|
|
"hugetlb.2MB.rsvd.max": int64(math.MaxInt64),
|
|
},
|
|
time.Unix(0, 0),
|
|
),
|
|
}
|
|
|
|
require.NoError(t, acc.GatherError(cg.Gather))
|
|
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
|
|
}
|
|
|
|
func TestCgroupV2Pids(t *testing.T) {
|
|
var acc testutil.Accumulator
|
|
var cg = &CGroup{
|
|
Paths: []string{"testdata/v2"},
|
|
Files: []string{"pids.*"},
|
|
logged: make(map[string]bool),
|
|
}
|
|
|
|
expected := []telegraf.Metric{
|
|
metric.New(
|
|
"cgroup",
|
|
map[string]string{"path": `testdata/v2`},
|
|
map[string]interface{}{
|
|
"pids.current": int64(592),
|
|
"pids.events.0": int64(math.MaxInt64),
|
|
"pids.events.1": int64(0),
|
|
"pids.max": int64(629145),
|
|
"pids.peak": int64(2438),
|
|
},
|
|
time.Unix(0, 0),
|
|
),
|
|
}
|
|
|
|
require.NoError(t, acc.GatherError(cg.Gather))
|
|
testutil.RequireMetricsEqual(t, expected, acc.GetTelegrafMetrics(), testutil.IgnoreTime())
|
|
}
|