[ZBX-25503] Windows agent fails to monitor CPU related counters starting with 49 thread/core on NUMA enabled machine Created: 2024 Nov 04  Updated: 2025 Jan 30  Resolved: 2025 Jan 29

Status: Closed
Project: ZABBIX BUGS AND ISSUES
Component/s: Agent (G)
Affects Version/s: 6.0.35, 7.0.5, 7.2.0alpha1
Fix Version/s: 6.0.39rc1, 7.0.10rc1, 7.2.4rc1, 7.4.0alpha1

Type: Documentation task Priority: Major
Reporter: Edgar Akhmetshin Assignee: Mihails Prihodko
Resolution: Fixed Votes: 0
Labels: cpu, numa, windows
Remaining Estimate: Not Specified
Time Spent: 36h
Original Estimate: Not Specified
Environment:

2 x Intel 6248R
Windows 2016/2019/2022


Attachments: Text File command output- typeperf -qx Processor.txt     Text File command typeperf qx Processor Information output .txt     Text File cpuinfo.txt     PNG File image-2024-11-04-14-38-22-340.png     PNG File image-2024-11-04-14-38-59-616.png    
Issue Links:
Causes
caused by ZBX-25819 Fix the custom template Closed
Duplicate
Related
related to ZBXNEXT-9694 Create a next generation system.cpu.d... Open
Team: Team B
Sprint: S24-W48/49, S24-W50/51/52/1, S25-W4/5
Story Points: 2

 Description   

Steps to reproduce:

  1. Configure NUMA host with 2 sockets/24 cores/48 threads each, symmetric configuration
  2. configure CPU discovery and get keys like

Expected:
CPU vendors has CPU with 128 cores each for 2/4 socket platforms, provide working Agent/Agent2



 Comments   
Comment by Mohammed ZUBERUDDIN [ 2024 Nov 13 ]

Any update on this issue?

Comment by Tomass Janis Bross [ 2024 Nov 15 ]

mohammed.zuberuddin Fix for this issue has been set for version 6.0.37, which could be released around mid-december.

Comment by Mihails Prihodko [ 2024 Dec 18 ]

DEV-note

This counters would be used for system.cpu.util item key:

if true == (64 >= pcpus->count && 1 == cpu_groups)
  6368:20241218:110808.354 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(_Total)\% Processor Time'
  6368:20241218:110808.359 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(0)\% Processor Time'
  6368:20241218:110808.360 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(1)\% Processor Time'
  6368:20241218:110808.361 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(2)\% Processor Time'
  6368:20241218:110808.361 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(3)\% Processor Time'
  6368:20241218:110808.362 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(4)\% Processor Time'
  6368:20241218:110808.363 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(5)\% Processor Time'
  6368:20241218:110808.363 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(6)\% Processor Time'
  6368:20241218:110808.364 [MPLOG] init_cpu_collector():179 counterPath = '\Processor(7)\% Processor Time'
  6368:20241218:110808.365 [MPLOG] init_cpu_collector():249 counterPath = '\System\Processor Queue Length'

if false == (64 >= pcpus->count && 1 == cpu_groups)
  4536:20241218:105937.967 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(_Total)\% Processor Time'
  4536:20241218:105937.969 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(0,0)\% Processor Time'
  4536:20241218:105937.970 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(0,1)\% Processor Time'
  4536:20241218:105937.971 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(0,2)\% Processor Time'
  4536:20241218:105937.972 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(0,3)\% Processor Time'
  4536:20241218:105937.973 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(0,4)\% Processor Time'
  4536:20241218:105937.975 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(0,5)\% Processor Time'
  4536:20241218:105937.977 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(0,6)\% Processor Time'
  4536:20241218:105937.978 [MPLOG] init_cpu_collector():229 counterPath = '\Processor Information(0,7)\% Processor Time'
  4536:20241218:105937.979 [MPLOG] init_cpu_collector():249 counterPath = '\System\Processor Queue Length'
Comment by Mihails Prihodko [ 2024 Dec 19 ]

Summary

The cause of this problem was that the following key was used

perf_counter[\238({#CPU.NUMBER})\6,120]

which equals to the key

perf_counter[\Processor({#CPU.NUMBER})\% Processor Time,120]

It does not work for the configuration with NUMA nodes and CPU count greater than 64. So "system.cpu.util" key should be used instead as as advised by Zabbix documentation at page Discovery of CPUs and CPU cores.

Documentation should be improved and the template should be fixed.

Zabbix works as expected.

Comment by Mohammed ZUBERUDDIN [ 2025 Jan 09 ]

Thank you for needful help. I am using sytem.cpu.util and its resolve the issue

 

Comment by Mihails Prihodko [ 2025 Jan 09 ]

mohammed.zuberuddin, welcome. The documentation will be updated soon.

Comment by Martins Valkovskis [ 2025 Jan 10 ]

Updated documentation:

  • Notes on system.cpu.util items on Windows: 6.0, 7.0, 7.2, 7.4 (new page)
  • Discovery of CPUs and CPU cores: 6.0, 7.0, 7.2, 7.4 (note added related to NUMA systems)
  • Known issues: 6.0, 7.0, 7.2, 7.4 (see "Processor groups on Windows")
Generated at Sun Apr 06 23:43:25 EEST 2025 using Jira 9.12.4#9120004-sha1:625303b708afdb767e17cb2838290c41888e9ff0.