Releases: Eamon2009/xnos
Releases · Eamon2009/xnos
1.0.0
What's Changed
- Windows platform resource monitor by @Eamon2009 in #1
- Implement JSON metric logging with appendJsonLog function by @Eamon2009 in #2
- feat : add JSON logging interface for system metrics by @Eamon2009 in #3
- feat(config): introduce Config struct and core configuration API by @Eamon2009 in #4
- feat(metrics): implement MetricCollector for system data aggregation by @Eamon2009 in #5
- feat(metrics): declare MetricCollector class interface by @Eamon2009 in #6
- feat(metrics): define system metric data structures by @Eamon2009 in #7
- feat(platform): implement cross-platform MonitorFactory by @Eamon2009 in #8
- feat(platform): declare MonitorFactory interface by @Eamon2009 in #9
- feat(metrics): implement JSON serialization for SystemMetrics by @Eamon2009 in #10
Full Changelog: 1.0.0-alpha.1...v1.0.0
0.0.0-alpha.1
Full Changelog: 1.0.0-alpha.1...0.0.1-alpha.1
iso-kernos 1.0.0-alpha.1
First tagged release. Alpha
Platforms
| OS | Compiler | Status |
|---|---|---|
| Linux (AMD / Intel GPU) | g++ 11+ | Tested |
| Linux (NVIDIA GPU) | g++ 11+ | nvidia-smi fallback |
| Windows 10/11 | MinGW g++ 14 | Tested |
| Windows 10/11 | MSVC 2019+ | Supported |
Details
CPU
- Linux —
/proc/stattwo-snapshot delta, 500 ms interval - Windows —
GetSystemTimes(kernel32), idle subtracted from kernel time to isolate busy cycles
RAM
- Linux —
/proc/meminfofieldsMemTotalandMemAvailable - Windows —
GlobalMemoryStatusEx/MEMORYSTATUSEX
GPU
- Linux (AMD / Intel) — sysfs
/sys/class/drm/cardN/device/gpu_busy_percent, VRAM frommem_info_vram_used/mem_info_vram_total - Linux (NVIDIA) —
popen("nvidia-smi --query-gpu=... --format=csv,noheader,nounits"), no NVML linkage - Windows — DXGI (
CreateDXGIFactory1,IDXGIAdapter1::GetDesc1) for adapter name and VRAM total;IDXGIAdapter3::QueryVideoMemoryInfovia raw vtable call for VRAM usage;D3DKMTQueryStatisticsloaded dynamically fromgdi32.dllfor per-node engine utilisation
MinGW compatibility
d3dkmthk.habsent from MinGW — all D3DKMT structs self-declaredIDXGIAdapter3andDXGI_QUERY_VIDEO_MEMORY_INFOabsent from MinGW's dxgi.h — self-declared with hardcoded IID GUIDNOMINMAXnot redefined — MinGW defines it internally
Polling — minimum 500 ms enforced by the CPU delta sleep; RAM and GPU reads are single-shot
Error handling — every metric returns -1 / N/A on failure; no exceptions thrown, no crashes on missing hardware
Build
# Linux g++ -std=c++17 -O2 main.cpp Monitor_linux.cpp -o iso-kernosWindows (MinGW)
g++ -std=c++17 -O2 main.cpp Monitor_win.cpp -o iso-kernos.exe -ldxgi
Windows (MSVC)
cl /std:c++17 /O2 main.cpp Monitor_win.cpp /link dxgi.lib kernel32.lib
Known limitations
- GPU engine utilisation on NVIDIA Linux requires
nvidia-smito be inPATH - VRAM usage on Windows requires DXGI 1.4 (Windows 10 build 1511+); reports
N/Aon older builds - Only the primary adapter (index 0) is queried on Windows
- No multi-core per-thread CPU breakdown — system-wide aggregate only