Abillity to select disk divider #10328

Closed
opened 2025-12-29 21:30:02 +01:00 by adam · 11 comments
Owner

Originally created by @AndreasSMoe on GitHub (Oct 7, 2024).

Originally assigned to: @Haeki on GitHub.

NetBox version

v4.1.3

Feature type

Change to existing functionality

Proposed functionality

Disk size changed from GB to MB, but divider is set to 1000 instead of 1024. Import to Netbox that uses Bytes will show wrong disk size
see bug report
https://github.com/netbox-community/netbox/issues/17631

Use case

Field used to be GB, is now MB
Field collected from VMM is in Bytes, 1024 Bytes is 1KB, 1024KB is 1MB, 1024MB is 1GB, 1024GB is 1TB
Netbox uses 1000 Bytes as 1KB, 1000MB as 1GB
Example
Importing a value of 50000 MB on virtual disk is shown as 50GB
While converting from bytes to MB
52428800 Bytes is 51200MB

In Netbox, 51200 MB is converted to 51,2GB which is not correct

if I convert the bytes
52428800/1MB = 51200 MB which is correct, but shown wrong
(52428800/1GB)*1000 = 50000MB which is wrong, but shown correctly

Problems occur if the disk is larger than 1TB

(1 073 741 824/1GB)*1000 = 1024GB which is wrong, will be shown as 1.02 TB

Correct would be to not use humanizenumbers as conversion will be wrong
A posible solution would be to add ability in configuration to choose between 1000 and 1024

image
vs edit
image

To get value 60GB, the MB value should be 61440MB

But if I change value the converted value shown under virual disk is
image

We use netbox as source for our billing, and as a workaround they now divide the MB number by 1000
The correct way would be for billing to devide by 1024

Database changes

Not sure, but is it possible to add a setting in configuration.py to enable selection between 1000 and 1024

External dependencies

None that I can think of

Originally created by @AndreasSMoe on GitHub (Oct 7, 2024). Originally assigned to: @Haeki on GitHub. ### NetBox version v4.1.3 ### Feature type Change to existing functionality ### Proposed functionality Disk size changed from GB to MB, but divider is set to 1000 instead of 1024. Import to Netbox that uses Bytes will show wrong disk size see bug report https://github.com/netbox-community/netbox/issues/17631 ### Use case Field used to be GB, is now MB Field collected from VMM is in Bytes, 1024 Bytes is 1KB, 1024KB is 1MB, 1024MB is 1GB, 1024GB is 1TB Netbox uses 1000 Bytes as 1KB, 1000MB as 1GB Example Importing a value of 50000 MB on virtual disk is shown as 50GB While converting from bytes to MB 52428800 Bytes is 51200MB In Netbox, 51200 MB is converted to 51,2GB which is not correct if I convert the bytes 52428800/1MB = 51200 MB which is correct, but shown wrong (52428800/1GB)*1000 = 50000MB which is wrong, but shown correctly Problems occur if the disk is larger than 1TB (1 073 741 824/1GB)*1000 = 1024GB which is wrong, will be shown as 1.02 TB Correct would be to not use humanizenumbers as conversion will be wrong A posible solution would be to add ability in configuration to choose between 1000 and 1024 image vs edit image To get value 60GB, the MB value should be 61440MB But if I change value the converted value shown under virual disk is image We use netbox as source for our billing, and as a workaround they now divide the MB number by 1000 The correct way would be for billing to devide by 1024 ### Database changes Not sure, but is it possible to add a setting in configuration.py to enable selection between 1000 and 1024 ### External dependencies None that I can think of
adam added the type: featurestatus: needs ownernetboxcomplexity: low labels 2025-12-29 21:30:03 +01:00
adam closed this issue 2025-12-29 21:30:03 +01:00
Author
Owner

@DanSheps commented on GitHub (Oct 10, 2024):

Default of this should operate on the existing methodology (conversion == 1000, not 1024).

Do add tests to ensure that the configuration parameter works as intended too.

@DanSheps commented on GitHub (Oct 10, 2024): Default of this should operate on the existing methodology (conversion == 1000, not 1024). Do add tests to ensure that the configuration parameter works as intended too.
Author
Owner

@drose0 commented on GitHub (Oct 23, 2024):

Upvote on this. Would like the ability to specify whether we want to use GB or GiB, and then have the correct conversion.

@drose0 commented on GitHub (Oct 23, 2024): Upvote on this. Would like the ability to specify whether we want to use GB or GiB, and then have the correct conversion.
Author
Owner

@mbchristoff commented on GitHub (Oct 25, 2024):

Another upvote, other applications linked to Netbox use GiB so provisioning and billing need some ugly fixes.

@mbchristoff commented on GitHub (Oct 25, 2024): Another upvote, other applications linked to Netbox use GiB so provisioning and billing need some ugly fixes.
Author
Owner

@jonaagenilsen commented on GitHub (Oct 28, 2024):

Upvoted. We need this feature.

@jonaagenilsen commented on GitHub (Oct 28, 2024): Upvoted. We need this feature.
Author
Owner

@rhcinos commented on GitHub (Nov 5, 2024):

A vote from us also. Also VM RAM display seems to have changed from GiB to GB, could this setting affect RAM also?

@rhcinos commented on GitHub (Nov 5, 2024): A vote from us also. Also VM RAM display seems to have changed from GiB to GB, could this setting affect RAM also?
Author
Owner

@rhcinos commented on GitHub (Nov 5, 2024):

Perhaps out of scope of this specific FR, but could the upgrade script respect this configuration paramter, and mutliply existing values by 1024 instead of 1000 if set?

For context, we were due to upgrade our Netbox this week but have decided to hold off as it would cause all of our disk sizes to be wrong, as we use GiB and MiB currently.

Happy to raise a new FR if that is more appropriate.

@rhcinos commented on GitHub (Nov 5, 2024): Perhaps out of scope of this specific FR, but could the upgrade script respect this configuration paramter, and mutliply existing values by 1024 instead of 1000 if set? For context, we were due to upgrade our Netbox this week but have decided to hold off as it would cause all of our disk sizes to be wrong, as we use GiB and MiB currently. Happy to raise a new FR if that is more appropriate.
Author
Owner

@Haeki commented on GitHub (Nov 13, 2024):

We also noted the problem this week while preparing for an update to 4.1
I looked a bit at the code and the changes seem to be pretty straight forward.
Maybe someone can give some feedback for the solution I pushed to my fork and if positiv I will create a pull request.
I created two new config options, one for the disk and one for the RAM divisor. I also included this setting in the migration script.
09b771507f

@Haeki commented on GitHub (Nov 13, 2024): We also noted the problem this week while preparing for an update to 4.1 I looked a bit at the code and the changes seem to be pretty straight forward. Maybe someone can give some feedback for the solution I pushed to my fork and if positiv I will create a pull request. I created two new config options, one for the disk and one for the RAM divisor. I also included this setting in the migration script. https://github.com/Haeki/netbox/commit/09b771507f0d41c4be38fe852da1d944b4bffbac
Author
Owner

@rhcinos commented on GitHub (Nov 13, 2024):

Conceptually looks great to me, thanks!

@rhcinos commented on GitHub (Nov 13, 2024): Conceptually looks great to me, thanks!
Author
Owner

@netsandbox commented on GitHub (Nov 15, 2024):

Isn't it common to use for memory (RAM) size calculations a base of 1000 and for disk size calculations a base of 1024?

@netsandbox commented on GitHub (Nov 15, 2024): Isn't it common to use for memory (RAM) size calculations a base of 1000 and for disk size calculations a base of 1024?
Author
Owner

@rhcinos commented on GitHub (Jan 9, 2025):

I think most, if not all operating systems display both disk and memory in MiB/GiB (so 1024) by default.
Windows task manager displays as GB but the units are actually GiB
Linux top by default displays as MiB or GiB
Linux df -h displays as G but the units are GiB
Linux docker stats displays as GiB
vCenter web UI displays as GB but the units are actually GiB
Proxmox displays as MiB or GiB
Azure displays as GiB (but the pricing calculator displays as GB but the units are actually GiB)
AWS displays as GiB
Digital Ocean displays as GB in some places and GiB in others, but units are actually GiB
The JEDEC standard uses 1024 as the divider, which is where a lot of these come from: https://en.wikipedia.org/wiki/JEDEC_memory_standards

I would argue that 1024 should be the default divider for Netbox (as it used to be, and we have built automation around), and size labels should show as GiB etc. But this PR will meet our needs, and those with a differing opinion to our own.

@rhcinos commented on GitHub (Jan 9, 2025): I think most, if not all operating systems display both disk and memory in MiB/GiB (so 1024) by default. Windows task manager displays as `GB` but the units are actually `GiB` Linux `top` by default displays as `MiB` or `GiB` Linux `df -h` displays as `G` but the units are `GiB` Linux `docker stats` displays as `GiB` vCenter web UI displays as `GB` but the units are actually `GiB` Proxmox displays as `MiB` or `GiB` Azure displays as `GiB` (but the pricing calculator displays as `GB` but the units are actually `GiB`) AWS displays as `GiB` Digital Ocean displays as `GB` in some places and `GiB` in others, but units are actually `GiB` The JEDEC standard uses 1024 as the divider, which is where a lot of these come from: https://en.wikipedia.org/wiki/JEDEC_memory_standards I would argue that 1024 should be the default divider for Netbox (as it used to be, and we have built automation around), and size labels should show as `GiB` etc. But this PR will meet our needs, and those with a differing opinion to our own.
Author
Owner

@jonaagenilsen commented on GitHub (Jan 9, 2025):

Couldn't have said it better myself. Awesome comment! Looking forward to this being merged into master. And I agree, 1024 should definitely be default 😊👍

@jonaagenilsen commented on GitHub (Jan 9, 2025): Couldn't have said it better myself. Awesome comment! Looking forward to this being merged into master. And I agree, 1024 should definitely be default 😊👍
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/netbox#10328