HDFS-8009. Signal congestion on the DataNode. Contributed by Haohui Mai.

This commit is contained in:
Haohui Mai 2015-04-01 10:56:53 -07:00
parent 865be70b02
commit a5bcfe0d33
2 changed files with 12 additions and 2 deletions

View File

@ -56,6 +56,8 @@ Release 2.8.0 - UNRELEASED
HDFS-7671. hdfs user guide should point to the common rack awareness doc.
(Kai Sasaki via aajisaka)
HDFS-8009. Signal congestion on the DataNode. (wheat9)
OPTIMIZATIONS
BUG FIXES

View File

@ -357,6 +357,9 @@ public class DataNode extends ReconfigurableBase
private String dnUserName = null;
private SpanReceiverHost spanReceiverHost;
private static final int NUM_CORES = Runtime.getRuntime()
.availableProcessors();
private static final double CONGESTION_RATIO = 1.5;
/**
* Creates a dummy DataNode for testing purpose.
@ -487,8 +490,13 @@ public class DataNode extends ReconfigurableBase
* </ul>
*/
public PipelineAck.ECN getECN() {
return pipelineSupportECN ? PipelineAck.ECN.SUPPORTED : PipelineAck.ECN
.DISABLED;
if (!pipelineSupportECN) {
return PipelineAck.ECN.DISABLED;
}
double load = ManagementFactory.getOperatingSystemMXBean()
.getSystemLoadAverage();
return load > NUM_CORES * CONGESTION_RATIO ? PipelineAck.ECN.CONGESTED :
PipelineAck.ECN.SUPPORTED;
}
/**