Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E0A37200CDA for ; Fri, 4 Aug 2017 10:10:07 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id DF12F16D430; Fri, 4 Aug 2017 08:10:07 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 2D81D16D42D for ; Fri, 4 Aug 2017 10:10:07 +0200 (CEST) Received: (qmail 7580 invoked by uid 500); 4 Aug 2017 08:10:06 -0000 Mailing-List: contact yarn-issues-help@hadoop.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list yarn-issues@hadoop.apache.org Received: (qmail 7066 invoked by uid 99); 4 Aug 2017 08:10:05 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 04 Aug 2017 08:10:05 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id D5D26C23AA for ; Fri, 4 Aug 2017 08:10:04 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -99.202 X-Spam-Level: X-Spam-Status: No, score=-99.202 tagged_above=-999 required=6.31 tests=[KAM_ASCII_DIVIDERS=0.8, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001, USER_IN_WHITELIST=-100] autolearn=disabled Received: from mx1-lw-us.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id GQgSKTpKKmfW for ; Fri, 4 Aug 2017 08:10:04 +0000 (UTC) Received: from mailrelay1-us-west.apache.org (mailrelay1-us-west.apache.org [209.188.14.139]) by mx1-lw-us.apache.org (ASF Mail Server at mx1-lw-us.apache.org) with ESMTP id CCB935F5B8 for ; Fri, 4 Aug 2017 08:10:03 +0000 (UTC) Received: from jira-lw-us.apache.org (unknown [207.244.88.139]) by mailrelay1-us-west.apache.org (ASF Mail Server at mailrelay1-us-west.apache.org) with ESMTP id 92F59E0D71 for ; Fri, 4 Aug 2017 08:10:02 +0000 (UTC) Received: from jira-lw-us.apache.org (localhost [127.0.0.1]) by jira-lw-us.apache.org (ASF Mail Server at jira-lw-us.apache.org) with ESMTP id 86AE324656 for ; Fri, 4 Aug 2017 08:10:00 +0000 (UTC) Date: Fri, 4 Aug 2017 08:10:00 +0000 (UTC) From: "Yufei Gu (JIRA)" To: yarn-issues@hadoop.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Resolved] (YARN-6947) The implementation of Schedulable#getResourceUsage so inefficiency that can reduce the performance of scheduling MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 archived-at: Fri, 04 Aug 2017 08:10:08 -0000 [ https://issues.apache.org/jira/browse/YARN-6947?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Yufei Gu resolved YARN-6947. ---------------------------- Resolution: Duplicate > The implementation of Schedulable#getResourceUsage so inefficiency that can reduce the performance of scheduling > ---------------------------------------------------------------------------------------------------------------- > > Key: YARN-6947 > URL: https://issues.apache.org/jira/browse/YARN-6947 > Project: Hadoop YARN > Issue Type: Improvement > Components: fairscheduler > Reporter: YunFan Zhou > Priority: Critical > > Each time the FairScheduler assign container, it will checks whether the resources used by the queue exceed Max Share. However, our current calculation of the resources of the queue is particularly inefficient, which recursively iterates over all child nodes, with high time complexity. > We can refactor this logic by using lazy update way. > {code:java} > @Override > public Resource assignContainer(FSSchedulerNode node) { > Resource assigned = Resources.none(); > // If this queue is over its limit, reject > if (!assignContainerPreCheck(node)) { > return assigned; > } > {code} > {code:java} > * Helper method to check if the queue should attempt assigning resources > * > * @return true if check passes (can assign) or false otherwise > */ > boolean assignContainerPreCheck(FSSchedulerNode node) { > if (node.getReservedContainer() != null) { > if (LOG.isDebugEnabled()) { > LOG.debug("Assigning container failed on node '" + node.getNodeName() > + " because it has reserved containers."); > } > return false; > } else if (!Resources.fitsIn(getResourceUsage(), maxShare)) { > if (LOG.isDebugEnabled()) { > LOG.debug("Assigning container failed on node '" + node.getNodeName() > + " because queue resource usage is larger than MaxShare: " > + dumpState()); > } > return false; > } else { > return true; > } > } > {code} > {code:java} > @Override > public Resource getResourceUsage() { > Resource usage = Resources.createResource(0); > readLock.lock(); > try { > for (FSQueue child : childQueues) { > Resources.addTo(usage, child.getResourceUsage()); > } > } finally { > readLock.unlock(); > } > return usage; > } > {code} -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: yarn-issues-unsubscribe@hadoop.apache.org For additional commands, e-mail: yarn-issues-help@hadoop.apache.org