| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.hadoop.yarn.server.resourcemanager.webapp.dao; |
| |
| import javax.xml.bind.annotation.XmlAccessType; |
| import javax.xml.bind.annotation.XmlAccessorType; |
| import javax.xml.bind.annotation.XmlRootElement; |
| import javax.xml.bind.annotation.XmlTransient; |
| import javax.xml.bind.annotation.XmlType; |
| |
| import org.apache.hadoop.yarn.api.records.QueueInfo; |
| import org.apache.hadoop.yarn.api.records.QueueState; |
| import org.apache.hadoop.yarn.server.resourcemanager.RMContext; |
| import org.apache.hadoop.yarn.server.resourcemanager.ResourceManager; |
| import org.apache.hadoop.yarn.server.resourcemanager.rmnode.RMNode; |
| import org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNodeReport; |
| import org.apache.hadoop.yarn.server.resourcemanager.scheduler.fifo.FifoScheduler; |
| |
| @XmlRootElement(name = "fifoScheduler") |
| @XmlType(name = "fifoScheduler") |
| @XmlAccessorType(XmlAccessType.FIELD) |
| public class FifoSchedulerInfo extends SchedulerInfo { |
| |
| protected float capacity; |
| protected float usedCapacity; |
| protected QueueState qstate; |
| protected int minQueueMemoryCapacity; |
| protected int maxQueueMemoryCapacity; |
| protected int numNodes; |
| protected int usedNodeCapacity; |
| protected int availNodeCapacity; |
| protected int totalNodeCapacity; |
| protected int numContainers; |
| |
| @XmlTransient |
| protected String qstateFormatted; |
| |
| @XmlTransient |
| protected String qName; |
| |
| public FifoSchedulerInfo() { |
| } // JAXB needs this |
| |
| public FifoSchedulerInfo(final ResourceManager rm) { |
| |
| RMContext rmContext = rm.getRMContext(); |
| |
| FifoScheduler fs = (FifoScheduler) rm.getResourceScheduler(); |
| qName = fs.getQueueInfo("", false, false).getQueueName(); |
| QueueInfo qInfo = fs.getQueueInfo(qName, true, true); |
| |
| this.usedCapacity = qInfo.getCurrentCapacity(); |
| this.capacity = qInfo.getCapacity(); |
| this.minQueueMemoryCapacity = fs.getMinimumResourceCapability().getMemory(); |
| this.maxQueueMemoryCapacity = fs.getMaximumResourceCapability().getMemory(); |
| this.qstate = qInfo.getQueueState(); |
| |
| this.numNodes = rmContext.getRMNodes().size(); |
| this.usedNodeCapacity = 0; |
| this.availNodeCapacity = 0; |
| this.totalNodeCapacity = 0; |
| this.numContainers = 0; |
| |
| for (RMNode ni : rmContext.getRMNodes().values()) { |
| SchedulerNodeReport report = fs.getNodeReport(ni.getNodeID()); |
| this.usedNodeCapacity += report.getUsedResource().getMemory(); |
| this.availNodeCapacity += report.getAvailableResource().getMemory(); |
| this.totalNodeCapacity += ni.getTotalCapability().getMemory(); |
| this.numContainers += fs.getNodeReport(ni.getNodeID()).getNumContainers(); |
| } |
| } |
| |
| public int getNumNodes() { |
| return this.numNodes; |
| } |
| |
| public int getUsedNodeCapacity() { |
| return this.usedNodeCapacity; |
| } |
| |
| public int getAvailNodeCapacity() { |
| return this.availNodeCapacity; |
| } |
| |
| public int getTotalNodeCapacity() { |
| return this.totalNodeCapacity; |
| } |
| |
| public int getNumContainers() { |
| return this.numContainers; |
| } |
| |
| public String getState() { |
| return this.qstate.toString(); |
| } |
| |
| public String getQueueName() { |
| return this.qName; |
| } |
| |
| public int getMinQueueMemoryCapacity() { |
| return this.minQueueMemoryCapacity; |
| } |
| |
| public int getMaxQueueMemoryCapacity() { |
| return this.maxQueueMemoryCapacity; |
| } |
| |
| public float getCapacity() { |
| return this.capacity; |
| } |
| |
| public float getUsedCapacity() { |
| return this.usedCapacity; |
| } |
| |
| } |