YARN-370. Fix SchedulerUtils to correctly round up the resource for containers. Contributed by Zhijie Shen.
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1442840 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e28edbffe1
commit
38bb4ad738
|
@ -219,6 +219,9 @@ Release 2.0.3-alpha - Unreleased
|
||||||
YARN-372. Move InlineDispatcher from hadoop-yarn-server-resourcemanager to
|
YARN-372. Move InlineDispatcher from hadoop-yarn-server-resourcemanager to
|
||||||
hadoop-yarn-common (sseth via hitesh)
|
hadoop-yarn-common (sseth via hitesh)
|
||||||
|
|
||||||
|
YARN-370. Fix SchedulerUtils to correctly round up the resource for
|
||||||
|
containers. (Zhijie Shen via acmurthy)
|
||||||
|
|
||||||
Release 2.0.2-alpha - 2012-09-07
|
Release 2.0.2-alpha - 2012-09-07
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -108,7 +108,8 @@ public class SchedulerUtils {
|
||||||
Resource normalized =
|
Resource normalized =
|
||||||
Resources.normalize(
|
Resources.normalize(
|
||||||
resourceCalculator, ask.getCapability(), minimumResource);
|
resourceCalculator, ask.getCapability(), minimumResource);
|
||||||
ask.setCapability(normalized);
|
ask.getCapability().setMemory(normalized.getMemory());
|
||||||
|
ask.getCapability().setVirtualCores(normalized.getVirtualCores());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
package org.apache.hadoop.yarn.server.resourcemanager.scheduler;
|
package org.apache.hadoop.yarn.server.resourcemanager.scheduler;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import org.apache.hadoop.yarn.api.records.Resource;
|
import org.apache.hadoop.yarn.api.records.Resource;
|
||||||
import org.apache.hadoop.yarn.api.records.ResourceRequest;
|
import org.apache.hadoop.yarn.api.records.ResourceRequest;
|
||||||
|
@ -42,23 +43,35 @@ public class TestSchedulerUtils {
|
||||||
|
|
||||||
// case negative memory
|
// case negative memory
|
||||||
ask.setCapability(Resources.createResource(-1024));
|
ask.setCapability(Resources.createResource(-1024));
|
||||||
|
Resource before = ask.getCapability();
|
||||||
SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource);
|
SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource);
|
||||||
|
Resource after = ask.getCapability();
|
||||||
assertEquals(minMemory, ask.getCapability().getMemory());
|
assertEquals(minMemory, ask.getCapability().getMemory());
|
||||||
|
assertTrue(before == after);
|
||||||
|
|
||||||
// case zero memory
|
// case zero memory
|
||||||
ask.setCapability(Resources.createResource(0));
|
ask.setCapability(Resources.createResource(0));
|
||||||
|
before = ask.getCapability();
|
||||||
SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource);
|
SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource);
|
||||||
|
after = ask.getCapability();
|
||||||
assertEquals(minMemory, ask.getCapability().getMemory());
|
assertEquals(minMemory, ask.getCapability().getMemory());
|
||||||
|
assertTrue(before == after);
|
||||||
|
|
||||||
// case memory is a multiple of minMemory
|
// case memory is a multiple of minMemory
|
||||||
ask.setCapability(Resources.createResource(2 * minMemory));
|
ask.setCapability(Resources.createResource(2 * minMemory));
|
||||||
|
before = ask.getCapability();
|
||||||
SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource);
|
SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource);
|
||||||
|
after = ask.getCapability();
|
||||||
assertEquals(2 * minMemory, ask.getCapability().getMemory());
|
assertEquals(2 * minMemory, ask.getCapability().getMemory());
|
||||||
|
assertTrue(before == after);
|
||||||
|
|
||||||
// case memory is not a multiple of minMemory
|
// case memory is not a multiple of minMemory
|
||||||
ask.setCapability(Resources.createResource(minMemory + 10));
|
ask.setCapability(Resources.createResource(minMemory + 10));
|
||||||
|
before = ask.getCapability();
|
||||||
SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource);
|
SchedulerUtils.normalizeRequest(ask, resourceCalculator, null, minResource);
|
||||||
|
after = ask.getCapability();
|
||||||
assertEquals(2 * minMemory, ask.getCapability().getMemory());
|
assertEquals(2 * minMemory, ask.getCapability().getMemory());
|
||||||
|
assertTrue(before == after);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,24 +86,33 @@ public class TestSchedulerUtils {
|
||||||
|
|
||||||
// case negative memory/vcores
|
// case negative memory/vcores
|
||||||
ask.setCapability(Resources.createResource(-1024, -1));
|
ask.setCapability(Resources.createResource(-1024, -1));
|
||||||
|
Resource before = ask.getCapability();
|
||||||
SchedulerUtils.normalizeRequest(
|
SchedulerUtils.normalizeRequest(
|
||||||
ask, resourceCalculator, clusterResource, minResource);
|
ask, resourceCalculator, clusterResource, minResource);
|
||||||
|
Resource after = ask.getCapability();
|
||||||
assertEquals(minResource, ask.getCapability());
|
assertEquals(minResource, ask.getCapability());
|
||||||
|
assertTrue(before == after);
|
||||||
|
|
||||||
// case zero memory/vcores
|
// case zero memory/vcores
|
||||||
ask.setCapability(Resources.createResource(0, 0));
|
ask.setCapability(Resources.createResource(0, 0));
|
||||||
|
before = ask.getCapability();
|
||||||
SchedulerUtils.normalizeRequest(
|
SchedulerUtils.normalizeRequest(
|
||||||
ask, resourceCalculator, clusterResource, minResource);
|
ask, resourceCalculator, clusterResource, minResource);
|
||||||
|
after = ask.getCapability();
|
||||||
assertEquals(minResource, ask.getCapability());
|
assertEquals(minResource, ask.getCapability());
|
||||||
assertEquals(1, ask.getCapability().getVirtualCores());
|
assertEquals(1, ask.getCapability().getVirtualCores());
|
||||||
assertEquals(1024, ask.getCapability().getMemory());
|
assertEquals(1024, ask.getCapability().getMemory());
|
||||||
|
assertTrue(before == after);
|
||||||
|
|
||||||
// case non-zero memory & zero cores
|
// case non-zero memory & zero cores
|
||||||
ask.setCapability(Resources.createResource(1536, 0));
|
ask.setCapability(Resources.createResource(1536, 0));
|
||||||
|
before = ask.getCapability();
|
||||||
SchedulerUtils.normalizeRequest(
|
SchedulerUtils.normalizeRequest(
|
||||||
ask, resourceCalculator, clusterResource, minResource);
|
ask, resourceCalculator, clusterResource, minResource);
|
||||||
|
after = ask.getCapability();
|
||||||
assertEquals(Resources.createResource(2048, 1), ask.getCapability());
|
assertEquals(Resources.createResource(2048, 1), ask.getCapability());
|
||||||
assertEquals(1, ask.getCapability().getVirtualCores());
|
assertEquals(1, ask.getCapability().getVirtualCores());
|
||||||
assertEquals(2048, ask.getCapability().getMemory());
|
assertEquals(2048, ask.getCapability().getMemory());
|
||||||
|
assertTrue(before == after);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue