mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-16 16:32:03 +00:00
dragonball: output balloon device metrics to runtime
Balloon device manager adds balloon device metrics to METRICS when a device is created and remove metrics when a device is dropped. Fixes: #7248 Signed-off-by: Songqian Li <mail@lisongqian.cn>
This commit is contained in:
parent
09d46450f1
commit
3819f0ee6f
@ -11,6 +11,7 @@ use crate::address_space_manager::GuestAddressSpaceImpl;
|
|||||||
use crate::config_manager::{ConfigItem, DeviceConfigInfo, DeviceConfigInfos};
|
use crate::config_manager::{ConfigItem, DeviceConfigInfo, DeviceConfigInfos};
|
||||||
use crate::device_manager::DbsMmioV2Device;
|
use crate::device_manager::DbsMmioV2Device;
|
||||||
use crate::device_manager::{DeviceManager, DeviceMgrError, DeviceOpContext};
|
use crate::device_manager::{DeviceManager, DeviceMgrError, DeviceOpContext};
|
||||||
|
use crate::metric::METRICS;
|
||||||
|
|
||||||
// The flag of whether to use the shared irq.
|
// The flag of whether to use the shared irq.
|
||||||
const USE_SHARED_IRQ: bool = true;
|
const USE_SHARED_IRQ: bool = true;
|
||||||
@ -175,6 +176,11 @@ impl BalloonDeviceMgr {
|
|||||||
)
|
)
|
||||||
.map_err(BalloonDeviceError::CreateBalloonDevice)?,
|
.map_err(BalloonDeviceError::CreateBalloonDevice)?,
|
||||||
);
|
);
|
||||||
|
METRICS
|
||||||
|
.write()
|
||||||
|
.unwrap()
|
||||||
|
.balloon
|
||||||
|
.insert(balloon_cfg.balloon_id.clone(), device.metrics());
|
||||||
|
|
||||||
let mmio_dev =
|
let mmio_dev =
|
||||||
DeviceManager::create_mmio_virtio_device_with_device_change_notification(
|
DeviceManager::create_mmio_virtio_device_with_device_change_notification(
|
||||||
@ -220,6 +226,11 @@ impl BalloonDeviceMgr {
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
.map_err(BalloonDeviceError::CreateBalloonDevice)?;
|
.map_err(BalloonDeviceError::CreateBalloonDevice)?;
|
||||||
|
METRICS
|
||||||
|
.write()
|
||||||
|
.unwrap()
|
||||||
|
.balloon
|
||||||
|
.insert(info.config.balloon_id.clone(), device.metrics());
|
||||||
let mmio_dev =
|
let mmio_dev =
|
||||||
DeviceManager::create_mmio_virtio_device_with_device_change_notification(
|
DeviceManager::create_mmio_virtio_device_with_device_change_notification(
|
||||||
Box::new(device),
|
Box::new(device),
|
||||||
@ -275,6 +286,13 @@ impl Default for BalloonDeviceMgr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Drop for BalloonDeviceMgr {
|
||||||
|
// todo: move METIRCS oprations to remove_device. issue #8207.
|
||||||
|
fn drop(&mut self) {
|
||||||
|
METRICS.write().unwrap().balloon.clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
|
@ -6,6 +6,7 @@ use std::collections::HashMap;
|
|||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
use dbs_utils::metric::SharedIncMetric;
|
use dbs_utils::metric::SharedIncMetric;
|
||||||
|
use dbs_virtio_devices::balloon::BalloonDeviceMetrics;
|
||||||
use lazy_static::lazy_static;
|
use lazy_static::lazy_static;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
@ -52,6 +53,8 @@ pub struct SignalMetrics {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Structure storing all metrics while enforcing serialization support on them.
|
/// Structure storing all metrics while enforcing serialization support on them.
|
||||||
|
/// The type of the device metrics is HashMap<DeviceId, Arc<DeviceMetrics>> and the type of
|
||||||
|
/// non-device metrics is XXMetrics.
|
||||||
#[derive(Default, Serialize)]
|
#[derive(Default, Serialize)]
|
||||||
pub struct DragonballMetrics {
|
pub struct DragonballMetrics {
|
||||||
/// Metrics related to a vcpu's functioning.
|
/// Metrics related to a vcpu's functioning.
|
||||||
@ -60,6 +63,8 @@ pub struct DragonballMetrics {
|
|||||||
pub seccomp: SeccompMetrics,
|
pub seccomp: SeccompMetrics,
|
||||||
/// Metrics related to signals.
|
/// Metrics related to signals.
|
||||||
pub signals: SignalMetrics,
|
pub signals: SignalMetrics,
|
||||||
|
/// Metrics related to balloon device.
|
||||||
|
pub balloon: HashMap<String, Arc<BalloonDeviceMetrics>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
|
Loading…
Reference in New Issue
Block a user