Show Unraid cache and user storage
This commit is contained in:
@@ -160,6 +160,12 @@ struct SystemView {
|
|||||||
disk_usage_percent: String,
|
disk_usage_percent: String,
|
||||||
disk_used: String,
|
disk_used: String,
|
||||||
disk_total: String,
|
disk_total: String,
|
||||||
|
cache_usage_percent: String,
|
||||||
|
cache_used: String,
|
||||||
|
cache_total: String,
|
||||||
|
user_usage_percent: String,
|
||||||
|
user_used: String,
|
||||||
|
user_total: String,
|
||||||
cpu_count: usize,
|
cpu_count: usize,
|
||||||
process_count: usize,
|
process_count: usize,
|
||||||
uptime: String,
|
uptime: String,
|
||||||
@@ -550,6 +556,27 @@ async fn build_state_response(state: &AppState) -> Result<StateResponse> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn collect_system_view() -> SystemView {
|
fn collect_system_view() -> SystemView {
|
||||||
|
fn mount_usage(disks: &Disks, mount_point: &str) -> (String, String, String) {
|
||||||
|
disks
|
||||||
|
.iter()
|
||||||
|
.find(|disk| disk.mount_point() == std::path::Path::new(mount_point))
|
||||||
|
.map(|disk| {
|
||||||
|
let total = disk.total_space();
|
||||||
|
let used = total.saturating_sub(disk.available_space());
|
||||||
|
let usage_percent = if total == 0 {
|
||||||
|
0.0
|
||||||
|
} else {
|
||||||
|
used as f64 / total as f64 * 100.0
|
||||||
|
};
|
||||||
|
(
|
||||||
|
format!("{usage_percent:.0}"),
|
||||||
|
format_bytes(used),
|
||||||
|
format_bytes(total),
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.unwrap_or_else(|| ("n/a".into(), "n/a".into(), "n/a".into()))
|
||||||
|
}
|
||||||
|
|
||||||
let mut sys = System::new_all();
|
let mut sys = System::new_all();
|
||||||
sys.refresh_all();
|
sys.refresh_all();
|
||||||
|
|
||||||
@@ -570,7 +597,16 @@ fn collect_system_view() -> SystemView {
|
|||||||
let mut components = Components::new();
|
let mut components = Components::new();
|
||||||
components.refresh(false);
|
components.refresh(false);
|
||||||
|
|
||||||
|
let (cache_usage_percent, cache_used, cache_total) = mount_usage(&disks, "/mnt/cache");
|
||||||
|
let (user_usage_percent, user_used, user_total) = mount_usage(&disks, "/mnt/user");
|
||||||
|
|
||||||
SystemView {
|
SystemView {
|
||||||
|
cache_usage_percent,
|
||||||
|
cache_used,
|
||||||
|
cache_total,
|
||||||
|
user_usage_percent,
|
||||||
|
user_used,
|
||||||
|
user_total,
|
||||||
cpu_usage_percent: format!("{:.1}", sys.global_cpu_usage()),
|
cpu_usage_percent: format!("{:.1}", sys.global_cpu_usage()),
|
||||||
load_avg_one: format!("{:.2}", load_avg.one),
|
load_avg_one: format!("{:.2}", load_avg.one),
|
||||||
load_avg_five: format!("{:.2}", load_avg.five),
|
load_avg_five: format!("{:.2}", load_avg.five),
|
||||||
@@ -847,8 +883,11 @@ fn render_system_panel() -> RgbImage {
|
|||||||
640,
|
640,
|
||||||
106,
|
106,
|
||||||
"Storage",
|
"Storage",
|
||||||
format!("{} %", system.disk_usage_percent),
|
format!("C {}% U {}%", system.cache_usage_percent, system.user_usage_percent),
|
||||||
format!("{} / {}", system.disk_used, system.disk_total),
|
format!(
|
||||||
|
"/mnt/cache {} / {} | /mnt/user {} / {}",
|
||||||
|
system.cache_used, system.cache_total, system.user_used, system.user_total
|
||||||
|
),
|
||||||
Rgb([255, 199, 115]),
|
Rgb([255, 199, 115]),
|
||||||
),
|
),
|
||||||
(
|
(
|
||||||
@@ -897,7 +936,13 @@ fn overlay_system_specs(canvas: &mut RgbImage) {
|
|||||||
34,
|
34,
|
||||||
28,
|
28,
|
||||||
22.0,
|
22.0,
|
||||||
&format!("{host_name} CPU {}% RAM {}% Disk {}%", system.cpu_usage_percent, system.mem_usage_percent, system.disk_usage_percent),
|
&format!(
|
||||||
|
"{host_name} CPU {}% RAM {}% C {}% U {}%",
|
||||||
|
system.cpu_usage_percent,
|
||||||
|
system.mem_usage_percent,
|
||||||
|
system.cache_usage_percent,
|
||||||
|
system.user_usage_percent
|
||||||
|
),
|
||||||
);
|
);
|
||||||
draw_text_line(
|
draw_text_line(
|
||||||
canvas,
|
canvas,
|
||||||
@@ -926,11 +971,11 @@ fn overlay_system_specs(canvas: &mut RgbImage) {
|
|||||||
320,
|
320,
|
||||||
18.0,
|
18.0,
|
||||||
&format!(
|
&format!(
|
||||||
"Mem {} / {} Swap {} / {} Proc {} CPU {} GPU {}",
|
"Cache {} / {} User {} / {} Proc {} CPU {} GPU {}",
|
||||||
system.mem_used,
|
system.cache_used,
|
||||||
system.mem_total,
|
system.cache_total,
|
||||||
system.swap_used,
|
system.user_used,
|
||||||
system.swap_total,
|
system.user_total,
|
||||||
system.process_count,
|
system.process_count,
|
||||||
system.temperature_cpu.as_deref().unwrap_or("-"),
|
system.temperature_cpu.as_deref().unwrap_or("-"),
|
||||||
system.temperature_gpu.as_deref().unwrap_or("-"),
|
system.temperature_gpu.as_deref().unwrap_or("-"),
|
||||||
@@ -1523,8 +1568,8 @@ const INDEX_HTML: &str = r##"<!DOCTYPE html>
|
|||||||
el.cpuMetaValue.textContent = `Load ${state.system.load_avg_one || "-"} / ${state.system.load_avg_five || "-"} / ${state.system.load_avg_fifteen || "-"}`;
|
el.cpuMetaValue.textContent = `Load ${state.system.load_avg_one || "-"} / ${state.system.load_avg_five || "-"} / ${state.system.load_avg_fifteen || "-"}`;
|
||||||
el.memUsageValue.textContent = `${state.system.mem_usage_percent || "-"} %`;
|
el.memUsageValue.textContent = `${state.system.mem_usage_percent || "-"} %`;
|
||||||
el.memMetaValue.textContent = `${state.system.mem_used || "-"} / ${state.system.mem_total || "-"}`;
|
el.memMetaValue.textContent = `${state.system.mem_used || "-"} / ${state.system.mem_total || "-"}`;
|
||||||
el.diskUsageValue.textContent = `${state.system.disk_usage_percent || "-"} %`;
|
el.diskUsageValue.innerHTML = `/mnt/cache ${state.system.cache_usage_percent || "-"}%<br>/mnt/user ${state.system.user_usage_percent || "-"}%`;
|
||||||
el.diskMetaValue.textContent = `${state.system.disk_used || "-"} / ${state.system.disk_total || "-"}`;
|
el.diskMetaValue.textContent = `${state.system.cache_used || "-"} / ${state.system.cache_total || "-"} | ${state.system.user_used || "-"} / ${state.system.user_total || "-"}`;
|
||||||
el.swapUsageValue.textContent = `${state.system.swap_usage_percent || "-"} %`;
|
el.swapUsageValue.textContent = `${state.system.swap_usage_percent || "-"} %`;
|
||||||
el.swapMetaValue.textContent = `${state.system.swap_used || "-"} / ${state.system.swap_total || "-"}`;
|
el.swapMetaValue.textContent = `${state.system.swap_used || "-"} / ${state.system.swap_total || "-"}`;
|
||||||
el.loadValue.textContent = `${state.system.cpu_count || "-"} CPU / ${state.system.process_count || "-"} proc`;
|
el.loadValue.textContent = `${state.system.cpu_count || "-"} CPU / ${state.system.process_count || "-"} proc`;
|
||||||
|
|||||||
Reference in New Issue
Block a user