flowparser_sflow/counter_records/
nvidia_gpu.rs1use nom::IResult;
2use nom::number::complete::{be_u32, be_u64};
3use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
7pub struct NvidiaGpu {
8 pub device_count: u32,
9 pub processes: u32,
10 pub gpu_time: u32,
11 pub mem_time: u32,
12 pub mem_total: u64,
13 pub mem_free: u64,
14 pub ecc_errors: u32,
15 pub energy: u32,
16 pub temperature: u32,
17 pub fan_speed: u32,
18}
19
20pub(crate) fn parse_nvidia_gpu(input: &[u8]) -> IResult<&[u8], NvidiaGpu> {
21 let (input, device_count) = be_u32(input)?;
22 let (input, processes) = be_u32(input)?;
23 let (input, gpu_time) = be_u32(input)?;
24 let (input, mem_time) = be_u32(input)?;
25 let (input, mem_total) = be_u64(input)?;
26 let (input, mem_free) = be_u64(input)?;
27 let (input, ecc_errors) = be_u32(input)?;
28 let (input, energy) = be_u32(input)?;
29 let (input, temperature) = be_u32(input)?;
30 let (input, fan_speed) = be_u32(input)?;
31
32 Ok((
33 input,
34 NvidiaGpu {
35 device_count,
36 processes,
37 gpu_time,
38 mem_time,
39 mem_total,
40 mem_free,
41 ecc_errors,
42 energy,
43 temperature,
44 fan_speed,
45 },
46 ))
47}