36 std::vector<GpuSample>
gpus;
72 explicit LinuxSources(std::string proc_root =
"/proc", std::string sys_root =
"/sys",
73 long clock_ticks_per_second = 0);
102 std::string proc_root_;
103 std::string sys_root_;
104 double clock_ticks_per_second_;
114std::string
mark_to_json(std::chrono::system_clock::time_point timestamp,
double elapsed_seconds,
115 const std::string& label);
124std::string
mark_to_csv(std::chrono::system_clock::time_point timestamp,
double elapsed_seconds,
125 const std::string& label, std::size_t gpu_count);
Linux /proc + /sys parsers rooted at configurable directories so tests can point them at a fake tree....
Definition system_monitor_detail.hpp:64
std::optional< double > read_process_rss_bytes() const
VmRSS from <proc>/self/status, bytes.
std::vector< MetricCapability > capabilities() override
std::optional< std::string > find_cpu_temperature_input() const
The temp*_input file chosen for the CPU temperature, or nullopt.
std::optional< double > read_cpu_temperature_c() const
std::optional< double > read_memory_used_bytes() const
MemTotal - MemAvailable from <proc>/meminfo, bytes (nullopt if MemAvailable is absent).
std::optional< double > read_process_cpu_seconds() const
utime + stime of <proc>/self/stat, in seconds.
std::optional< CpuTimes > read_system_cpu_times() const
Aggregate "cpu" line of <proc>/stat.
std::optional< double > read_memory_total_bytes() const
MemTotal from <proc>/meminfo, bytes.
RawReading read() override
GpuSample read_amd_gpu(const AmdGpuDevice &device, int index) const
Readings of one AMD GPU (index/name/vendor filled, missing files nullopt).
std::vector< AmdGpuDevice > find_amd_gpus() const
AMD (PCI vendor 0x1002) DRM cards, skipping connector entries such as card1-DP-1.
LinuxSources(std::string proc_root="/proc", std::string sys_root="/sys", long clock_ticks_per_second=0)
std::string csv_header(std::size_t gpu_count)
CSV header for gpu_count GPUs (columns gpu_util, gpu_mem_used, ...).
std::string json_escape(const std::string &text)
JSON string-literal body escaping (quotes, backslash, control characters).
std::string mark_to_json(std::chrono::system_clock::time_point timestamp, double elapsed_seconds, const std::string &label)
The "event":"mark" JSON Lines record.
std::optional< double > cpu_percent_from_deltas(const CpuTimes &previous, const CpuTimes ¤t)
Utilization in percent from two counter readings; nullopt if no time elapsed.
std::string mark_to_csv(std::chrono::system_clock::time_point timestamp, double elapsed_seconds, const std::string &label, std::size_t gpu_count)
One CSV mark row (only event, timestamp, elapsed_seconds and label filled).
std::unique_ptr< PlatformSources > make_host_sources()
The sources for the host this binary runs on (Linux/Windows + NVML, or a stub).
std::string sample_to_csv(const SystemSample &sample, std::size_t gpu_count)
One CSV data row for sample; GPU columns beyond those present are empty.
std::string format_number(double value)
Number as a JSON/CSV token: integral values without decimals, else 3 decimals; non-finite -> "".
One GPU's readings within a SystemSample.
Definition system_monitor.hpp:27
One point-in-time measurement of the host.
Definition system_monitor.hpp:48
One AMD GPU found under <sys_root>/class/drm.
Definition system_monitor_detail.hpp:54
std::string card
e.g. "card1".
Definition system_monitor_detail.hpp:55
std::string device_dir
<sys_root>/class/drm/card1/device
Definition system_monitor_detail.hpp:56
std::string pci_device
contents of device/device, e.g. "0x1586" (may be empty).
Definition system_monitor_detail.hpp:57
Aggregate CPU time counters (any consistent unit). busy = total - idle - iowait.
Definition system_monitor_detail.hpp:23
double total
Definition system_monitor_detail.hpp:25
double busy
Definition system_monitor_detail.hpp:24
Raw counters/levels from one platform read; rates are derived by SystemMonitor.
Definition system_monitor_detail.hpp:29
std::optional< double > cpu_temperature_c
Definition system_monitor_detail.hpp:35
std::optional< CpuTimes > system_cpu
Definition system_monitor_detail.hpp:30
std::optional< double > memory_total_bytes
Definition system_monitor_detail.hpp:33
std::vector< GpuSample > gpus
Definition system_monitor_detail.hpp:36
std::optional< double > process_rss_bytes
Definition system_monitor_detail.hpp:34
std::optional< double > process_cpu_seconds
user + system CPU time consumed by this process.
Definition system_monitor_detail.hpp:31
std::optional< double > memory_used_bytes
Definition system_monitor_detail.hpp:32
Live CPU/GPU utilization, memory and temperature monitoring with a streaming log.