You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ozone.apache.org by "Gargi-jais11 (via GitHub)" <gi...@apache.org> on 2026/03/24 05:23:11 UTC
[PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Gargi-jais11 opened a new pull request, #9969:
URL: https://github.com/apache/ozone/pull/9969
## What changes were proposed in this pull request?
The DiskBalancer report today shows only:
```
ozone admin datanode diskbalancer report --in-service-datanodes
Report result:
Datanode VolumeDensity
dn-hostname-3 (10.141.248.70:19864) 0.09267551461620249
dn-hostname-1 (10.141.128.135:19864) 0.06619677701803184
dn-hostname-2 (10.141.126.8:19864) 0.026044182616493772
```
So users see only a single aggregate VolumeDensity per datanode, with no per-disk breakdown.
According to above report if user wants to run diskbalancer at threshold lower that 10% say at 5% it interprets that diskbalancer will start on DN-3 and DN-1. But it does not start and creates confusion that diskbalancer is not working correctly.
This is because in reality this threshold value checks wether each volumes utilisation is above or below or within the range.
Proposed Solution:
We should also show each volume's density along with the details of each volumes utilisation and pre-allocated container bytes
## What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-14866
## How was this patch tested?
Added a unit test and tested manually as well.
**DiskBalancer Report before patch:**
```
ozone admin datanode diskbalancer report --in-service-datanodes
Report result:
Datanode VolumeDensity
dn-hostname-3 (10.141.248.70:19864) 0.09267551461620249
dn-hostname-1 (10.141.128.135:19864) 0.06619677701803184
dn-hostname-2 (10.141.126.8:19864) 0.026044182616493772
```
**DiskBalancer Report after enhancement:**
```
bash-5.1$ ozone admin datanode diskbalancer report --in-service-datanodes
Report result:
Datanode: ozone-datanode-1.ozone_default (172.18.0.8:19864)
Aggregate VolumeDataDensity: 0.002000812888676179
IdealUsage: 0.1079634239173063 | Threshold: 10.0% | ThresholdRange: (0.007963423917306298, 0.20796342391730632)
Volume Details -:
StorageID StoragePath VolumeDensity Utilization Pre-Allocated Container Bytes
DS-c1e30832-dd36-444d-81fa-949c70b15b22 /data/hdds1/hdds 0.00087753816739934150 0.10884096208470564000 1771044864
DS-d962ecab-8e1c-408a-87b0-b6d53456c86f /data/hdds2/hdds 0.00012286827693874790 0.10808629219424505000 877658112
DS-48547294-c3ef-40ef-a48a-14bf3b2acad8 /data/hdds3/hdds 0.00100040644433808950 0.10696301747296821000 0
-------
Datanode: ozone-datanode-2.ozone_default (172.18.0.7:19864)
Aggregate VolumeDataDensity: 1.940025425348213E-6
IdealUsage: 0.10798832091026495 | Threshold: 10.0% | ThresholdRange: (0.00798832091026494, 0.20798832091026495)
Volume Details -:
StorageID StoragePath VolumeDensity Utilization Pre-Allocated Container Bytes
DS-e8505479-f9fd-4705-b59e-c2bca68f0382 /data/hdds1/hdds 0.00000097001271268105 0.10798735089755226000 943718400
DS-d0f5f9cd-920f-4ec9-9248-162ad3e1ad11 /data/hdds2/hdds 0.00000097001271266717 0.10798929092297761000 943718400
DS-212374f2-15bc-4f54-b64e-30f378da456a /data/hdds3/hdds 0.00000000000000000000 0.10798832091026495000 944766976
-------
Datanode: ozone-datanode-3.ozone_default (172.18.0.9:19864)
Aggregate VolumeDataDensity: 1.2933502835515975E-6
IdealUsage: 0.10797732743285464 | Threshold: 10.0% | ThresholdRange: (0.007977327432854633, 0.20797732743285463)
Volume Details -:
StorageID StoragePath VolumeDensity Utilization Pre-Allocated Container Bytes
DS-8364a6cc-0d6b-471c-9b3f-fb2b68a6ef27 /data/hdds1/hdds 0.00000064667514178274 0.10797668075771286000 968884224
DS-e9705dfb-f66d-4b21-a619-7c41c53f7cd6 /data/hdds2/hdds 0.00000032333757088443 0.10797765077042552000 966787072
DS-c64998b1-8a10-4506-b358-e1ae278ed71c /data/hdds3/hdds 0.00000032333757088443 0.10797765077042552000 966787072
Note:
- Aggregate VolumeDataDensity: Sum of per-volume density (deviation from ideal); higher means more imbalance.
- IdealUsage: Target utilization ratio (0-1) when volumes are evenly balanced.
- ThresholdRange: Acceptable deviation (percent); volumes within IdealUsage +/- Threshold are considered balanced.
- VolumeDensity: Deviation of a particular volume's utilization from IdealUsage.
- Utilization: Ratio of actual used space to capacity (0-1) for a particular volume.
- Pre-Allocated Container Bytes: Space reserved for containers not yet written to disk.
// json output
bash-5.1$ ozone admin datanode diskbalancer report --in-service-datanodes --json
[ {
"datanode" : "ozone-datanode-1.ozone_default (172.18.0.8:19864)",
"action" : "report",
"status" : "success",
"volumeDensity" : 0.002000812888676179,
"idealUsage" : 0.1079634239173063,
"volumes" : [ {
"storageId" : "DS-c1e30832-dd36-444d-81fa-949c70b15b22",
"storagePath" : "/data/hdds1/hdds",
"volumeDensity" : 8.775381673993415E-4,
"utilization" : 0.10884096208470564,
"pre-Allocated container bytes" : 1771044864
}, {
"storageId" : "DS-d962ecab-8e1c-408a-87b0-b6d53456c86f",
"storagePath" : "/data/hdds2/hdds",
"volumeDensity" : 1.228682769387479E-4,
"utilization" : 0.10808629219424505,
"pre-Allocated container bytes" : 877658112
}, {
"storageId" : "DS-48547294-c3ef-40ef-a48a-14bf3b2acad8",
"storagePath" : "/data/hdds3/hdds",
"volumeDensity" : 0.0010004064443380895,
"utilization" : 0.10696301747296821,
"pre-Allocated container bytes" : 0
} ]
}, {
"datanode" : "ozone-datanode-3.ozone_default (172.18.0.9:19864)",
"action" : "report",
"status" : "success",
"volumeDensity" : 1.2933502835515975E-6,
"idealUsage" : 0.10797732743285464,
"volumes" : [ {
"storageId" : "DS-8364a6cc-0d6b-471c-9b3f-fb2b68a6ef27",
"storagePath" : "/data/hdds1/hdds",
"volumeDensity" : 6.466751417827377E-7,
"utilization" : 0.10797668075771286,
"pre-Allocated container bytes" : 968884224
}, {
"storageId" : "DS-e9705dfb-f66d-4b21-a619-7c41c53f7cd6",
"storagePath" : "/data/hdds2/hdds",
"volumeDensity" : 3.2333757088442994E-7,
"utilization" : 0.10797765077042552,
"pre-Allocated container bytes" : 966787072
}, {
"storageId" : "DS-c64998b1-8a10-4506-b358-e1ae278ed71c",
"storagePath" : "/data/hdds3/hdds",
"volumeDensity" : 3.2333757088442994E-7,
"utilization" : 0.10797765077042552,
"pre-Allocated container bytes" : 966787072
} ]
}, {
"datanode" : "ozone-datanode-2.ozone_default (172.18.0.7:19864)",
"action" : "report",
"status" : "success",
"volumeDensity" : 1.940025425348213E-6,
"idealUsage" : 0.10798832091026495,
"volumes" : [ {
"storageId" : "DS-e8505479-f9fd-4705-b59e-c2bca68f0382",
"storagePath" : "/data/hdds1/hdds",
"volumeDensity" : 9.700127126810454E-7,
"utilization" : 0.10798735089755226,
"pre-Allocated container bytes" : 943718400
}, {
"storageId" : "DS-d0f5f9cd-920f-4ec9-9248-162ad3e1ad11",
"storagePath" : "/data/hdds2/hdds",
"volumeDensity" : 9.700127126671676E-7,
"utilization" : 0.10798929092297761,
"pre-Allocated container bytes" : 943718400
}, {
"storageId" : "DS-212374f2-15bc-4f54-b64e-30f378da456a",
"storagePath" : "/data/hdds3/hdds",
"volumeDensity" : 0.0,
"utilization" : 0.10798832091026495,
"pre-Allocated container bytes" : 944766976
} ]
} ]
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "ChenSammi (via GitHub)" <gi...@apache.org>.
ChenSammi commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4139805207
Does EffectiveUsedSpace equal to TotalCapacity - UsedSpace + Pre-AllocatedBytes? If yes, then I think this one can be optional. I'm fine whether you show it or not. The rest looks good to me.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "Gargi-jais11 (via GitHub)" <gi...@apache.org>.
Gargi-jais11 commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4136112675
> datanode debug log by default is not available. Does DN web UI show each volume's capacity and used space? Since we already provide this new command, mainly for debug purpose, it will be more user friendly if we provide all info in one command, instead of user has to visit different places to get a full picture.
>
> BTW, can we limit the Utilization precision, and ThresholdRange? maybe 5 digital, for example, 0.00001 is enough. Or current 20 digital precision is more helpful for debug?
Dn web UI does show the capacity and usep space of each volume but with that the used space shown is not the actual what dn sees, it just shows the current usedbytes that volume has and doesnot consider showing preallocated byte which actual contribute a lot in volume used space.
I agree with u that it will be good if we show all info in one command. I will add used space, total capacity as well for each volume.
```
StorageID StoragePath TotalCapacity UsedSpace Container Pre-AllocatedBytes EffectiveUsedSpace Utilization VolumeDensity
```
Does the above columns look good, I believe all these are enough to analyse why volumes are not chosen?
Precision of 5 is too less we can keep atleast 10 for each utilisation and threshold range.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "Gargi-jais11 (via GitHub)" <gi...@apache.org>.
Gargi-jais11 commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4139972394
> Does EffectiveUsedSpace equal to TotalCapacity - UsedSpace + Pre-AllocatedBytes? If yes, then I think this one can be optional. I'm fine whether you show it or not. The rest looks good to me.
` effectiveUsed = usage.getCapacity() - usage.getAvailable() + committed + required;` required is delta update by source volume which will be freed up.
Okay I will update then.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "ChenSammi (via GitHub)" <gi...@apache.org>.
ChenSammi merged PR #9969:
URL: https://github.com/apache/ozone/pull/9969
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "sreejasahithi (via GitHub)" <gi...@apache.org>.
sreejasahithi commented on code in PR #9969:
URL: https://github.com/apache/ozone/pull/9969#discussion_r2979573442
##########
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerService.java:
##########
@@ -685,9 +688,40 @@ public DiskBalancerInfo getDiskBalancerInfo() {
bytesToMove = calculateBytesToMove(volumeUsages);
}
- return new DiskBalancerInfo(operationalState, threshold, bandwidthInMB,
+ DiskBalancerInfo info = new DiskBalancerInfo(operationalState, threshold, bandwidthInMB,
parallelThread, stopAfterDiskEven, version, metrics.getSuccessCount(),
metrics.getFailureCount(), bytesToMove, metrics.getSuccessBytes(), volumeDataDensity);
+ info.setIdealUsage(getIdealUsage(volumeUsages));
+ info.setVolumeInfo(buildVolumeReportProto(volumeUsages));
+ return info;
+ }
+
+ /**
+ * Build a list of VolumeInfoProto from a list of VolumeFixedUsage.
+ * VolumeInfoProto consists of information like StorageID,
+ * volume utilization and committed bytes to the client.
Review Comment:
Javadoc refers to the wrong type, the type used is VolumeReportProto
##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java:
##########
@@ -121,20 +164,36 @@ protected String getActionName() {
/**
* Create a JSON result map for a report.
- *
+ *
* @param report the DiskBalancer report proto
* @return JSON result map
*/
- private Map<String, Object> createReportResult(
- HddsProtos.DatanodeDiskBalancerInfoProto report) {
+ private Map<String, Object> toJson(DatanodeDiskBalancerInfoProto report) {
Map<String, Object> result = new LinkedHashMap<>();
- // Format datanode string with hostname and IP address
- String formattedDatanode = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(
- report.getNode());
- result.put("datanode", formattedDatanode);
+ result.put("datanode", DiskBalancerSubCommandUtil.getDatanodeHostAndIp(report.getNode()));
result.put("action", "report");
result.put("status", "success");
result.put("volumeDensity", report.getCurrentVolumeDensitySum());
+
+ if (report.hasIdealUsage()) {
+ result.put("idealUsage", report.getIdealUsage());
+ }
+
+ if (report.getVolumeInfoCount() > 0) {
Review Comment:
Text output includes threshold and the computed range, but JSON only adds idealUsage (and per-volume rows).
##########
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerService.java:
##########
@@ -685,9 +688,40 @@ public DiskBalancerInfo getDiskBalancerInfo() {
bytesToMove = calculateBytesToMove(volumeUsages);
}
- return new DiskBalancerInfo(operationalState, threshold, bandwidthInMB,
+ DiskBalancerInfo info = new DiskBalancerInfo(operationalState, threshold, bandwidthInMB,
parallelThread, stopAfterDiskEven, version, metrics.getSuccessCount(),
metrics.getFailureCount(), bytesToMove, metrics.getSuccessBytes(), volumeDataDensity);
+ info.setIdealUsage(getIdealUsage(volumeUsages));
+ info.setVolumeInfo(buildVolumeReportProto(volumeUsages));
+ return info;
+ }
+
+ /**
+ * Build a list of VolumeInfoProto from a list of VolumeFixedUsage.
+ * VolumeInfoProto consists of information like StorageID,
+ * volume utilization and committed bytes to the client.
+ *
+ * @param volumeSet snapshot of VolumeFixedUsage which contains the usage information of each volume
+ * @return a list of VolumeReportProto which will be sent to clients for reporting volume status
+ * @throws IllegalArgumentException if volumeSet is null or empty
+ */
+ public static List<VolumeReportProto> buildVolumeReportProto(List<VolumeFixedUsage> volumeSet) {
+ if (volumeSet == null || volumeSet.isEmpty()) {
+ return Collections.emptyList();
+ }
+
Review Comment:
This method does not throw any exception , please correct the javadoc
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "Gargi-jais11 (via GitHub)" <gi...@apache.org>.
Gargi-jais11 commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4123048526
@ChenSammi Please review this PR.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #9969:
URL: https://github.com/apache/ozone/pull/9969#discussion_r3007380623
##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java:
##########
@@ -121,20 +176,47 @@ protected String getActionName() {
/**
* Create a JSON result map for a report.
- *
+ *
* @param report the DiskBalancer report proto
* @return JSON result map
*/
- private Map<String, Object> createReportResult(
- HddsProtos.DatanodeDiskBalancerInfoProto report) {
+ private Map<String, Object> toJson(DatanodeDiskBalancerInfoProto report) {
Map<String, Object> result = new LinkedHashMap<>();
- // Format datanode string with hostname and IP address
- String formattedDatanode = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(
- report.getNode());
- result.put("datanode", formattedDatanode);
+ result.put("datanode", DiskBalancerSubCommandUtil.getDatanodeHostAndIp(report.getNode()));
result.put("action", "report");
result.put("status", "success");
result.put("volumeDensity", report.getCurrentVolumeDensitySum());
+
+ if (report.hasIdealUsage() && report.hasDiskBalancerConf()
+ && report.getDiskBalancerConf().hasThreshold()) {
+ double idealUsage = report.getIdealUsage();
+ double threshold = report.getDiskBalancerConf().getThreshold();
+ double lt = idealUsage - threshold / 100.0;
+ double ut = idealUsage + threshold / 100.0;
+ result.put("idealUsage", String.format("%.8f", idealUsage));
+ result.put("threshold %", report.getDiskBalancerConf().getThreshold());
+ result.put("thresholdRange", String.format("(%.08f, %.08f)", lt, ut));
Review Comment:
The JSON keys/types introduced here are inconsistent with existing DiskBalancer JSON output (eg status uses numeric `threshold`). Using a key with a space/percent sign (`"threshold %"`) and emitting `idealUsage` as a formatted string makes the JSON harder to consume programmatically. Prefer stable identifier-style keys (eg `thresholdPercent`) and keep numeric values as numbers.
```suggestion
result.put("idealUsage", idealUsage);
result.put("thresholdPercent", threshold);
Map<String, Double> thresholdRange = new LinkedHashMap<>();
thresholdRange.put("lower", lt);
thresholdRange.put("upper", ut);
result.put("thresholdRange", thresholdRange);
```
##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java:
##########
@@ -121,20 +176,47 @@ protected String getActionName() {
/**
* Create a JSON result map for a report.
- *
+ *
* @param report the DiskBalancer report proto
* @return JSON result map
*/
- private Map<String, Object> createReportResult(
- HddsProtos.DatanodeDiskBalancerInfoProto report) {
+ private Map<String, Object> toJson(DatanodeDiskBalancerInfoProto report) {
Map<String, Object> result = new LinkedHashMap<>();
- // Format datanode string with hostname and IP address
- String formattedDatanode = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(
- report.getNode());
- result.put("datanode", formattedDatanode);
+ result.put("datanode", DiskBalancerSubCommandUtil.getDatanodeHostAndIp(report.getNode()));
result.put("action", "report");
result.put("status", "success");
result.put("volumeDensity", report.getCurrentVolumeDensitySum());
+
+ if (report.hasIdealUsage() && report.hasDiskBalancerConf()
+ && report.getDiskBalancerConf().hasThreshold()) {
+ double idealUsage = report.getIdealUsage();
+ double threshold = report.getDiskBalancerConf().getThreshold();
+ double lt = idealUsage - threshold / 100.0;
+ double ut = idealUsage + threshold / 100.0;
+ result.put("idealUsage", String.format("%.8f", idealUsage));
+ result.put("threshold %", report.getDiskBalancerConf().getThreshold());
+ result.put("thresholdRange", String.format("(%.08f, %.08f)", lt, ut));
Review Comment:
As in the text output, the computed thresholdRange bounds can go outside [0, 1] and produce invalid ranges in JSON. Clamp `lt`/`ut` before formatting so the reported range reflects valid utilization ratios.
```suggestion
double ltClamped = Math.max(0.0, Math.min(1.0, lt));
double utClamped = Math.max(0.0, Math.min(1.0, ut));
result.put("idealUsage", String.format("%.8f", idealUsage));
result.put("threshold %", report.getDiskBalancerConf().getThreshold());
result.put("thresholdRange",
String.format("(%.08f, %.08f)", ltClamped, utClamped));
```
##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java:
##########
@@ -82,36 +83,90 @@ protected void displayResults(List<String> successNodes, List<String> failedNode
// Display consolidated report for successful nodes
if (!successNodes.isEmpty() && !reports.isEmpty()) {
- List<HddsProtos.DatanodeDiskBalancerInfoProto> reportList =
- new ArrayList<>(reports.values());
+ List<DatanodeDiskBalancerInfoProto> reportList = new ArrayList<>(reports.values());
System.out.println(generateReport(reportList));
}
}
private String generateReport(List<DatanodeDiskBalancerInfoProto> protos) {
- // Sort by volume density in descending order (highest imbalance first)
- List<DatanodeDiskBalancerInfoProto> sortedProtos = new ArrayList<>(protos);
- sortedProtos.sort((a, b) ->
+ protos.sort((a, b) ->
Double.compare(b.getCurrentVolumeDensitySum(), a.getCurrentVolumeDensitySum()));
- StringBuilder formatBuilder = new StringBuilder("Report result:%n" +
- "%-60s %s%n");
-
+ StringBuilder formatBuilder = new StringBuilder("Report result:%n");
List<String> contentList = new ArrayList<>();
- contentList.add("Datanode");
- contentList.add("VolumeDensity");
-
- for (DatanodeDiskBalancerInfoProto proto : sortedProtos) {
- formatBuilder.append("%-60s %s%n");
- // Format datanode string with hostname and IP address
- String formattedDatanode = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(
- proto.getNode());
- contentList.add(formattedDatanode);
- contentList.add(String.valueOf(proto.getCurrentVolumeDensitySum()));
+
+ for (int i = 0; i < protos.size(); i++) {
+ DatanodeDiskBalancerInfoProto p = protos.get(i);
+ String dn = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(p.getNode());
+
+ StringBuilder header = new StringBuilder();
+ header.append("Datanode: ").append(dn).append('\n');
+ header.append("Aggregate VolumeDataDensity: ").
+ append(p.getCurrentVolumeDensitySum()).append('\n');
+
+ if (p.hasIdealUsage() && p.hasDiskBalancerConf()
+ && p.getDiskBalancerConf().hasThreshold()) {
+ double idealUsage = p.getIdealUsage();
+ double threshold = p.getDiskBalancerConf().getThreshold();
+ double lt = idealUsage - threshold / 100.0;
+ double ut = idealUsage + threshold / 100.0;
+ header.append("IdealUsage: ").append(String.format("%.8f", idealUsage));
+ header.append(" | Threshold: ").append(threshold).append('%');
+ header.append(" | ThresholdRange: (").append(String.format("%.8f", lt));
+ header.append(", ").append(String.format("%.8f", ut)).append(')').append('\n').append('\n');
+ header.append("Volume Details -:").append('\n');
+ }
+ formatBuilder.append("%s%n");
+ contentList.add(header.toString());
+
+ if (p.getVolumeInfoCount() > 0 && p.hasIdealUsage()) {
+ formatBuilder.append("%-45s %-40s %15s %15s %30s %20s %15s %15s%n");
+ contentList.add("StorageID");
+ contentList.add("StoragePath");
+ contentList.add("TotalCapacity");
+ contentList.add("UsedSpace");
+ contentList.add("Container Pre-AllocatedSpace");
+ contentList.add("EffectiveUsedSpace");
+ contentList.add("Utilization");
+ contentList.add("VolumeDensity");
+
+ double ideal = p.getIdealUsage();
+ for (VolumeReportProto v : p.getVolumeInfoList()) {
+ formatBuilder.append("%-45s %-40s %15s %15s %30s %20s %15s %15s%n");
+ contentList.add(v.getStorageId() != null ? v.getStorageId() : "-");
Review Comment:
`v.getStorageId()` is never null for protobuf-generated accessors (it defaults to an empty string when unset). The current null-check won’t emit "-" for missing storageId. Use `v.hasStorageId()` (and/or `!v.getStorageId().isEmpty()`) to decide when to print a placeholder.
```suggestion
contentList.add(v.hasStorageId() ? v.getStorageId() : "-");
```
##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java:
##########
@@ -82,36 +83,90 @@ protected void displayResults(List<String> successNodes, List<String> failedNode
// Display consolidated report for successful nodes
if (!successNodes.isEmpty() && !reports.isEmpty()) {
- List<HddsProtos.DatanodeDiskBalancerInfoProto> reportList =
- new ArrayList<>(reports.values());
+ List<DatanodeDiskBalancerInfoProto> reportList = new ArrayList<>(reports.values());
System.out.println(generateReport(reportList));
}
}
private String generateReport(List<DatanodeDiskBalancerInfoProto> protos) {
- // Sort by volume density in descending order (highest imbalance first)
- List<DatanodeDiskBalancerInfoProto> sortedProtos = new ArrayList<>(protos);
- sortedProtos.sort((a, b) ->
+ protos.sort((a, b) ->
Double.compare(b.getCurrentVolumeDensitySum(), a.getCurrentVolumeDensitySum()));
- StringBuilder formatBuilder = new StringBuilder("Report result:%n" +
- "%-60s %s%n");
-
+ StringBuilder formatBuilder = new StringBuilder("Report result:%n");
List<String> contentList = new ArrayList<>();
- contentList.add("Datanode");
- contentList.add("VolumeDensity");
-
- for (DatanodeDiskBalancerInfoProto proto : sortedProtos) {
- formatBuilder.append("%-60s %s%n");
- // Format datanode string with hostname and IP address
- String formattedDatanode = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(
- proto.getNode());
- contentList.add(formattedDatanode);
- contentList.add(String.valueOf(proto.getCurrentVolumeDensitySum()));
+
+ for (int i = 0; i < protos.size(); i++) {
+ DatanodeDiskBalancerInfoProto p = protos.get(i);
+ String dn = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(p.getNode());
+
+ StringBuilder header = new StringBuilder();
+ header.append("Datanode: ").append(dn).append('\n');
+ header.append("Aggregate VolumeDataDensity: ").
+ append(p.getCurrentVolumeDensitySum()).append('\n');
+
+ if (p.hasIdealUsage() && p.hasDiskBalancerConf()
+ && p.getDiskBalancerConf().hasThreshold()) {
+ double idealUsage = p.getIdealUsage();
+ double threshold = p.getDiskBalancerConf().getThreshold();
+ double lt = idealUsage - threshold / 100.0;
+ double ut = idealUsage + threshold / 100.0;
Review Comment:
ThresholdRange is computed as idealUsage +/- threshold/100 without clamping to [0, 1]. If idealUsage is near 0 or 1 (or threshold is large), this can print negative or >1 ranges, which is misleading to users. Clamp the computed lower/upper bounds before formatting.
```suggestion
double margin = threshold / 100.0;
double lt = Math.max(0.0, idealUsage - margin);
double ut = Math.min(1.0, idealUsage + margin);
```
##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java:
##########
@@ -27,22 +27,23 @@
import java.util.concurrent.ConcurrentHashMap;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
-import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
+import org.apache.hadoop.hdds.protocol.proto.HddsProtos.VolumeReportProto;
+import org.apache.hadoop.util.StringUtils;
import picocli.CommandLine.Command;
/**
* Handler to get disk balancer report.
*/
@Command(
name = "report",
- description = "Get DiskBalancer volume density report",
+ description = "Get DiskBalancer volume density report and per volume info from dns.",
Review Comment:
The command description says "from dns" which is ambiguous (looks like Domain Name System). Consider changing to "from DNs" or "from datanodes" for clarity, and drop the trailing period to match other subcommand descriptions.
```suggestion
description = "Get DiskBalancer volume density report and per volume info from datanodes",
```
##########
hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerService.java:
##########
@@ -685,9 +688,42 @@ public DiskBalancerInfo getDiskBalancerInfo() {
bytesToMove = calculateBytesToMove(volumeUsages);
}
- return new DiskBalancerInfo(operationalState, threshold, bandwidthInMB,
+ DiskBalancerInfo info = new DiskBalancerInfo(operationalState, threshold, bandwidthInMB,
parallelThread, stopAfterDiskEven, version, metrics.getSuccessCount(),
metrics.getFailureCount(), bytesToMove, metrics.getSuccessBytes(), volumeDataDensity);
+ info.setIdealUsage(getIdealUsage(volumeUsages));
+ info.setVolumeInfo(buildVolumeReportProto(volumeUsages));
+ return info;
+ }
+
+ /**
+ * Build a list of VolumeReportProto from a list of VolumeFixedUsage.
+ * VolumeReportProto consists of information like StorageID,
+ * volume utilization and committed bytes to the client.
+ *
+ * @param volumeSet snapshot of VolumeFixedUsage which contains the usage information of each volume
+ * @return a list of VolumeReportProto which will be sent to clients for reporting volume status
+ */
+ public static List<VolumeReportProto> buildVolumeReportProto(List<VolumeFixedUsage> volumeSet) {
+ if (volumeSet == null || volumeSet.isEmpty()) {
+ return Collections.emptyList();
+ }
+
+ List<VolumeReportProto> result = new ArrayList<>();
+ for (VolumeFixedUsage v : volumeSet) {
+ HddsVolume volume = v.getVolume();
+ String path = volume.getStorageDir() != null ? volume.getStorageDir().getPath() : "";
+ result.add(VolumeReportProto.newBuilder()
+ .setStorageId(volume.getStorageID())
+ .setStoragePath(path)
+ .setTotalCapacity(v.getUsage().getCapacity())
+ .setUsedSpace(v.getUsage().getUsedSpace())
+ .setCommittedBytes(volume.getCommittedBytes())
+ .setEffectiveUsedSpace(v.getEffectiveUsed())
+ .setUtilization(v.getUtilization())
+ .build());
Review Comment:
When `volume.getStorageDir()` is null, `path` is set to an empty string and then written into the proto, which makes `hasStoragePath()` true and causes the CLI to print an empty value instead of the intended placeholder. Avoid setting `storagePath` when it’s unknown (or use a meaningful placeholder consistently).
```suggestion
VolumeReportProto.Builder builder = VolumeReportProto.newBuilder()
.setStorageId(volume.getStorageID())
.setTotalCapacity(v.getUsage().getCapacity())
.setUsedSpace(v.getUsage().getUsedSpace())
.setCommittedBytes(volume.getCommittedBytes())
.setEffectiveUsedSpace(v.getEffectiveUsed())
.setUtilization(v.getUtilization());
if (volume.getStorageDir() != null) {
builder.setStoragePath(volume.getStorageDir().getPath());
}
result.add(builder.build());
```
##########
hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java:
##########
@@ -754,9 +763,56 @@ private DatanodeDiskBalancerInfoProto generateRandomReportProto(String hostname)
.build())
.build();
+ DiskBalancerConfigurationProto configProto = createConfigProto(threshold, 100L, 5, true);
+
+ long committed1 = (random.nextLong() & Long.MAX_VALUE) % (1024L * 1024 * 1024);
+ long committed2 = (random.nextLong() & Long.MAX_VALUE) % (1024L * 1024 * 1024);
+ long capacity1 = 500L * 1024 * 1024 * 1024 + random.nextInt(1024 * 1024);
+ long capacity2 = 600L * 1024 * 1024 * 1024 + random.nextInt(1024 * 1024);
+ double util1 = idealUsage + random.nextDouble() * 0.1;
+ double util2 = idealUsage - random.nextDouble() * 0.1;
+ long used1 = (long) (capacity1 * util1);
+ long used2 = (long) (capacity2 * util2);
+ long effective1 = used1 + committed1;
+ long effective2 = used2 + committed2;
+ String path1 = "/data/hdds-" + hostname + "-1";
+ String path2 = "/data/hdds-" + hostname + "-2";
+ VolumeReportProto vol1 = VolumeReportProto.newBuilder()
+ .setStorageId("DISK-" + hostname + "-vol1")
+ .setStoragePath(path1)
+ .setUtilization(idealUsage + random.nextDouble() * 0.1)
Review Comment:
In this test helper, `used1` is computed using `util1`, but the proto’s `vol1` utilization is generated independently (`idealUsage + random.nextDouble() * 0.1`). This can make the generated report internally inconsistent (utilization doesn’t match usedSpace/capacity). Use `util1` when setting `vol1` utilization so the fields stay consistent.
```suggestion
.setUtilization(util1)
```
##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java:
##########
@@ -82,36 +83,90 @@ protected void displayResults(List<String> successNodes, List<String> failedNode
// Display consolidated report for successful nodes
if (!successNodes.isEmpty() && !reports.isEmpty()) {
- List<HddsProtos.DatanodeDiskBalancerInfoProto> reportList =
- new ArrayList<>(reports.values());
+ List<DatanodeDiskBalancerInfoProto> reportList = new ArrayList<>(reports.values());
System.out.println(generateReport(reportList));
}
}
private String generateReport(List<DatanodeDiskBalancerInfoProto> protos) {
- // Sort by volume density in descending order (highest imbalance first)
- List<DatanodeDiskBalancerInfoProto> sortedProtos = new ArrayList<>(protos);
- sortedProtos.sort((a, b) ->
+ protos.sort((a, b) ->
Double.compare(b.getCurrentVolumeDensitySum(), a.getCurrentVolumeDensitySum()));
- StringBuilder formatBuilder = new StringBuilder("Report result:%n" +
- "%-60s %s%n");
-
+ StringBuilder formatBuilder = new StringBuilder("Report result:%n");
List<String> contentList = new ArrayList<>();
- contentList.add("Datanode");
- contentList.add("VolumeDensity");
-
- for (DatanodeDiskBalancerInfoProto proto : sortedProtos) {
- formatBuilder.append("%-60s %s%n");
- // Format datanode string with hostname and IP address
- String formattedDatanode = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(
- proto.getNode());
- contentList.add(formattedDatanode);
- contentList.add(String.valueOf(proto.getCurrentVolumeDensitySum()));
+
+ for (int i = 0; i < protos.size(); i++) {
+ DatanodeDiskBalancerInfoProto p = protos.get(i);
+ String dn = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(p.getNode());
+
+ StringBuilder header = new StringBuilder();
+ header.append("Datanode: ").append(dn).append('\n');
+ header.append("Aggregate VolumeDataDensity: ").
+ append(p.getCurrentVolumeDensitySum()).append('\n');
+
+ if (p.hasIdealUsage() && p.hasDiskBalancerConf()
+ && p.getDiskBalancerConf().hasThreshold()) {
+ double idealUsage = p.getIdealUsage();
+ double threshold = p.getDiskBalancerConf().getThreshold();
+ double lt = idealUsage - threshold / 100.0;
+ double ut = idealUsage + threshold / 100.0;
+ header.append("IdealUsage: ").append(String.format("%.8f", idealUsage));
+ header.append(" | Threshold: ").append(threshold).append('%');
+ header.append(" | ThresholdRange: (").append(String.format("%.8f", lt));
+ header.append(", ").append(String.format("%.8f", ut)).append(')').append('\n').append('\n');
+ header.append("Volume Details -:").append('\n');
Review Comment:
The header label "Volume Details -:" is awkward/typo-like in user-facing output. Consider renaming to "Volume Details:" (or similar) for readability.
```suggestion
header.append("Volume Details:").append('\n');
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "Gargi-jais11 (via GitHub)" <gi...@apache.org>.
Gargi-jais11 commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4132068211
@ChenSammi utilisation shown for each dn is definitly what we need the user to understand but if we see the dn ui used space shown for each volume is always less than actual used as it contains pre allocated and reserved as well. So I am showing this pre allocated because it will make the suer understand why the used bytes show is suppose 3GB with that volume capacity of 10GB but has utilisation of 50% because 2GB is occupied by pre allocated.
If you suggest may be we can also add the usedBytes for that volume which can clearly show the user that usedBytes + pre-allocated = utilisation for that dn.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "sreejasahithi (via GitHub)" <gi...@apache.org>.
sreejasahithi commented on code in PR #9969:
URL: https://github.com/apache/ozone/pull/9969#discussion_r2980182115
##########
hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java:
##########
@@ -121,20 +164,36 @@ protected String getActionName() {
/**
* Create a JSON result map for a report.
- *
+ *
* @param report the DiskBalancer report proto
* @return JSON result map
*/
- private Map<String, Object> createReportResult(
- HddsProtos.DatanodeDiskBalancerInfoProto report) {
+ private Map<String, Object> toJson(DatanodeDiskBalancerInfoProto report) {
Map<String, Object> result = new LinkedHashMap<>();
- // Format datanode string with hostname and IP address
- String formattedDatanode = DiskBalancerSubCommandUtil.getDatanodeHostAndIp(
- report.getNode());
- result.put("datanode", formattedDatanode);
+ result.put("datanode", DiskBalancerSubCommandUtil.getDatanodeHostAndIp(report.getNode()));
result.put("action", "report");
result.put("status", "success");
result.put("volumeDensity", report.getCurrentVolumeDensitySum());
+
+ if (report.hasIdealUsage()) {
+ result.put("idealUsage", report.getIdealUsage());
+ }
+
+ if (report.getVolumeInfoCount() > 0) {
Review Comment:
Text output includes threshold and the computed ThresholdRange, but JSON only adds idealUsage (and per-volume rows).
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "sreejasahithi (via GitHub)" <gi...@apache.org>.
sreejasahithi commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4115960174
@Gargi-jais11 , can you please add the before and after of the json output.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "sreejasahithi (via GitHub)" <gi...@apache.org>.
sreejasahithi commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4139956186
> Does EffectiveUsedSpace equal to TotalCapacity - UsedSpace + Pre-AllocatedBytes?
@ChenSammi , I believe EffectiveUsedSpace is UsedSpace + Pre-AllocatedBytes
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "Gargi-jais11 (via GitHub)" <gi...@apache.org>.
Gargi-jais11 commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4152761157
@ChenSammi Please review I have resolved Co-pilot comments.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "Gargi-jais11 (via GitHub)" <gi...@apache.org>.
Gargi-jais11 commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4132114171
```
2026-03-06 12:27:02,444 DEBUG [DiskBalancerService#2]-org.apache.hadoop.ozone.container.diskbalancer.policy.DefaultVolumeChoosingPolicy: Disk balancing state - idealUsage=0.5094568501, thresholdPercentage=10.0%, thresholdRange=(0.4094568501, 0.6094568501), containerSize=5368709120
2026-03-06 12:27:02,444 DEBUG [DiskBalancerService#2]-org.apache.hadoop.ozone.container.diskbalancer.policy.DefaultVolumeChoosingPolicy: Volume[0] - disk=DS-bb305d7f-d780-4832-962b-1174fc11757d, utilization=0.5027842722, capacity=53681722491, effectiveUsed=26990325773, available=53534941184, usableSpace=5216560238, committedBytes=26843544466, delta=0
2026-03-06 12:27:02,444 DEBUG [DiskBalancerService#2]-org.apache.hadoop.ozone.container.diskbalancer.policy.DefaultVolumeChoosingPolicy: Volume[1] - disk=DS-baa06cd6-702b-49fc-9887-e241bce06863, utilization=0.5027846478, capacity=53681722491, effectiveUsed=26990345938, available=53534920704, usableSpace=5216540073, committedBytes=26843544151, delta=0
2026-03-06 12:27:02,445 DEBUG [DiskBalancerService#2]-org.apache.hadoop.ozone.container.diskbalancer.policy.DefaultVolumeChoosingPolicy: Volume[2] - disk=DS-ef78e643-5126-4fa0-8c30-8ff15564f77f, utilization=0.5228016301, capacity=53681722491, effectiveUsed=28064892027, available=25616830464, usableSpace=4141993984, committedBytes=0, delta=0
2
```
Let's take help of above example is any user is giving 10% threshold than it won't start using the threshold range we can say that all have within the range so no movement as per the debug log
But then what user sees from the dn ui for each volume utilisation is :
```
Disk1-50%
Disk2-1%
Disk3-1%
```
So giving threshold 10% user assumes it should start but if we have utilisation for each shown that would be great as it shows the clear picture. so as per above log all dn utilisation is somewhat around 52%:
```
Disk1-50%
Disk2-50%
Disk3-52%
```
So user will ask why utilisation is high even if it shows very less used bytes on aprticular voolume that's why added pre allocated container bytes to tell this is the one which is also contributing for used bytes and utilisation to be high.
I hope this clears why I am also adding pre-allocated bytes.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "ChenSammi (via GitHub)" <gi...@apache.org>.
ChenSammi commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4134488445
datanode debug log by default is not available. Does DN web UI show each volume's capacity and used space?
Since we already provide this new command, mainly for debug purpose, it will be more user friendly if we provide all info in one command, instead of user has to visit different places to get a full picture.
BTW, can we limit the Utilization precision, and ThresholdRange? maybe 5 digital, for example, 0.00001 is enough. Or current 20 digital precision is more helpful for debug?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "ChenSammi (via GitHub)" <gi...@apache.org>.
ChenSammi commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4131895697
@Gargi-jais11 , why we only show "Pre-Allocated Container Bytes" for usage detail? Imaging you are the user which is in doubt why no container is moved, what will be your steps to investigate the issue depending on these new outputs? Which outputs will be most useful?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org
Re: [PR] HDDS-14866. Enhance DiskBalancer Report to show individual volume's density [ozone]
Posted by "Gargi-jais11 (via GitHub)" <gi...@apache.org>.
Gargi-jais11 commented on PR #9969:
URL: https://github.com/apache/ozone/pull/9969#issuecomment-4140483651
@ChenSammi I have updated diskBalancerReport, you can have a fresh look now.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@ozone.apache.org
For additional commands, e-mail: issues-help@ozone.apache.org