public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH manager] ui: ceph/Status: fix recovery percentage display
@ 2021-07-07  8:47 Dominik Csapak
  2021-07-07 10:19 ` Thomas Lamprecht
  0 siblings, 1 reply; 6+ messages in thread
From: Dominik Csapak @ 2021-07-07  8:47 UTC (permalink / raw)
  To: pve-devel

we incorrectly used 'total' as 100% of the to recovered objects here,
but that contains the total number of *bytes*.

rename 'toRecover' to better reflect its meaning and use that as
100% of the objects.

reported by a user:
https://forum.proxmox.com/threads/bug-ceph-recovery-bar-not-showing-percentage.91782/

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 www/manager6/ceph/Status.js | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/www/manager6/ceph/Status.js b/www/manager6/ceph/Status.js
index e92c698b..52563605 100644
--- a/www/manager6/ceph/Status.js
+++ b/www/manager6/ceph/Status.js
@@ -321,14 +321,14 @@ Ext.define('PVE.node.CephStatus', {
 	let unhealthy = degraded + unfound + misplaced;
 	// update recovery
 	if (pgmap.recovering_objects_per_sec !== undefined || unhealthy > 0) {
-	    let toRecover = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
-	    if (toRecover === 0) {
+	    let totalRecovery = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
+	    if (totalRecovery === 0) {
 		return; // FIXME: unexpected return and leaves things possible visible when it shouldn't?
 	    }
-	    let recovered = toRecover - unhealthy || 0;
+	    let recovered = totalRecovery - unhealthy || 0;
 	    let speed = pgmap.recovering_bytes_per_sec || 0;
 
-	    let recoveryRatio = recovered / total;
+	    let recoveryRatio = recovered / totalRecovery;
 	    let txt = `${(recoveryRatio * 100).toFixed(2)}%`;
 	    if (speed > 0) {
 		let obj_per_sec = speed / (4 * 1024 * 1024); // 4 MiB per Object
-- 
2.30.2





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

* Re: [pve-devel] [PATCH manager] ui: ceph/Status: fix recovery percentage display
  2021-07-07  8:47 [pve-devel] [PATCH manager] ui: ceph/Status: fix recovery percentage display Dominik Csapak
@ 2021-07-07 10:19 ` Thomas Lamprecht
  2021-07-07 11:23   ` Dominik Csapak
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Lamprecht @ 2021-07-07 10:19 UTC (permalink / raw)
  To: Proxmox VE development discussion, Dominik Csapak

On 07.07.21 10:47, Dominik Csapak wrote:
> we incorrectly used 'total' as 100% of the to recovered objects here,
> but that contains the total number of *bytes*.
> 
> rename 'toRecover' to better reflect its meaning and use that as
> 100% of the objects.
> 
> reported by a user:
> https://forum.proxmox.com/threads/bug-ceph-recovery-bar-not-showing-percentage.91782/
> 

please note if this would need to be backported too.

> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
>  www/manager6/ceph/Status.js | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/www/manager6/ceph/Status.js b/www/manager6/ceph/Status.js
> index e92c698b..52563605 100644
> --- a/www/manager6/ceph/Status.js
> +++ b/www/manager6/ceph/Status.js
> @@ -321,14 +321,14 @@ Ext.define('PVE.node.CephStatus', {
>  	let unhealthy = degraded + unfound + misplaced;
>  	// update recovery
>  	if (pgmap.recovering_objects_per_sec !== undefined || unhealthy > 0) {
> -	    let toRecover = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
> -	    if (toRecover === 0) {
> +	    let totalRecovery = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;

why change the variable name, `toRecover` was still OK? Or at least I do not see
any improvement in making it easier to understand with `totalRecovery` if byte vs.
objects where a issue of confusion why not addressing that by using `toRecoverObjects`
or the like

Also, why not adding those metrics up? If, misplaced and unfound do not have any
overlap, IIRC, so would def. make sense for those - for degraded I'm not so sure
about overlap with the other two from top of my head though.

> +	    if (totalRecovery === 0) {
>  		return; // FIXME: unexpected return and leaves things possible visible when it shouldn't?
>  	    }
> -	    let recovered = toRecover - unhealthy || 0;
> +	    let recovered = totalRecovery - unhealthy || 0;
>  	    let speed = pgmap.recovering_bytes_per_sec || 0;
>  
> -	    let recoveryRatio = recovered / total;
> +	    let recoveryRatio = recovered / totalRecovery;
>  	    let txt = `${(recoveryRatio * 100).toFixed(2)}%`;
>  	    if (speed > 0) {
>  		let obj_per_sec = speed / (4 * 1024 * 1024); // 4 MiB per Object
> 





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

* Re: [pve-devel] [PATCH manager] ui: ceph/Status: fix recovery percentage display
  2021-07-07 10:19 ` Thomas Lamprecht
@ 2021-07-07 11:23   ` Dominik Csapak
  2021-07-07 12:24     ` Thomas Lamprecht
  0 siblings, 1 reply; 6+ messages in thread
From: Dominik Csapak @ 2021-07-07 11:23 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox VE development discussion

On 7/7/21 12:19 PM, Thomas Lamprecht wrote:
> On 07.07.21 10:47, Dominik Csapak wrote:
>> we incorrectly used 'total' as 100% of the to recovered objects here,
>> but that contains the total number of *bytes*.
>>
>> rename 'toRecover' to better reflect its meaning and use that as
>> 100% of the objects.
>>
>> reported by a user:
>> https://forum.proxmox.com/threads/bug-ceph-recovery-bar-not-showing-percentage.91782/
>>
> 
> please note if this would need to be backported too.

yes, i think this would be good to backport

> 
>> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
>> ---
>>   www/manager6/ceph/Status.js | 8 ++++----
>>   1 file changed, 4 insertions(+), 4 deletions(-)
>>
>> diff --git a/www/manager6/ceph/Status.js b/www/manager6/ceph/Status.js
>> index e92c698b..52563605 100644
>> --- a/www/manager6/ceph/Status.js
>> +++ b/www/manager6/ceph/Status.js
>> @@ -321,14 +321,14 @@ Ext.define('PVE.node.CephStatus', {
>>   	let unhealthy = degraded + unfound + misplaced;
>>   	// update recovery
>>   	if (pgmap.recovering_objects_per_sec !== undefined || unhealthy > 0) {
>> -	    let toRecover = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
>> -	    if (toRecover === 0) {
>> +	    let totalRecovery = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
> 
> why change the variable name, `toRecover` was still OK? Or at least I do not see
> any improvement in making it easier to understand with `totalRecovery` if byte vs.
> objects where a issue of confusion why not addressing that by using `toRecoverObjects`
> or the like
i read the code and thought 'toRecover' means objects that need 
recovery, but it is not. {misplaced,unfound,degraded}_total each contain
the total number of objects taking part in the recovery
(also the ones that are not unhealthy)

maybe 'totalRecoveryObjects' would make more sense ?

> 
> Also, why not adding those metrics up? If, misplaced and unfound do not have any
> overlap, IIRC, so would def. make sense for those - for degraded I'm not so sure
> about overlap with the other two from top of my head though.

they contain all the same number
src/mon/PGMap.cc:{467,482,498} pool_sum.stats.sum.num_object_copies

but are only given if the respective category has objects that need recovery

> 
>> +	    if (totalRecovery === 0) {
>>   		return; // FIXME: unexpected return and leaves things possible visible when it shouldn't?
>>   	    }
>> -	    let recovered = toRecover - unhealthy || 0;
>> +	    let recovered = totalRecovery - unhealthy || 0;
>>   	    let speed = pgmap.recovering_bytes_per_sec || 0;
>>   
>> -	    let recoveryRatio = recovered / total;
>> +	    let recoveryRatio = recovered / totalRecovery;
>>   	    let txt = `${(recoveryRatio * 100).toFixed(2)}%`;
>>   	    if (speed > 0) {
>>   		let obj_per_sec = speed / (4 * 1024 * 1024); // 4 MiB per Object
>>
> 




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

* Re: [pve-devel] [PATCH manager] ui: ceph/Status: fix recovery percentage display
  2021-07-07 11:23   ` Dominik Csapak
@ 2021-07-07 12:24     ` Thomas Lamprecht
  2021-07-07 12:30       ` Dominik Csapak
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Lamprecht @ 2021-07-07 12:24 UTC (permalink / raw)
  To: Dominik Csapak, Proxmox VE development discussion

On 07.07.21 13:23, Dominik Csapak wrote:
> On 7/7/21 12:19 PM, Thomas Lamprecht wrote:
>> On 07.07.21 10:47, Dominik Csapak wrote:
>>> diff --git a/www/manager6/ceph/Status.js b/www/manager6/ceph/Status.js
>>> index e92c698b..52563605 100644
>>> --- a/www/manager6/ceph/Status.js
>>> +++ b/www/manager6/ceph/Status.js
>>> @@ -321,14 +321,14 @@ Ext.define('PVE.node.CephStatus', {
>>>       let unhealthy = degraded + unfound + misplaced;
>>>       // update recovery
>>>       if (pgmap.recovering_objects_per_sec !== undefined || unhealthy > 0) {
>>> -        let toRecover = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
>>> -        if (toRecover === 0) {
>>> +        let totalRecovery = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
>>
>> why change the variable name, `toRecover` was still OK? Or at least I do not see
>> any improvement in making it easier to understand with `totalRecovery` if byte vs.
>> objects where a issue of confusion why not addressing that by using `toRecoverObjects`
>> or the like
> i read the code and thought 'toRecover' means objects that need recovery, but it is not. {misplaced,unfound,degraded}_total each contain
> the total number of objects taking part in the recovery
> (also the ones that are not unhealthy)
> 
> maybe 'totalRecoveryObjects' would make more sense ?

totalRecoveryObjects and toRecoverObjects are so similar that they do not really
convey the difference to me for the confusion you had for any other reader, for that
I'd rather add a short comment, those tend to be a bit more explicit for subtle stuff.

> 
>>
>> Also, why not adding those metrics up? If, misplaced and unfound do not have any
>> overlap, IIRC, so would def. make sense for those - for degraded I'm not so sure
>> about overlap with the other two from top of my head though.
> 
> they contain all the same number
> src/mon/PGMap.cc:{467,482,498} pool_sum.stats.sum.num_object_copies

ah yeah true, I remember now again. Do you also know where this is actually
set (computed).




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

* Re: [pve-devel] [PATCH manager] ui: ceph/Status: fix recovery percentage display
  2021-07-07 12:24     ` Thomas Lamprecht
@ 2021-07-07 12:30       ` Dominik Csapak
  2021-07-07 12:36         ` Thomas Lamprecht
  0 siblings, 1 reply; 6+ messages in thread
From: Dominik Csapak @ 2021-07-07 12:30 UTC (permalink / raw)
  To: Thomas Lamprecht, Proxmox VE development discussion

On 7/7/21 2:24 PM, Thomas Lamprecht wrote:
> On 07.07.21 13:23, Dominik Csapak wrote:
>> On 7/7/21 12:19 PM, Thomas Lamprecht wrote:
>>> On 07.07.21 10:47, Dominik Csapak wrote:
>>>> diff --git a/www/manager6/ceph/Status.js b/www/manager6/ceph/Status.js
>>>> index e92c698b..52563605 100644
>>>> --- a/www/manager6/ceph/Status.js
>>>> +++ b/www/manager6/ceph/Status.js
>>>> @@ -321,14 +321,14 @@ Ext.define('PVE.node.CephStatus', {
>>>>        let unhealthy = degraded + unfound + misplaced;
>>>>        // update recovery
>>>>        if (pgmap.recovering_objects_per_sec !== undefined || unhealthy > 0) {
>>>> -        let toRecover = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
>>>> -        if (toRecover === 0) {
>>>> +        let totalRecovery = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
>>>
>>> why change the variable name, `toRecover` was still OK? Or at least I do not see
>>> any improvement in making it easier to understand with `totalRecovery` if byte vs.
>>> objects where a issue of confusion why not addressing that by using `toRecoverObjects`
>>> or the like
>> i read the code and thought 'toRecover' means objects that need recovery, but it is not. {misplaced,unfound,degraded}_total each contain
>> the total number of objects taking part in the recovery
>> (also the ones that are not unhealthy)
>>
>> maybe 'totalRecoveryObjects' would make more sense ?
> 
> totalRecoveryObjects and toRecoverObjects are so similar that they do not really
> convey the difference to me for the confusion you had for any other reader, for that
> I'd rather add a short comment, those tend to be a bit more explicit for subtle stuff.

ok i'll leave it at 'toRecover' and add a comment what it is in my v2
> 
>>
>>>
>>> Also, why not adding those metrics up? If, misplaced and unfound do not have any
>>> overlap, IIRC, so would def. make sense for those - for degraded I'm not so sure
>>> about overlap with the other two from top of my head though.
>>
>> they contain all the same number
>> src/mon/PGMap.cc:{467,482,498} pool_sum.stats.sum.num_object_copies
> 
> ah yeah true, I remember now again. Do you also know where this is actually
> set (computed).
> 

no sadly, i tried to check, but i am not so deep into ceph code right now




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

* Re: [pve-devel] [PATCH manager] ui: ceph/Status: fix recovery percentage display
  2021-07-07 12:30       ` Dominik Csapak
@ 2021-07-07 12:36         ` Thomas Lamprecht
  0 siblings, 0 replies; 6+ messages in thread
From: Thomas Lamprecht @ 2021-07-07 12:36 UTC (permalink / raw)
  To: Dominik Csapak, Proxmox VE development discussion

On 07.07.21 14:30, Dominik Csapak wrote:
> On 7/7/21 2:24 PM, Thomas Lamprecht wrote:
>> On 07.07.21 13:23, Dominik Csapak wrote:
>>> On 7/7/21 12:19 PM, Thomas Lamprecht wrote:
>>>> On 07.07.21 10:47, Dominik Csapak wrote:
>>>>> diff --git a/www/manager6/ceph/Status.js b/www/manager6/ceph/Status.js
>>>>> index e92c698b..52563605 100644
>>>>> --- a/www/manager6/ceph/Status.js
>>>>> +++ b/www/manager6/ceph/Status.js
>>>>> @@ -321,14 +321,14 @@ Ext.define('PVE.node.CephStatus', {
>>>>>        let unhealthy = degraded + unfound + misplaced;
>>>>>        // update recovery
>>>>>        if (pgmap.recovering_objects_per_sec !== undefined || unhealthy > 0) {
>>>>> -        let toRecover = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
>>>>> -        if (toRecover === 0) {
>>>>> +        let totalRecovery = pgmap.misplaced_total || pgmap.unfound_total || pgmap.degraded_total || 0;
>>>>
>>>> why change the variable name, `toRecover` was still OK? Or at least I do not see
>>>> any improvement in making it easier to understand with `totalRecovery` if byte vs.
>>>> objects where a issue of confusion why not addressing that by using `toRecoverObjects`
>>>> or the like
>>> i read the code and thought 'toRecover' means objects that need recovery, but it is not. {misplaced,unfound,degraded}_total each contain
>>> the total number of objects taking part in the recovery
>>> (also the ones that are not unhealthy)
>>>
>>> maybe 'totalRecoveryObjects' would make more sense ?
>>
>> totalRecoveryObjects and toRecoverObjects are so similar that they do not really
>> convey the difference to me for the confusion you had for any other reader, for that
>> I'd rather add a short comment, those tend to be a bit more explicit for subtle stuff.
> 
> ok i'll leave it at 'toRecover' and add a comment what it is in my v2

Adding objects is fine to me though, the basic unit, i.e., size vs. bytes here,
is something that can be encoded in the variable name for dynamic typed languages
like JS - but no hard feelings.

>>
>>>
>>>>
>>>> Also, why not adding those metrics up? If, misplaced and unfound do not have any
>>>> overlap, IIRC, so would def. make sense for those - for degraded I'm not so sure
>>>> about overlap with the other two from top of my head though.
>>>
>>> they contain all the same number
>>> src/mon/PGMap.cc:{467,482,498} pool_sum.stats.sum.num_object_copies
>>
>> ah yeah true, I remember now again. Do you also know where this is actually
>> set (computed).
>>
> 
> no sadly, i tried to check, but i am not so deep into ceph code right now

ok, thanks nonetheless.




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

end of thread, other threads:[~2021-07-07 12:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-07  8:47 [pve-devel] [PATCH manager] ui: ceph/Status: fix recovery percentage display Dominik Csapak
2021-07-07 10:19 ` Thomas Lamprecht
2021-07-07 11:23   ` Dominik Csapak
2021-07-07 12:24     ` Thomas Lamprecht
2021-07-07 12:30       ` Dominik Csapak
2021-07-07 12:36         ` 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