YARN-2752. Made ContainerExecutor append "nice -n" arg only when priority adjustment flag is set. Contributed by Xuan Gong.
This commit is contained in:
parent
4ca67c09fc
commit
e06c23a6c9
|
@ -826,6 +826,9 @@ Release 2.6.0 - UNRELEASED
|
||||||
of races between the launch and the stop-container call and when root
|
of races between the launch and the stop-container call and when root
|
||||||
processes crash. (Billie Rinaldi via vinodkv)
|
processes crash. (Billie Rinaldi via vinodkv)
|
||||||
|
|
||||||
|
YARN-2752. Made ContainerExecutor append "nice -n" arg only when priority
|
||||||
|
adjustment flag is set. (Xuan Gong via zjshen)
|
||||||
|
|
||||||
Release 2.5.1 - 2014-09-05
|
Release 2.5.1 - 2014-09-05
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -276,32 +276,39 @@ public abstract class ContainerExecutor implements Configurable {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a command to execute the given command in OS shell.
|
* Return a command to execute the given command in OS shell.
|
||||||
* On Windows, the passed in groupId can be used to launch
|
* On Windows, the passed in groupId can be used to launch
|
||||||
* and associate the given groupId in a process group. On
|
* and associate the given groupId in a process group. On
|
||||||
* non-Windows, groupId is ignored.
|
* non-Windows, groupId is ignored.
|
||||||
*/
|
*/
|
||||||
protected String[] getRunCommand(String command, String groupId,
|
protected String[] getRunCommand(String command, String groupId,
|
||||||
String userName, Path pidFile, Configuration conf) {
|
String userName, Path pidFile, Configuration conf) {
|
||||||
|
boolean containerSchedPriorityIsSet = false;
|
||||||
int containerSchedPriorityAdjustment =
|
int containerSchedPriorityAdjustment =
|
||||||
YarnConfiguration.DEFAULT_NM_CONTAINER_EXECUTOR_SCHED_PRIORITY;
|
YarnConfiguration.DEFAULT_NM_CONTAINER_EXECUTOR_SCHED_PRIORITY;
|
||||||
if (conf.get(YarnConfiguration.NM_CONTAINER_EXECUTOR_SCHED_PRIORITY) !=
|
|
||||||
|
if (conf.get(YarnConfiguration.NM_CONTAINER_EXECUTOR_SCHED_PRIORITY) !=
|
||||||
null) {
|
null) {
|
||||||
containerSchedPriorityAdjustment = conf
|
containerSchedPriorityIsSet = true;
|
||||||
.getInt(YarnConfiguration.NM_CONTAINER_EXECUTOR_SCHED_PRIORITY, 0);
|
containerSchedPriorityAdjustment = conf
|
||||||
|
.getInt(YarnConfiguration.NM_CONTAINER_EXECUTOR_SCHED_PRIORITY,
|
||||||
|
YarnConfiguration.DEFAULT_NM_CONTAINER_EXECUTOR_SCHED_PRIORITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Shell.WINDOWS) {
|
if (Shell.WINDOWS) {
|
||||||
return new String[] { Shell.WINUTILS, "task", "create", groupId,
|
return new String[] { Shell.WINUTILS, "task", "create", groupId,
|
||||||
"cmd /c " + command };
|
"cmd /c " + command };
|
||||||
} else {
|
} else {
|
||||||
List<String> retCommand = new ArrayList<String>();
|
List<String> retCommand = new ArrayList<String>();
|
||||||
retCommand.addAll(Arrays.asList("nice", "-n",
|
if (containerSchedPriorityIsSet) {
|
||||||
Integer.toString(containerSchedPriorityAdjustment)));
|
retCommand.addAll(Arrays.asList("nice", "-n",
|
||||||
|
Integer.toString(containerSchedPriorityAdjustment)));
|
||||||
|
}
|
||||||
retCommand.addAll(Arrays.asList("bash", command));
|
retCommand.addAll(Arrays.asList("bash", command));
|
||||||
return retCommand.toArray(new String[retCommand.size()]);
|
return retCommand.toArray(new String[retCommand.size()]);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is the container still active?
|
* Is the container still active?
|
||||||
|
|
|
@ -34,7 +34,7 @@ public class TestContainerExecutor {
|
||||||
public void testRunCommandNoPriority() throws Exception {
|
public void testRunCommandNoPriority() throws Exception {
|
||||||
Configuration conf = new Configuration();
|
Configuration conf = new Configuration();
|
||||||
String[] command = containerExecutor.getRunCommand("echo", "group1", "user", null, conf);
|
String[] command = containerExecutor.getRunCommand("echo", "group1", "user", null, conf);
|
||||||
assertTrue("first command should be the run command for the platform " + command[0],
|
assertTrue("first command should be the run command for the platform",
|
||||||
command[0].equals(Shell.WINUTILS) || command[0].equals("bash"));
|
command[0].equals(Shell.WINUTILS) || command[0].equals("bash"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue