public inbox for pbs-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pbs-devel] [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end
@ 2024-10-11  9:33 Christian Ebner
  2024-10-11  9:33 ` [pbs-devel] [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress Christian Ebner
  2024-10-17 13:16 ` [pbs-devel] applied: [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end Thomas Lamprecht
  0 siblings, 2 replies; 12+ messages in thread
From: Christian Ebner @ 2024-10-11  9:33 UTC (permalink / raw)
  To: pbs-devel

Seconds are not displayed when the value is smaller than 0.1s and
they are not at the start of the display output, e.g. `1h 2m`.
Drop the additional whitespace currently appended for this edge case.

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
changes since version 2:
- not present in previous version

 proxmox-time/src/time_span.rs | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/proxmox-time/src/time_span.rs b/proxmox-time/src/time_span.rs
index 2ccdf08b..2f8dd1c1 100644
--- a/proxmox-time/src/time_span.rs
+++ b/proxmox-time/src/time_span.rs
@@ -170,11 +170,11 @@ impl std::fmt::Display for TimeSpan {
                 do_write(self.minutes, "min")?;
             }
         }
-        if !first {
-            write!(f, " ")?;
-        }
         let seconds = self.seconds as f64 + (self.msec as f64 / 1000.0);
         if seconds >= 0.1 {
+            if !first {
+                write!(f, " ")?;
+            }
             if seconds >= 1.0 || !first {
                 write!(f, "{:.0}s", seconds)?;
             } else {
-- 
2.39.5



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [pbs-devel] [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress
  2024-10-11  9:33 [pbs-devel] [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end Christian Ebner
@ 2024-10-11  9:33 ` Christian Ebner
  2024-10-17 15:02   ` [pbs-devel] applied: " Thomas Lamprecht
  2024-10-17 13:16 ` [pbs-devel] applied: [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end Thomas Lamprecht
  1 sibling, 1 reply; 12+ messages in thread
From: Christian Ebner @ 2024-10-11  9:33 UTC (permalink / raw)
  To: pbs-devel

Spawn a new tokio task which about every minute displays the
cumulative progress of the backup for pxar, ppxar or img archive
streams. Catalog and metadata archive streams are excluded from the
output for better readability, and because the catalog upload lives
for the whole upload time, leading to possible temporal
misalignments in the output. The actual payload data is written via
the other streams anyway.

Add accounting for uploaded chunks, to distinguish from chunks queued
for upload, but not actually uploaded yet.

Example output in the backup task log:
```
...
INFO:  processed 2.471 GiB in 1min, uploaded 2.439 GiB
INFO:  processed 4.963 GiB in 2min, uploaded 4.929 GiB
INFO:  processed 7.349 GiB in 3min, uploaded 7.284 GiB
...
```

This partially fixes issue 5560:
https://bugzilla.proxmox.com/show_bug.cgi?id=5560

Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
---
Changes since version 2, thanks Thomas for comments and Gabriel for testing:
- Clenup log output by reducing to processed bytes, time and uploaded bytes
- Format time in human readable manner using proxmox-time's `TimeSpan`
- Drop all now unused atomic progress counters
- Adapted commit message accordingly

Changes since version 1, thanks Gabriel for comments and testing:
- Abort progress output task when upload stream is finished
- Limit output to pxar, ppxar or img archives for cleaner output
- Adapted commit title and message

 pbs-client/src/backup_writer.rs | 74 ++++++++++++++++++++++++++++-----
 1 file changed, 63 insertions(+), 11 deletions(-)

diff --git a/pbs-client/src/backup_writer.rs b/pbs-client/src/backup_writer.rs
index d63c09b5a..4d2e3d08c 100644
--- a/pbs-client/src/backup_writer.rs
+++ b/pbs-client/src/backup_writer.rs
@@ -21,6 +21,7 @@ use pbs_datastore::{CATALOG_NAME, PROXMOX_BACKUP_PROTOCOL_ID_V1};
 use pbs_tools::crypt_config::CryptConfig;
 
 use proxmox_human_byte::HumanByte;
+use proxmox_time::TimeSpan;
 
 use super::inject_reused_chunks::{InjectChunks, InjectReusedChunks, InjectedChunksInfo};
 use super::merge_known_chunks::{MergeKnownChunks, MergedChunkInfo};
@@ -65,7 +66,12 @@ struct UploadStats {
     csum: [u8; 32],
 }
 
-type UploadQueueSender = mpsc::Sender<(MergedChunkInfo, Option<h2::client::ResponseFuture>)>;
+struct ChunkUploadResponse {
+    future: h2::client::ResponseFuture,
+    size: usize,
+}
+
+type UploadQueueSender = mpsc::Sender<(MergedChunkInfo, Option<ChunkUploadResponse>)>;
 type UploadResultReceiver = oneshot::Receiver<Result<(), Error>>;
 
 impl BackupWriter {
@@ -332,6 +338,12 @@ impl BackupWriter {
             .as_u64()
             .unwrap();
 
+        let archive = if log::log_enabled!(log::Level::Debug) {
+            archive_name
+        } else {
+            pbs_tools::format::strip_server_file_extension(archive_name)
+        };
+
         let upload_stats = Self::upload_chunk_info_stream(
             self.h2.clone(),
             wid,
@@ -345,16 +357,12 @@ impl BackupWriter {
             },
             options.compress,
             injections,
+            archive,
         )
         .await?;
 
         let size_dirty = upload_stats.size - upload_stats.size_reused;
         let size: HumanByte = upload_stats.size.into();
-        let archive = if log::log_enabled!(log::Level::Debug) {
-            archive_name
-        } else {
-            pbs_tools::format::strip_server_file_extension(archive_name)
-        };
 
         if upload_stats.chunk_injected > 0 {
             log::info!(
@@ -462,6 +470,7 @@ impl BackupWriter {
         h2: H2Client,
         wid: u64,
         path: String,
+        uploaded: Arc<AtomicUsize>,
     ) -> (UploadQueueSender, UploadResultReceiver) {
         let (verify_queue_tx, verify_queue_rx) = mpsc::channel(64);
         let (verify_result_tx, verify_result_rx) = oneshot::channel();
@@ -470,15 +479,21 @@ impl BackupWriter {
         tokio::spawn(
             ReceiverStream::new(verify_queue_rx)
                 .map(Ok::<_, Error>)
-                .and_then(move |(merged_chunk_info, response): (MergedChunkInfo, Option<h2::client::ResponseFuture>)| {
+                .and_then(move |(merged_chunk_info, response): (MergedChunkInfo, Option<ChunkUploadResponse>)| {
                     match (response, merged_chunk_info) {
                         (Some(response), MergedChunkInfo::Known(list)) => {
                             Either::Left(
                                 response
+                                    .future
                                     .map_err(Error::from)
                                     .and_then(H2Client::h2api_response)
-                                    .and_then(move |_result| {
-                                        future::ok(MergedChunkInfo::Known(list))
+                                    .and_then({
+                                        let uploaded = uploaded.clone();
+                                        move |_result| {
+                                            // account for uploaded bytes for progress output
+                                            uploaded.fetch_add(response.size, Ordering::SeqCst);
+                                            future::ok(MergedChunkInfo::Known(list))
+                                        }
                                     })
                             )
                         }
@@ -636,6 +651,7 @@ impl BackupWriter {
         crypt_config: Option<Arc<CryptConfig>>,
         compress: bool,
         injections: Option<std::sync::mpsc::Receiver<InjectChunks>>,
+        archive: &str,
     ) -> impl Future<Output = Result<UploadStats, Error>> {
         let total_chunks = Arc::new(AtomicUsize::new(0));
         let total_chunks2 = total_chunks.clone();
@@ -646,25 +662,51 @@ impl BackupWriter {
 
         let stream_len = Arc::new(AtomicUsize::new(0));
         let stream_len2 = stream_len.clone();
+        let stream_len3 = stream_len.clone();
         let compressed_stream_len = Arc::new(AtomicU64::new(0));
         let compressed_stream_len2 = compressed_stream_len.clone();
         let reused_len = Arc::new(AtomicUsize::new(0));
         let reused_len2 = reused_len.clone();
         let injected_len = Arc::new(AtomicUsize::new(0));
         let injected_len2 = injected_len.clone();
+        let uploaded_len = Arc::new(AtomicUsize::new(0));
 
         let append_chunk_path = format!("{}_index", prefix);
         let upload_chunk_path = format!("{}_chunk", prefix);
         let is_fixed_chunk_size = prefix == "fixed";
 
         let (upload_queue, upload_result) =
-            Self::append_chunk_queue(h2.clone(), wid, append_chunk_path);
+            Self::append_chunk_queue(h2.clone(), wid, append_chunk_path, uploaded_len.clone());
 
         let start_time = std::time::Instant::now();
 
         let index_csum = Arc::new(Mutex::new(Some(openssl::sha::Sha256::new())));
         let index_csum_2 = index_csum.clone();
 
+        let progress_handle = if archive.ends_with(".img")
+            || archive.ends_with(".pxar")
+            || archive.ends_with(".ppxar")
+        {
+            Some(tokio::spawn(async move {
+                loop {
+                    tokio::time::sleep(tokio::time::Duration::from_secs(60)).await;
+
+                    let size = stream_len3.load(Ordering::SeqCst);
+                    let size_uploaded = uploaded_len.load(Ordering::SeqCst);
+                    let elapsed = start_time.elapsed();
+
+                    log::info!(
+                        " processed {} in {}, uploaded {}",
+                        HumanByte::from(size),
+                        TimeSpan::from(elapsed),
+                        HumanByte::from(size_uploaded),
+                    );
+                }
+            }))
+        } else {
+            None
+        };
+
         stream
             .inject_reused_chunks(injections, stream_len.clone())
             .and_then(move |chunk_info| match chunk_info {
@@ -776,7 +818,13 @@ impl BackupWriter {
                     Either::Left(h2.send_request(request, upload_data).and_then(
                         move |response| async move {
                             upload_queue
-                                .send((new_info, Some(response)))
+                                .send((
+                                    new_info,
+                                    Some(ChunkUploadResponse {
+                                        future: response,
+                                        size: chunk_info.chunk_len as usize,
+                                    }),
+                                ))
                                 .await
                                 .map_err(|err| {
                                     format_err!("failed to send to upload queue: {}", err)
@@ -806,6 +854,10 @@ impl BackupWriter {
                 let mut guard = index_csum_2.lock().unwrap();
                 let csum = guard.take().unwrap().finish();
 
+                if let Some(handle) = progress_handle {
+                    handle.abort();
+                }
+
                 futures::future::ok(UploadStats {
                     chunk_count,
                     chunk_reused,
-- 
2.39.5



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [pbs-devel] applied: [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end
  2024-10-11  9:33 [pbs-devel] [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end Christian Ebner
  2024-10-11  9:33 ` [pbs-devel] [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress Christian Ebner
@ 2024-10-17 13:16 ` Thomas Lamprecht
  2024-10-17 14:40   ` Christian Ebner
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Lamprecht @ 2024-10-17 13:16 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Christian Ebner

Am 11/10/2024 um 11:33 schrieb Christian Ebner:
> Seconds are not displayed when the value is smaller than 0.1s and
> they are not at the start of the display output, e.g. `1h 2m`.
> Drop the additional whitespace currently appended for this edge case.
> 
> Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
> ---
> changes since version 2:
> - not present in previous version
> 
>  proxmox-time/src/time_span.rs | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
>

applied this one, thanks!

FYI: I found a bug within the Display code, months got printed with the
"m" unit, which is the unit for minutes. Besides fixing that I also made
it print "m" for minutes now to have more consistent unit variants (all
single letter) see the commit message for more details.

I also added a basic module documentation to convey what the format is and
where it comes from and some basic unit tests, could be surely expanded
though.


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [pbs-devel] applied: [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end
  2024-10-17 13:16 ` [pbs-devel] applied: [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end Thomas Lamprecht
@ 2024-10-17 14:40   ` Christian Ebner
  2024-10-18 12:12     ` Thomas Lamprecht
  0 siblings, 1 reply; 12+ messages in thread
From: Christian Ebner @ 2024-10-17 14:40 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox Backup Server development discussion

On 10/17/24 15:16, Thomas Lamprecht wrote:
> applied this one, thanks!
> 
> FYI: I found a bug within the Display code, months got printed with the
> "m" unit, which is the unit for minutes. Besides fixing that I also made
> it print "m" for minutes now to have more consistent unit variants (all
> single letter) see the commit message for more details.
> 
> I also added a basic module documentation to convey what the format is and
> where it comes from and some basic unit tests, could be surely expanded
> though.

Great! So should we maybe start to switch over time duration output in 
the backup client logs to `TimeSpan`s display output?
There are a few places where purely seconds are used.


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* [pbs-devel] applied: [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress
  2024-10-11  9:33 ` [pbs-devel] [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress Christian Ebner
@ 2024-10-17 15:02   ` Thomas Lamprecht
  2024-10-17 15:53     ` Christian Ebner
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Lamprecht @ 2024-10-17 15:02 UTC (permalink / raw)
  To: Proxmox Backup Server development discussion, Christian Ebner

Am 11/10/2024 um 11:33 schrieb Christian Ebner:
> Spawn a new tokio task which about every minute displays the
> cumulative progress of the backup for pxar, ppxar or img archive
> streams. Catalog and metadata archive streams are excluded from the
> output for better readability, and because the catalog upload lives
> for the whole upload time, leading to possible temporal
> misalignments in the output. The actual payload data is written via
> the other streams anyway.
> 
> Add accounting for uploaded chunks, to distinguish from chunks queued
> for upload, but not actually uploaded yet.
> 
> Example output in the backup task log:
> ```
> ...
> INFO:  processed 2.471 GiB in 1min, uploaded 2.439 GiB
> INFO:  processed 4.963 GiB in 2min, uploaded 4.929 GiB
> INFO:  processed 7.349 GiB in 3min, uploaded 7.284 GiB
> ...
> ```
> 
> This partially fixes issue 5560:
> https://bugzilla.proxmox.com/show_bug.cgi?id=5560
> 
> Signed-off-by: Christian Ebner <c.ebner@proxmox.com>
> ---
> Changes since version 2, thanks Thomas for comments and Gabriel for testing:
> - Clenup log output by reducing to processed bytes, time and uploaded bytes
> - Format time in human readable manner using proxmox-time's `TimeSpan`
> - Drop all now unused atomic progress counters
> - Adapted commit message accordingly
> 
> Changes since version 1, thanks Gabriel for comments and testing:
> - Abort progress output task when upload stream is finished
> - Limit output to pxar, ppxar or img archives for cleaner output
> - Adapted commit title and message
> 
>  pbs-client/src/backup_writer.rs | 74 ++++++++++++++++++++++++++++-----
>  1 file changed, 63 insertions(+), 11 deletions(-)
> 
>

applied, thanks! With some opinionated line-reduction as follow-up (opinionated
because it was OK as is too, and I could have noticed that on the previous
review, sorry...)

Did not think it through at all, but maybe it makes sense to add the uploaded
size also to the upload stats.

And FWIW, I slightly changed my mind and now think that having the reused
counter also printed might indeed be nice, but as mentioned in the v2 reply,
we can always extend this and starting out simpler is OK – if users directly
request this you get a free told-you-so coupon applicable to me directly
though ;-P


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [pbs-devel] applied: [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress
  2024-10-17 15:02   ` [pbs-devel] applied: " Thomas Lamprecht
@ 2024-10-17 15:53     ` Christian Ebner
  2024-10-18  7:20       ` Thomas Lamprecht
  0 siblings, 1 reply; 12+ messages in thread
From: Christian Ebner @ 2024-10-17 15:53 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox Backup Server development discussion

On 10/17/24 17:02, Thomas Lamprecht wrote:
> applied, thanks! With some opinionated line-reduction as follow-up (opinionated
> because it was OK as is too, and I could have noticed that on the previous
> review, sorry...)
> 
> Did not think it through at all, but maybe it makes sense to add the uploaded
> size also to the upload stats.

For now I do not see much benefit for this, as after consuming the full 
upload stream there are no more chunks queued for upload, so the 
counters already present in `UploadStats` contain the same information.

And this information is already shown to the user at the end of the 
upload as, e.g.:
```
had to backup 1.66 GiB of 285.242 GiB (compressed 1.274 GiB) in 58.52 s 
(average 29.053 MiB/s)
```

> And FWIW, I slightly changed my mind and now think that having the reused
> counter also printed might indeed be nice, but as mentioned in the v2 reply,
> we can always extend this and starting out simpler is OK – if users directly
> request this you get a free told-you-so coupon applicable to me directly
> though ;-P

;)



_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [pbs-devel] applied: [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress
  2024-10-17 15:53     ` Christian Ebner
@ 2024-10-18  7:20       ` Thomas Lamprecht
  2024-10-18  7:37         ` Christian Ebner
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Lamprecht @ 2024-10-18  7:20 UTC (permalink / raw)
  To: Christian Ebner, Proxmox Backup Server development discussion

Am 17/10/2024 um 17:53 schrieb Christian Ebner:
> On 10/17/24 17:02, Thomas Lamprecht wrote:
>> applied, thanks! With some opinionated line-reduction as follow-up (opinionated
>> because it was OK as is too, and I could have noticed that on the previous
>> review, sorry...)
>>
>> Did not think it through at all, but maybe it makes sense to add the uploaded
>> size also to the upload stats.
> 
> For now I do not see much benefit for this, as after consuming the full 
> upload stream there are no more chunks queued for upload, so the 
> counters already present in `UploadStats` contain the same information.
> 
> And this information is already shown to the user at the end of the 
> upload as, e.g.:
> ```
> had to backup 1.66 GiB of 285.242 GiB (compressed 1.274 GiB) in 58.52 s 
> (average 29.053 MiB/s)
> ```

Ack, thanks for clearing this up to me.


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [pbs-devel] applied: [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress
  2024-10-18  7:20       ` Thomas Lamprecht
@ 2024-10-18  7:37         ` Christian Ebner
  2024-10-18  7:53           ` Thomas Lamprecht
  0 siblings, 1 reply; 12+ messages in thread
From: Christian Ebner @ 2024-10-18  7:37 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox Backup Server development discussion

On 10/18/24 09:20, Thomas Lamprecht wrote:
> Am 17/10/2024 um 17:53 schrieb Christian Ebner:
>> On 10/17/24 17:02, Thomas Lamprecht wrote:
>>> applied, thanks! With some opinionated line-reduction as follow-up (opinionated
>>> because it was OK as is too, and I could have noticed that on the previous
>>> review, sorry...)
>>>
>>> Did not think it through at all, but maybe it makes sense to add the uploaded
>>> size also to the upload stats.
>>
>> For now I do not see much benefit for this, as after consuming the full
>> upload stream there are no more chunks queued for upload, so the
>> counters already present in `UploadStats` contain the same information.
>>
>> And this information is already shown to the user at the end of the
>> upload as, e.g.:
>> ```
>> had to backup 1.66 GiB of 285.242 GiB (compressed 1.274 GiB) in 58.52 s
>> (average 29.053 MiB/s)
>> ```
> 
> Ack, thanks for clearing this up to me.

One thing still came to mind yesterday though:
Progress logging is now enabled unconditionally, and as is it is not 
possible to disable it or configure the interval.

So I plan to send a patch to make the progress log output opt-in, and 
make the interval configurable within a meaningful value range (maybe 
within 0s to 3600s?).

Something like:
```
proxmox-backup-client backup root.pxar:/ --progress-log-interval=10
```

And disable progress log output for a value of 0 or the optional 
parameter is not given.

That would also allow to more flexibly control the behavior when being 
invoked by vzdump.

What are your opinions on that?


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [pbs-devel] applied: [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress
  2024-10-18  7:37         ` Christian Ebner
@ 2024-10-18  7:53           ` Thomas Lamprecht
  2024-10-18  8:33             ` Christian Ebner
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Lamprecht @ 2024-10-18  7:53 UTC (permalink / raw)
  To: Christian Ebner, Proxmox Backup Server development discussion

Am 18/10/2024 um 09:37 schrieb Christian Ebner:
> One thing still came to mind yesterday though:
> Progress logging is now enabled unconditionally, and as is it is not 
> possible to disable it or configure the interval.
> 
> So I plan to send a patch to make the progress log output opt-in, and 

Personally I'd prefer opt-out, I'm not a fan of tools that stay silent
by default (looking at you `dd`).

Tools can always turn this off easily, and we already have some output
so it's not like we'd previously have none and now suddenly print stuff,
which might indeed surprise some existing users that relied on no output
(IMO a bit weird thing to do, but well not completely out of the picture)

> make the interval configurable within a meaningful value range (maybe 
> within 0s to 3600s?).
> 
> Something like:
> ```
> proxmox-backup-client backup root.pxar:/ --progress-log-interval=10
> ```
> 
> And disable progress log output for a value of 0 or the optional 
> parameter is not given.
> 
> That would also allow to more flexibly control the behavior when being 
> invoked by vzdump.
> 
> What are your opinions on that?

Minus the s/opt-in/opt-out/ preference that's fine by me. We could then
also switch to a higher reporting rate in PVE, albeit FWIW, for VM backups
there we use 10s and then slow down after some time, trying to take a
balance for early fast feedback and short backups and long backups.
And just throwing out ideas, one could also do a size-related interval,
like print a report every (at least) X MB or GB uploaded.

Oh, and do you plan to take a TimeSpan as interval parameter? Might
provide nice UX here.


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [pbs-devel] applied: [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress
  2024-10-18  7:53           ` Thomas Lamprecht
@ 2024-10-18  8:33             ` Christian Ebner
  2024-10-18 12:13               ` Thomas Lamprecht
  0 siblings, 1 reply; 12+ messages in thread
From: Christian Ebner @ 2024-10-18  8:33 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox Backup Server development discussion

On 10/18/24 09:53, Thomas Lamprecht wrote:
> Am 18/10/2024 um 09:37 schrieb Christian Ebner:
>> One thing still came to mind yesterday though:
>> Progress logging is now enabled unconditionally, and as is it is not
>> possible to disable it or configure the interval.
>>
>> So I plan to send a patch to make the progress log output opt-in, and
> 
> Personally I'd prefer opt-out, I'm not a fan of tools that stay silent
> by default (looking at you `dd`).
> 
> Tools can always turn this off easily, and we already have some output
> so it's not like we'd previously have none and now suddenly print stuff,
> which might indeed surprise some existing users that relied on no output
> (IMO a bit weird thing to do, but well not completely out of the picture)

Ack'ed, so let's keep the current default progress log output interval 
of 60 seconds and make it opt-out by allowing to set the interval to 0.
Disabling should however be possible, as the backup upload writer stream 
might be used in other places as well, having unintentional side effects 
(e.g. the sync job in push direction will use the same code path).

> 
>> make the interval configurable within a meaningful value range (maybe
>> within 0s to 3600s?).
>>
>> Something like:
>> ```
>> proxmox-backup-client backup root.pxar:/ --progress-log-interval=10
>> ```
>>
>> And disable progress log output for a value of 0 or the optional
>> parameter is not given.
>>
>> That would also allow to more flexibly control the behavior when being
>> invoked by vzdump.
>>
>> What are your opinions on that?
> 
> Minus the s/opt-in/opt-out/ preference that's fine by me. We could then
> also switch to a higher reporting rate in PVE, albeit FWIW, for VM backups
> there we use 10s and then slow down after some time, trying to take a
> balance for early fast feedback and short backups and long backups.
> And just throwing out ideas, one could also do a size-related interval,
> like print a report every (at least) X MB or GB uploaded.

Hmm, that would be nice to have, maybe allow to pass either a `TimeSpan` 
or a `HumanByte` for the log interval parameter? Not sure if parsing 
would work without possible value clashes though (e.g. 4M could be 4 
months or 4 MiB...).

But maybe that is overkill and not so user friendly, the better option 
being to set either time or size based intervals by (yet another) flag.

> Oh, and do you plan to take a TimeSpan as interval parameter? Might
> provide nice UX here.

That is a great idea!


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [pbs-devel] applied: [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end
  2024-10-17 14:40   ` Christian Ebner
@ 2024-10-18 12:12     ` Thomas Lamprecht
  0 siblings, 0 replies; 12+ messages in thread
From: Thomas Lamprecht @ 2024-10-18 12:12 UTC (permalink / raw)
  To: Christian Ebner, Proxmox Backup Server development discussion

Am 17/10/2024 um 16:40 schrieb Christian Ebner:
> On 10/17/24 15:16, Thomas Lamprecht wrote:
>> applied this one, thanks!
>>
>> FYI: I found a bug within the Display code, months got printed with the
>> "m" unit, which is the unit for minutes. Besides fixing that I also made
>> it print "m" for minutes now to have more consistent unit variants (all
>> single letter) see the commit message for more details.
>>
>> I also added a basic module documentation to convey what the format is and
>> where it comes from and some basic unit tests, could be surely expanded
>> though.
> 
> Great! So should we maybe start to switch over time duration output in 
> the backup client logs to `TimeSpan`s display output?
> There are a few places where purely seconds are used.

Hmm, not sure if I would unconditionally recommend it, but could be fine
for most places.

Albeit, for things where humans are not the primary consumer it might be
good to allow controlling this, potentially a --no-human-output flag that
causes things like TimeSpan and HumanByte to print just second/byte numbers.
But it also seems like a lot of work to do if there isn't even someone
requesting that use case.


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [pbs-devel] applied: [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress
  2024-10-18  8:33             ` Christian Ebner
@ 2024-10-18 12:13               ` Thomas Lamprecht
  0 siblings, 0 replies; 12+ messages in thread
From: Thomas Lamprecht @ 2024-10-18 12:13 UTC (permalink / raw)
  To: Christian Ebner, Proxmox Backup Server development discussion

Am 18/10/2024 um 10:33 schrieb Christian Ebner:
> On 10/18/24 09:53, Thomas Lamprecht wrote:
>> Minus the s/opt-in/opt-out/ preference that's fine by me. We could then
>> also switch to a higher reporting rate in PVE, albeit FWIW, for VM backups
>> there we use 10s and then slow down after some time, trying to take a
>> balance for early fast feedback and short backups and long backups.
>> And just throwing out ideas, one could also do a size-related interval,
>> like print a report every (at least) X MB or GB uploaded.
> 
> Hmm, that would be nice to have, maybe allow to pass either a `TimeSpan` 
> or a `HumanByte` for the log interval parameter? Not sure if parsing 
> would work without possible value clashes though (e.g. 4M could be 4 
> months or 4 MiB...).
> 
> But maybe that is overkill and not so user friendly, the better option 
> being to set either time or size based intervals by (yet another) flag.
> 

Yeah, if we do this I'd probably separate it by type, as while it might
work out for this specific one mixing units can get confusing fast in
general.


_______________________________________________
pbs-devel mailing list
pbs-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pbs-devel


^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2024-10-18 12:13 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-10-11  9:33 [pbs-devel] [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end Christian Ebner
2024-10-11  9:33 ` [pbs-devel] [PATCH v3 proxmox-backup] partial fix #5560: client: periodically show backup progress Christian Ebner
2024-10-17 15:02   ` [pbs-devel] applied: " Thomas Lamprecht
2024-10-17 15:53     ` Christian Ebner
2024-10-18  7:20       ` Thomas Lamprecht
2024-10-18  7:37         ` Christian Ebner
2024-10-18  7:53           ` Thomas Lamprecht
2024-10-18  8:33             ` Christian Ebner
2024-10-18 12:13               ` Thomas Lamprecht
2024-10-17 13:16 ` [pbs-devel] applied: [PATCH v3 proxmox] time: drop trailing space when not showing seconds at end Thomas Lamprecht
2024-10-17 14:40   ` Christian Ebner
2024-10-18 12:12     ` Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal