[GSD-12570] Most counters in Sysman are broken
- Dominant language
- C++
- Stars
- 1.4k
- Forks
- 300
- PR merge metrics
- No merged PRs in 30d
Description
### Pre-submission Checklist
- [x] I am using the latest GPU driver version ([releases](https://github.com/intel/compute-runtime/releases))
- [x] I have searched for similar issues and found none
### GPU Hardware
Intel Arc B580
### DRI Devices Information
See https://github.com/intel/compute-runtime/issues/926
### GPU Detailed Information (lspci output)
See https://github.com/intel/compute-runtime/issues/926
### Driver Version
26.18.38308.1
### Installed GPU Driver Packages
_No response_
### Driver Installation Details
Followed installation instructions from here: https://github.com/intel/compute-runtime/releases/tag/26.18.38308.1
### Linux Distribution
Ubuntu 24.04 LTS
### Other Linux Distribution
_No response_
### Kernel Version & Boot Parameters
kernel 6.17.0-22-generic
### Actual Behavior
Issue moved from https://github.com/oneapi-src/level-zero/issues/434
Hi all,
I'm developing a universally compatible CPU/GPU monitoring tool [hw-smi](https://github.com/ProjectPhysX/hw-smi), and for Intel GPU support on Linux I'm testing [Sysman](https://github.com/oneapi-src/level-zero/blob/master/include/zes_api.h).
The data I want to get:
- GPU name
- GPU usage
- VRAM bandwidth
- memory use
- temperature
- power draw
- fan speed
- core/memory clock speed
- PCIe throughput
My system configuration is:
- Intel Arc B580, Intel UHD Graphics 770
Unfortunately the majority of counters do not work:
| Sysman counter | Windows | Linux |
| :----------------- | :--------- | :------ |
| `zes_device_properties_t::.core.name` | ❌ returns "Intel(R) Graphics [0xe20b]" | ✅ returns Arc B580 |
| `ze_device_memory_properties_t::maxBusWidth` | ❌ returns 0 | ❌ returns 0 |
| `zes_mem_properties_t::busWidth` | ✅ works correctly | ❌returned value is 2x too large |
| `ZES_FREQ_DOMAIN_MEMORY` `zes_freq_properties_t::max` | ❌ returns 0 | ❌ `ZES_FREQ_DOMAIN_MEMORY` unavailable |
| `ZES_FREQ_DOMAIN_MEMORY` `zes_freq_range_t::max` | ❌ returns 0 | ❌ `ZES_FREQ_DOMAIN_MEMORY` unavailable |
| `ZES_FREQ_DOMAIN_MEMORY` `zes_freq_state_t::actual` | ⚠ only available with Administrator permissions
❌ returns frequency in MT/s, not MHz (a factor 8 too large for GDDR6) | ❌ `ZES_FREQ_DOMAIN_MEMORY` unavailable |
| `zes_temp_properties_t::maxTemperature` | ✅ works correctly | ❌ returns `0.0` |
| `zesTemperatureGetState()` | ⚠ only available with Administrator permissions
✅ works correctly | ⚠ only available with sudo permissions
✅ works correctly |
| `zes_power_properties_t::defaultLimit/maxLimit/minLimit` | ✅ work correctly | ❌ returns `-1` |
| `zes_power_sustained_limit_t::power` | ❌ returns 0 | ❌ returns 0 |
| `zes_power_properties_t::defaultLimit/maxLimit` | ✅ work correctly | ❌ returns `-1` |
| `zes_power_energy_counter_t::energy/timestamp` | ⚠ only available with Administrator permissions
✅ works correctly | ✅ works correctly |
| `zes_fan_handle_t` | ✅ works correctly | ❌ broken (no fans available) |
| `zes_fan_properties.maxRPM` | ❌ returns `-1` | ❌ broken (no fans available) |
| `zes_fan_config.speedFixed.speed` | ✅ works correctly | ❌ broken (no fans available) |
| `zes_pci_stats_t::txCounter/rxCounter/timestamp` | ⚠ only available with Administrator permissions
✅ works correctly | ⚠ root required
✅ works correctly |
| `zes_pci_stats_t::speed.gen/width` | ✅ has been resolved | ✅ has been resolved |
| `zes_pci_stats_t::speed.maxBandwidth` | ❌ returns 64, instead of max bandwidth in Bytes/s | ❌ returns 64, instead of max bandwidth in Bytes/s |
| `zes_pci_state_t::speed.gen/width/maxBandwidth` | ✅ work correctly | ❌ return `-1` |
| `zes_pci_properties_t` | ✅ works correctly | ✅ works correctly |
Please remove Windows `administrator` requirement and Linux `sudo` requirement for reading counters!
- affected functions on Windows:
- `zesDevicePciGetStats()`
- `zesDevicePciGetState()`
- `zesDevicePciGetProperties()`
- `zesTemperatureGetState()`
- `zesPowerGetEnergyCounter()`
- `zesDevicePciGetStats()`
- affected functions on Linux:
- `zesDeviceEnumEngineGroups()`
- `zesEngineGetProperties()`
- `zesEngineGetActivity()`
- `zesDevicePciGetStats()`
- `zesDevicePciGetState()`
- `zesDevicePciGetProperties()`
- `zesTemperatureGetState()`
- `zesPowerGetEnergyCounter()`
- `zesDevicePciGetStats()`
### Expected Behavior
All counters should be available on Windows and Linux, without admin/sudo permissions, and return valid data.
### Reproduction Rate
Always reproduces - 100%
### Steps to Reproduce
For debugging you may use https://github.com/ProjectPhysX/hw-smi
### Is this a regression?
- [ ] Yes, this is a regression - functionality that previously worked is now broken
### Last Known Working Driver Version
_No response_
### First Known Failing Driver Version
_No response_
### API Call Logs
_No response_
### strace Logs
_No response_
### System Logs / dmesg Output
_No response_
### Backtrace (if crash or hang occurred)
_No response_
### Source Code / Reproducer
_No response_
### Command Line / Application Details
_No response_
### oneAPI Version (if applicable)
_No response_
### Screenshots / Video
_No response_
### Additional Notes
_No response_
Contributor guide
Assessment
This issue has not been assessed yet.