obmon  1.4.0
ObSensorGpu.h
1 
7 
9 #pragma once
10 
11 #include <ObSensor.h>
12 #include <nvml.h>
13 #include <pstreams/pstream.h>
14 
22 
23 class ObSensorGpu : public ObSensor {
24 public:
25  ObSensorGpu(std::string _name = {"gpu"});
26  virtual ~ObSensorGpu() override;
27 
28  bool init() override;
29  void process() override;
30  void speed(ObSensor *s1, ObSensor *s2, unsigned int timeout = 1000) override;
31  std::string json(const std::string name = {"static"}) const override;
32 
33 private:
34  std::string getProcUser(unsigned int) const;
35 
37  typedef struct devStat_t {
38  std::string name;
39  nvmlUtilization_t util;
40  nvmlMemory_t mem;
41  } devStat_t;
42 
44  unsigned int _count = 0;
45 
47  std::vector<nvmlDevice_t> fDevices;
48 
50  std::vector<devStat_t> fStatus;
51 
53  std::vector<std::vector<nvmlProcessInfo_t>> fComputeProc;
54 
56  std::vector<std::vector<nvmlProcessInfo_t>> fGraphicsProc;
57 };
58 
ObSensorGpu(std::string _name={"gpu"})
Definition: ObSensorGpu.cpp:3
std::vector< std::vector< nvmlProcessInfo_t > > fComputeProc
Compute processes (ex. CUDA Applications)
Definition: ObSensorGpu.h:53
void process() override
Process function.
Definition: ObSensorGpu.cpp:64
nvmlMemory_t mem
GPU memory stats.
Definition: ObSensorGpu.h:40
Structure for device stat simplification.
Definition: ObSensorGpu.h:37
struct ObSensorGpu::devStat_t devStat_t
Structure for device stat simplification.
bool init() override
Definition: ObSensorGpu.cpp:15
GPU Obmon sensor class.
Definition: ObSensorGpu.h:23
std::string getProcUser(unsigned int) const
std::string name() const
Returns name of sensor.
Definition: ObSensor.h:38
std::string name
Device name reported by NVML.
Definition: ObSensorGpu.h:38
std::string json(const std::string name={"static"}) const override
Definition: ObSensorGpu.cpp:99
unsigned int _count
Count of NVIDIA devices.
Definition: ObSensorGpu.h:44
void speed(ObSensor *s1, ObSensor *s2, unsigned int timeout=1000) override
Calculate time change (speed)
Definition: ObSensorGpu.cpp:90
Base Obmon sensor class.
Definition: ObSensor.h:19
virtual ~ObSensorGpu() override
Definition: ObSensorGpu.cpp:8
std::vector< nvmlDevice_t > fDevices
NVML device handles.
Definition: ObSensorGpu.h:47
std::vector< devStat_t > fStatus
Device statistics.
Definition: ObSensorGpu.h:50
nvmlUtilization_t util
GPU utilization stats.
Definition: ObSensorGpu.h:39
std::string _name
Sensor name.
Definition: ObSensor.h:57
std::vector< std::vector< nvmlProcessInfo_t > > fGraphicsProc
Graphics processes (ex. desktop env)
Definition: ObSensorGpu.h:56