From 4d211d5fde5a4f17f7bf2cc62636167b49a79cbd Mon Sep 17 00:00:00 2001 From: Karthik Kambatla Date: Sat, 12 Jul 2014 15:10:19 +0000 Subject: [PATCH] YARN-2274. FairScheduler: Add debug information about cluster capacity, availability and reservations. (kasha) git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1609942 13f79535-47bb-0310-9956-ffa450edef68 --- hadoop-yarn-project/CHANGES.txt | 3 +++ .../scheduler/fair/FairScheduler.java | 20 ++++++++++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/hadoop-yarn-project/CHANGES.txt b/hadoop-yarn-project/CHANGES.txt index 2461cf2f6c..bfe257558f 100644 --- a/hadoop-yarn-project/CHANGES.txt +++ b/hadoop-yarn-project/CHANGES.txt @@ -40,6 +40,9 @@ Release 2.6.0 - UNRELEASED YARN-2242. Improve exception information on AM launch crashes. (Li Lu via junping_du) + YARN-2274. FairScheduler: Add debug information about cluster capacity, + availability and reservations. (kasha) + OPTIMIZATIONS BUG FIXES diff --git a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java index 7a4e79c36a..6f9b76f010 100644 --- a/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java +++ b/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-resourcemanager/src/main/java/org/apache/hadoop/yarn/server/resourcemanager/scheduler/fair/FairScheduler.java @@ -136,6 +136,8 @@ public class FairScheduler extends // How often fair shares are re-calculated (ms) protected long UPDATE_INTERVAL = 500; + private final int UPDATE_DEBUG_FREQUENCY = 5; + private int updatesToSkipForDebug = UPDATE_DEBUG_FREQUENCY; private Thread updateThread; private Thread schedulingThread; @@ -275,6 +277,18 @@ public class FairScheduler extends // Recursively compute fair shares for all queues // and update metrics rootQueue.recomputeShares(); + + if (LOG.isDebugEnabled()) { + if (--updatesToSkipForDebug < 0) { + updatesToSkipForDebug = UPDATE_DEBUG_FREQUENCY; + LOG.debug("Cluster Capacity: " + clusterResource + + " Allocations: " + rootMetrics.getAllocatedResources() + + " Availability: " + Resource.newInstance( + rootMetrics.getAvailableMB(), + rootMetrics.getAvailableVirtualCores()) + + " Demand: " + rootQueue.getDemand()); + } + } } /** @@ -879,14 +893,14 @@ public class FairScheduler extends // Update application requests application.updateResourceRequests(ask); - LOG.debug("allocate: post-update"); application.showRequests(); } if (LOG.isDebugEnabled()) { - LOG.debug("allocate:" + + LOG.debug("allocate: post-update" + " applicationAttemptId=" + appAttemptId + - " #ask=" + ask.size()); + " #ask=" + ask.size() + + " reservation= " + application.getCurrentReservation()); LOG.debug("Preempting " + application.getPreemptionContainers().size() + " container(s)");