HDFS-8009. Signal congestion on the DataNode. Contributed by Haohui Mai.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/0d7c0758 Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/0d7c0758 Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/0d7c0758 Branch: refs/heads/YARN-2928 Commit: 0d7c0758b7079ed1660f124d2adcc91ccc9e7289 Parents: a920ab0 Author: Haohui Mai <[email protected]> Authored: Wed Apr 1 10:56:53 2015 -0700 Committer: Zhijie Shen <[email protected]> Committed: Mon Apr 6 12:08:11 2015 -0700 ---------------------------------------------------------------------- hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt | 2 ++ .../apache/hadoop/hdfs/server/datanode/DataNode.java | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hadoop/blob/0d7c0758/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt index 4247ea6..cba53a3 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt +++ b/hadoop-hdfs-project/hadoop-hdfs/CHANGES.txt @@ -371,6 +371,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 http://git-wip-us.apache.org/repos/asf/hadoop/blob/0d7c0758/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java ---------------------------------------------------------------------- diff --git a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java index 071aba1..50dccb8 100644 --- a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java +++ b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/hdfs/server/datanode/DataNode.java @@ -354,6 +354,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. @@ -484,8 +487,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; } /**
