perf: skip fetching vulkan in exporter

This commit is contained in:
Ilya Zlobintsev
2025-02-15 18:52:59 +02:00
parent bef89e2923
commit 835bf0c561
6 changed files with 34 additions and 22 deletions

View File

@@ -51,7 +51,7 @@ async fn collect_metrics(handler: &Handler, registry: &Registry) {
for (id, controller) in gpu_controllers.iter() {
let gpu_config = config.gpus().ok().and_then(|gpus| gpus.get(id));
let info = controller.get_info();
let info = controller.get_info(true);
let stats = controller.get_stats(gpu_config);
let mut device_name = String::new();

View File

@@ -31,7 +31,7 @@ type FanControlHandle = (Rc<Notify>, JoinHandle<()>);
pub trait GpuController {
fn controller_info(&self) -> &CommonControllerInfo;
fn get_info(&self) -> DeviceInfo;
fn get_info(&self, skip_vulkan: bool) -> DeviceInfo;
fn apply_config<'a>(
&'a self,

View File

@@ -529,12 +529,16 @@ impl GpuController for AmdGpuController {
&self.common
}
fn get_info(&self) -> DeviceInfo {
let vulkan_info = match get_vulkan_info(&self.common.pci_info) {
Ok(info) => Some(info),
Err(err) => {
warn!("could not load vulkan info: {err}");
None
fn get_info(&self, skip_vulkan: bool) -> DeviceInfo {
let vulkan_info = if skip_vulkan {
None
} else {
match get_vulkan_info(&self.common.pci_info) {
Ok(info) => Some(info),
Err(err) => {
warn!("could not load vulkan info: {err}");
None
}
}
};
let pci_info = Some(self.common.pci_info.clone());

View File

@@ -498,12 +498,16 @@ impl GpuController for IntelGpuController {
&self.common
}
fn get_info(&self) -> DeviceInfo {
let vulkan_info = match get_vulkan_info(&self.common.pci_info) {
Ok(info) => Some(info),
Err(err) => {
warn!("could not load vulkan info: {err}");
None
fn get_info(&self, skip_vulkan: bool) -> DeviceInfo {
let vulkan_info = if skip_vulkan {
None
} else {
match get_vulkan_info(&self.common.pci_info) {
Ok(info) => Some(info),
Err(err) => {
warn!("could not load vulkan info: {err}");
None
}
}
};

View File

@@ -249,12 +249,16 @@ impl GpuController for NvidiaGpuController {
&self.common
}
fn get_info(&self) -> DeviceInfo {
let vulkan_info = match get_vulkan_info(&self.common.pci_info) {
Ok(info) => Some(info),
Err(err) => {
warn!("could not load vulkan info: {err}");
None
fn get_info(&self, skip_vulkan: bool) -> DeviceInfo {
let vulkan_info = if skip_vulkan {
None
} else {
match get_vulkan_info(&self.common.pci_info) {
Ok(info) => Some(info),
Err(err) => {
warn!("could not load vulkan info: {err}");
None
}
}
};

View File

@@ -369,7 +369,7 @@ impl<'a> Handler {
}
pub async fn get_device_info(&'a self, id: &str) -> anyhow::Result<DeviceInfo> {
Ok(self.controller_by_id(id).await?.get_info())
Ok(self.controller_by_id(id).await?.get_info(false))
}
pub async fn get_gpu_stats(&'a self, id: &str) -> anyhow::Result<DeviceStats> {
@@ -723,7 +723,7 @@ impl<'a> Handler {
let data = json!({
"pci_info": controller.controller_info().pci_info.clone(),
"info": controller.get_info(),
"info": controller.get_info(false),
"stats": controller.get_stats(gpu_config),
"clocks_info": controller.get_clocks_info().ok(),
"power_profile_modes": controller.get_power_profile_modes().ok(),