pub struct DeviceFile { /* private fields */ }Expand description
A struct for device file
Implementations§
Source§impl DeviceFile
impl DeviceFile
Sourcepub fn cores(&self) -> Vec<u32>
pub fn cores(&self) -> Vec<u32>
Get a list of core for device file
Examples found in repository?
examples/list_device.rs (line 36)
5fn main() -> SmiResult<()> {
6 let devices = list_devices()?;
7 match driver_info() {
8 Ok(version_info) => {
9 println!("Driver Version: {}", version_info);
10 }
11 Err(_) => {
12 println!("Error: Failed to retrieve driver information.")
13 }
14 }
15
16 for device in devices.iter() {
17 let device_info = device.device_info()?;
18 println!("Device Info");
19 println!("\t\tDevice Arch: {:?}", device_info.arch());
20 println!("\t\tDevice Cores: {:?}", device_info.core_num());
21 println!("\t\tDevice NUMA Node: {:?}", device_info.numa_node());
22 println!("\t\tDevice Name: {:?}", device_info.name());
23 println!("\t\tDevice Serial: {:?}", device_info.serial());
24 println!("\t\tDevice UUID: {:?}", device_info.uuid());
25 println!("\t\tDevice BDF: {:?}", device_info.bdf());
26 println!("\t\tDevice Major: {:?}", device_info.major());
27 println!("\t\tDevice Minor: {:?}", device_info.minor());
28 println!(
29 "\t\tDevice Firmware Version: {}",
30 device_info.firmware_version()
31 );
32
33 let device_file = device.device_files()?;
34 println!("Device Files");
35 for file in device_file.iter() {
36 println!("\t\tDevice File Cores: {:?}", file.cores());
37 println!("\t\tDevice File Path: {:?}", file.path());
38 }
39
40 //core status
41 let core_status = device.core_status()?;
42 println!("Core Status");
43 for (core_id, status) in core_status.iter() {
44 println!("\t\tCore ID: {:?}", core_id);
45 println!("\t\tCore Status: {:?}", status);
46 }
47
48 //error info
49 let error_info = device.device_error_info()?;
50 println!("Device Error Info");
51 println!(
52 "\t\tDevice axi post error count: {:?}",
53 error_info.axi_doorbell_error_count()
54 );
55 println!(
56 "\t\tDevice axi fetch error count: {:?}",
57 error_info.axi_fetch_error_count()
58 );
59 println!(
60 "\t\tDevice axi discard error count: {:?}",
61 error_info.axi_discard_error_count()
62 );
63 println!(
64 "\t\tDevice axi doorbell error count: {:?}",
65 error_info.axi_doorbell_error_count()
66 );
67 println!(
68 "\t\tDevice pcie post error count: {:?}",
69 error_info.pcie_post_error_count()
70 );
71 println!(
72 "\t\tDevice pcie fetch error count: {:?}",
73 error_info.pcie_fetch_error_count()
74 );
75 println!(
76 "\t\tDevice pcie discard error count: {:?}",
77 error_info.pcie_discard_error_count()
78 );
79 println!(
80 "\t\tDevice pcie doorbell error count: {:?}",
81 error_info.pcie_doorbell_error_count()
82 );
83 println!(
84 "\t\tDevice device error count: {:?}",
85 error_info.device_error_count()
86 );
87
88 //liveness
89 println!("Device Liveness: {:?}", device.liveness()?);
90
91 //power consumption
92 println!(
93 "Device Power Consumption: {:?}",
94 device.power_consumption()?
95 );
96
97 //temperature
98 let device_temperature = device.device_temperature()?;
99 println!("Device Temperature");
100 println!("\t\tDevice SOC Peak: {:?}", device_temperature.soc_peak());
101 println!("\t\tDevice Ambient: {:?}", device_temperature.ambient());
102
103 //performance
104 let core_utilization = device.core_utilization()?;
105 let device_performance_counter = device.device_performance_counter()?;
106 println!("Device Utilization");
107 let pe_performance_counter = device_performance_counter.pe_performance_counters();
108 let pe_utilization = core_utilization.pe_utilization();
109 for (pe_util, pe_performance_counter) in
110 pe_utilization.iter().zip(pe_performance_counter.iter())
111 {
112 println!("\t\tPE Core: {:?}", pe_util.core());
113 println!("\t\tPE Time Window Mill: {:?}", pe_util.time_window_mill());
114 println!(
115 "\t\tPE Usage Percentage: {:?}",
116 pe_util.pe_usage_percentage()
117 );
118 let timestamp = pe_performance_counter.timestamp();
119 let datetime: DateTime<Local> = timestamp.into();
120 println!("\t\tPE Timestamp: {}", datetime);
121 println!(
122 "\t\tPE Task Execution Cycle: {:?}",
123 pe_performance_counter.task_execution_cycle()
124 );
125 println!(
126 "\t\tPE Cycle Count: {:?}",
127 pe_performance_counter.cycle_count()
128 );
129 }
130
131 let memory_utilization = match device.memory_utilization() {
132 Ok(memory_utilization) => memory_utilization,
133 Err(test_smi_rs::SmiError::NotSupportedError) => {
134 println!("Memory Utilization is not supported yet");
135 continue;
136 }
137 Err(e) => return Err(e),
138 };
139 println!("Memory Utilization");
140 println!(
141 "\t\tMemory Total Bytes: {:?}",
142 memory_utilization.total_bytes()
143 );
144 println!(
145 "\t\tMemory In Use Bytes: {:?}",
146 memory_utilization.in_use_bytes()
147 );
148 }
149 Ok(())
150}Sourcepub fn path(&self) -> String
pub fn path(&self) -> String
Get a device file path
Examples found in repository?
examples/list_device.rs (line 37)
5fn main() -> SmiResult<()> {
6 let devices = list_devices()?;
7 match driver_info() {
8 Ok(version_info) => {
9 println!("Driver Version: {}", version_info);
10 }
11 Err(_) => {
12 println!("Error: Failed to retrieve driver information.")
13 }
14 }
15
16 for device in devices.iter() {
17 let device_info = device.device_info()?;
18 println!("Device Info");
19 println!("\t\tDevice Arch: {:?}", device_info.arch());
20 println!("\t\tDevice Cores: {:?}", device_info.core_num());
21 println!("\t\tDevice NUMA Node: {:?}", device_info.numa_node());
22 println!("\t\tDevice Name: {:?}", device_info.name());
23 println!("\t\tDevice Serial: {:?}", device_info.serial());
24 println!("\t\tDevice UUID: {:?}", device_info.uuid());
25 println!("\t\tDevice BDF: {:?}", device_info.bdf());
26 println!("\t\tDevice Major: {:?}", device_info.major());
27 println!("\t\tDevice Minor: {:?}", device_info.minor());
28 println!(
29 "\t\tDevice Firmware Version: {}",
30 device_info.firmware_version()
31 );
32
33 let device_file = device.device_files()?;
34 println!("Device Files");
35 for file in device_file.iter() {
36 println!("\t\tDevice File Cores: {:?}", file.cores());
37 println!("\t\tDevice File Path: {:?}", file.path());
38 }
39
40 //core status
41 let core_status = device.core_status()?;
42 println!("Core Status");
43 for (core_id, status) in core_status.iter() {
44 println!("\t\tCore ID: {:?}", core_id);
45 println!("\t\tCore Status: {:?}", status);
46 }
47
48 //error info
49 let error_info = device.device_error_info()?;
50 println!("Device Error Info");
51 println!(
52 "\t\tDevice axi post error count: {:?}",
53 error_info.axi_doorbell_error_count()
54 );
55 println!(
56 "\t\tDevice axi fetch error count: {:?}",
57 error_info.axi_fetch_error_count()
58 );
59 println!(
60 "\t\tDevice axi discard error count: {:?}",
61 error_info.axi_discard_error_count()
62 );
63 println!(
64 "\t\tDevice axi doorbell error count: {:?}",
65 error_info.axi_doorbell_error_count()
66 );
67 println!(
68 "\t\tDevice pcie post error count: {:?}",
69 error_info.pcie_post_error_count()
70 );
71 println!(
72 "\t\tDevice pcie fetch error count: {:?}",
73 error_info.pcie_fetch_error_count()
74 );
75 println!(
76 "\t\tDevice pcie discard error count: {:?}",
77 error_info.pcie_discard_error_count()
78 );
79 println!(
80 "\t\tDevice pcie doorbell error count: {:?}",
81 error_info.pcie_doorbell_error_count()
82 );
83 println!(
84 "\t\tDevice device error count: {:?}",
85 error_info.device_error_count()
86 );
87
88 //liveness
89 println!("Device Liveness: {:?}", device.liveness()?);
90
91 //power consumption
92 println!(
93 "Device Power Consumption: {:?}",
94 device.power_consumption()?
95 );
96
97 //temperature
98 let device_temperature = device.device_temperature()?;
99 println!("Device Temperature");
100 println!("\t\tDevice SOC Peak: {:?}", device_temperature.soc_peak());
101 println!("\t\tDevice Ambient: {:?}", device_temperature.ambient());
102
103 //performance
104 let core_utilization = device.core_utilization()?;
105 let device_performance_counter = device.device_performance_counter()?;
106 println!("Device Utilization");
107 let pe_performance_counter = device_performance_counter.pe_performance_counters();
108 let pe_utilization = core_utilization.pe_utilization();
109 for (pe_util, pe_performance_counter) in
110 pe_utilization.iter().zip(pe_performance_counter.iter())
111 {
112 println!("\t\tPE Core: {:?}", pe_util.core());
113 println!("\t\tPE Time Window Mill: {:?}", pe_util.time_window_mill());
114 println!(
115 "\t\tPE Usage Percentage: {:?}",
116 pe_util.pe_usage_percentage()
117 );
118 let timestamp = pe_performance_counter.timestamp();
119 let datetime: DateTime<Local> = timestamp.into();
120 println!("\t\tPE Timestamp: {}", datetime);
121 println!(
122 "\t\tPE Task Execution Cycle: {:?}",
123 pe_performance_counter.task_execution_cycle()
124 );
125 println!(
126 "\t\tPE Cycle Count: {:?}",
127 pe_performance_counter.cycle_count()
128 );
129 }
130
131 let memory_utilization = match device.memory_utilization() {
132 Ok(memory_utilization) => memory_utilization,
133 Err(test_smi_rs::SmiError::NotSupportedError) => {
134 println!("Memory Utilization is not supported yet");
135 continue;
136 }
137 Err(e) => return Err(e),
138 };
139 println!("Memory Utilization");
140 println!(
141 "\t\tMemory Total Bytes: {:?}",
142 memory_utilization.total_bytes()
143 );
144 println!(
145 "\t\tMemory In Use Bytes: {:?}",
146 memory_utilization.in_use_bytes()
147 );
148 }
149 Ok(())
150}Auto Trait Implementations§
impl Freeze for DeviceFile
impl RefUnwindSafe for DeviceFile
impl Send for DeviceFile
impl Sync for DeviceFile
impl Unpin for DeviceFile
impl UnwindSafe for DeviceFile
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more