[comment]: # translation:outdated

[comment]: # ({new-c6c2606b})

# 18 Notes on system.cpu.util items on Windows

[comment]: # ({/new-c6c2606b})

[comment]: # ({new-6f3a8010})

[system.cpu.util](/manual/config/items/itemtypes/zabbix_agent#system.cpu.util) item provides the CPU utilization percentage.

64 logical CPUs (threads) is a hard limit for 32-bit Windows systems and some old 64-bit versions,
such as Windows Vista. Systems with <= 64 threads will always have one processor group (see [known issues](/manual/installation/known_issues#win-proc-groups)), which means
it's OK to use the old performance counter "\Processor(n)\% Processor Time". However, for systems with
more than 64 threads Windows distributes them evenly across multiple processor groups with maximum
64 threads per single group. Given that "\Processor(n)" doesn't report values for n >= 64 we need
to use "\Processor Information(g, n)" where g is a group number and n is a thread number within
the group. So, for 72-thread system there will be two groups with 36 threads each and Windows will
report counters "\Processor Information(0, n)" with 0 <= n <= 31 and "\Processor Information(1,n)".

When a collector process is started on Zabbix agent for Windows, the following performance counters are initialized and later used for Zabbix agent items with key `system.cpu.util[n]`, `system.cpu.util[total]`.

If logical CPU count is less or equal than 64 and number of CPU groups is equal to 1, then the following counters are initialized, where G is processor group count and N is processor count in group:

```bash
\Processor(_Total)\% Processor Time
\Processor(0)\% Processor Time
\Processor(1)\% Processor Time
\Processor(2)\% Processor Time
...
\Processor(N-1)\% Processor Time
```

Else:

```bash
\Processor Information(_Total)\% Processor Time
\Processor Information(0,0)\% Processor Time
\Processor Information(0,1)\% Processor Time
\Processor Information(0,2)\% Processor Time
...
\Processor Information(0,N-1)\% Processor Time
...
\Processor Information(G-1,0)\% Processor Time
\Processor Information(G-1,1)\% Processor Time
\Processor Information(G-1,2)\% Processor Time
...
\Processor Information(G-1,N-1)\% Processor Time
```

[comment]: # ({/new-6f3a8010})
