Skip to content

Releases: Eamon2009/xnos

1.0.0

22 May 12:02
8299507

Choose a tag to compare

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

11 May 11:16
8299507

Choose a tag to compare

0.0.0-alpha.1 Pre-release
Pre-release

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/stat two-snapshot delta, 500 ms interval
  • Windows — GetSystemTimes (kernel32), idle subtracted from kernel time to isolate busy cycles

RAM

  • Linux — /proc/meminfo fields MemTotal and MemAvailable
  • Windows — GlobalMemoryStatusEx / MEMORYSTATUSEX

GPU

  • Linux (AMD / Intel) — sysfs /sys/class/drm/cardN/device/gpu_busy_percent, VRAM from mem_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::QueryVideoMemoryInfo via raw vtable call for VRAM usage; D3DKMTQueryStatistics loaded dynamically from gdi32.dll for per-node engine utilisation

MinGW compatibility

  • d3dkmthk.h absent from MinGW — all D3DKMT structs self-declared
  • IDXGIAdapter3 and DXGI_QUERY_VIDEO_MEMORY_INFO absent from MinGW's dxgi.h — self-declared with hardcoded IID GUID
  • NOMINMAX not 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-kernos

Windows (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-smi to be in PATH
  • VRAM usage on Windows requires DXGI 1.4 (Windows 10 build 1511+); reports N/A on older builds
  • Only the primary adapter (index 0) is queried on Windows
  • No multi-core per-thread CPU breakdown — system-wide aggregate only