]> git.proxmox.com Git - proxmox-backup.git/commitdiff
garbage_collection: log deduplication factor
authorDietmar Maurer <dietmar@proxmox.com>
Thu, 29 Oct 2020 09:37:43 +0000 (10:37 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Thu, 29 Oct 2020 10:13:01 +0000 (11:13 +0100)
src/backup/datastore.rs
src/server/email_notifications.rs

index 77f838a42e5010915cc3359ca68f11318121ebd5..c6ee00cb0418c3e5c25ee9bde3d818b6322453d4 100644 (file)
@@ -584,6 +584,14 @@ impl DataStore {
 
             crate::task_log!(worker, "On-Disk chunks: {}", gc_status.disk_chunks);
 
+            let deduplication_factor = if gc_status.disk_bytes > 0 {
+                (gc_status.index_data_bytes as f64)/(gc_status.disk_bytes as f64)
+            } else {
+                1.0
+            };
+
+            crate::task_log!(worker, "Deduplication factor: {:.2}", deduplication_factor);
+
             if gc_status.disk_chunks > 0 {
                 let avg_chunk = gc_status.disk_bytes/(gc_status.disk_chunks as u64);
                 crate::task_log!(worker, "Average chunk size: {}", HumanByte::from(avg_chunk));
index be25e24f10e256c4eaf24b797bb411016b6ec8b3..7362800619dd5ea8d9b0b039e115d3f2d96137a0 100644 (file)
@@ -16,19 +16,22 @@ use crate::{
 
 const GC_OK_TEMPLATE: &str = r###"
 
-Datastore:           {{datastore}}
-Task ID:             {{status.upid}}
-Index file count:    {{status.index-file-count}}
+Datastore:            {{datastore}}
+Task ID:              {{status.upid}}
+Index file count:     {{status.index-file-count}}
 
-Removed garbage:     {{human-bytes status.removed-bytes}}
-Removed chunks:      {{status.removed-chunks}}
-Remove bad files:    {{status.removed-bad}}
+Removed garbage:      {{human-bytes status.removed-bytes}}
+Removed chunks:       {{status.removed-chunks}}
+Remove bad files:     {{status.removed-bad}}
 
-Pending removals:    {{human-bytes status.pending-bytes}} (in {{status.pending-chunks}} chunks)
+Bad files:            {{status.still-bad}}
+Pending removals:     {{human-bytes status.pending-bytes}} (in {{status.pending-chunks}} chunks)
 
-Original Data usage: {{human-bytes status.index-data-bytes}}
-On Disk usage:       {{human-bytes status.disk-bytes}} ({{relative-percentage status.disk-bytes status.index-data-bytes}})
-On Disk chunks:      {{status.disk-chunks}}
+Original Data usage:  {{human-bytes status.index-data-bytes}}
+On Disk usage:        {{human-bytes status.disk-bytes}} ({{relative-percentage status.disk-bytes status.index-data-bytes}})
+On Disk chunks:       {{status.disk-chunks}}
+
+Deduplication Factor: {{deduplication-factor}}
 
 Garbage collection successful.
 
@@ -120,10 +123,18 @@ pub fn send_gc_status(
 
     let text = match result {
         Ok(()) => {
+            let deduplication_factor = if status.disk_bytes > 0 {
+                (status.index_data_bytes as f64)/(status.disk_bytes as f64)
+            } else {
+                1.0
+            };
+
             let data = json!({
                 "status": status,
                 "datastore": datastore,
+                "deduplication-factor": format!("{:.2}", deduplication_factor),
             });
+
             HANDLEBARS.render("gc_ok_template", &data)?
         }
         Err(err) => {