The metricbeat system module should use GetSystemTimes instead of NtQuerySystemInformation for calculating cpu usage. Or using performance counters. As a workaround you could create following windows module
- module: windows
metricsets: ["perfmon"]
enabled: true
period: 1s
perfmon.counters:
- instance_label: processor.time
measurement_label: processor.time.total.pct
query: '\Processor(_Total)\% Processor Time'
and check if the value match with the one from taskmanager.