Skip to content
Snippets Groups Projects
Commit d5f23e00 authored by Patrick Wendell's avatar Patrick Wendell
Browse files

Adding scheduling and reporting based on cores

parent 760823d3
No related branches found
No related tags found
No related merge requests found
......@@ -425,7 +425,7 @@ private[spark] class Master(host: String, port: Int, webUiPort: Int) extends Act
// First schedule drivers, they take strict precedence over applications
for (worker <- workers if worker.coresFree > 0 && worker.state == WorkerState.ALIVE) {
for (driver <- Seq(waitingDrivers: _*)) {
if (worker.memoryFree > driver.desc.mem) {
if (worker.memoryFree > driver.desc.mem && worker.coresFree > driver.desc.cores) {
launchDriver(worker, driver)
waitingDrivers -= driver
}
......
......@@ -88,13 +88,13 @@ private[spark] class WorkerInfo(
def addDriver(driver: DriverInfo) {
drivers(driver.id) = driver
memoryUsed += driver.desc.mem
coresUsed += 1
coresUsed += driver.desc.cores
}
def removeDriver(driver: DriverInfo) {
drivers -= driver.id
memoryUsed -= driver.desc.mem
coresUsed -= 1
coresUsed -= driver.desc.cores
}
def webUiAddress : String = {
......
......@@ -57,7 +57,7 @@ private[spark] class IndexPage(parent: MasterWebUI) {
val completedApps = state.completedApps.sortBy(_.endTime).reverse
val completedAppsTable = UIUtils.listingTable(appHeaders, appRow, completedApps)
val driverHeaders = Seq("ID", "Submitted Time", "Worker", "State", "Memory", "Main Class")
val driverHeaders = Seq("ID", "Submitted Time", "Worker", "State", "Cores", "Memory", "Main Class")
val activeDrivers = state.activeDrivers.sortBy(_.startTime).reverse
val activeDriversTable = UIUtils.listingTable(driverHeaders, driverRow, activeDrivers)
val completedDrivers = state.completedDrivers.sortBy(_.startTime).reverse
......@@ -166,6 +166,9 @@ private[spark] class IndexPage(parent: MasterWebUI) {
<td>{driver.submitDate}</td>
<td>{driver.worker.map(w => w.id.toString).getOrElse("None")}</td>
<td>{driver.state}</td>
<td sorttable_customkey={driver.desc.cores.toString}>
{driver.desc.cores.toString}
</td>
<td sorttable_customkey={driver.desc.mem.toString}>
{Utils.megabytesToString(driver.desc.mem.toLong)}
</td>
......
......@@ -53,8 +53,8 @@ private[spark] class DriverRunner(
try {
val driverDir = createWorkingDirectory()
val localJarFilename = downloadUserJar(driverDir)
val command = Seq("java") ++ driverDesc.javaOptions ++ Seq("-cp", localJarFilename) ++
Seq(driverDesc.mainClass) ++ driverDesc.options
val command = Seq("java") ++ driverDesc.javaOptions ++ Seq(s"-Xmx${driverDesc.mem}m")
Seq("-cp", localJarFilename) ++ Seq(driverDesc.mainClass) ++ driverDesc.options
runCommandWithRetry(command, driverDesc.envVars, driverDir)
}
catch {
......
......@@ -279,7 +279,7 @@ private[spark] class Worker(
}
val driver = drivers(driverId)
memoryUsed -= driver.driverDesc.mem
coresUsed -= 1
coresUsed -= driver.driverDesc.cores
drivers -= driverId
finishedDrivers(driverId) = driver
}
......
......@@ -56,7 +56,7 @@ private[spark] class IndexPage(parent: WorkerWebUI) {
val finishedExecutorTable =
UIUtils.listingTable(executorHeaders, executorRow, workerState.finishedExecutors)
val driverHeaders = Seq("DriverID", "Main Class", "Memory", "Logs")
val driverHeaders = Seq("DriverID", "Main Class", "Cores", "Memory", "Logs")
val runningDriverTable =
UIUtils.listingTable(driverHeaders, driverRow, workerState.drivers)
def finishedDriverTable =
......@@ -138,6 +138,9 @@ private[spark] class IndexPage(parent: WorkerWebUI) {
<tr>
<td>{driver.driverId}</td>
<td>{driver.driverDesc.mainClass}</td>
<td sorttable_customkey={driver.driverDesc.cores.toString}>
{driver.driverDesc.cores.toString}
</td>
<td sorttable_customkey={driver.driverDesc.mem.toString}>
{Utils.megabytesToString(driver.driverDesc.mem)}
</td>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment