public class DefaultResourceIsolationManager extends Object implements ResourceIsolationInterface
Modifier and Type | Field and Description |
---|---|
protected Map<String,Object> |
conf |
protected boolean |
runAsUser |
Constructor and Description |
---|
DefaultResourceIsolationManager() |
Modifier and Type | Method and Description |
---|---|
boolean |
areAllProcessesDead(String user,
String workerId)
Check if all the processes are dead.
|
void |
cleanup(String user,
String workerId,
int port)
This function will be called when the worker needs to shutdown.
|
void |
forceKill(String user,
String workerId)
Kill the given worker forcefully.
|
protected Set<Long> |
getAllPids(String workerId)
Get all the pids that are a part of the container.
|
long |
getMemoryUsage(String user,
String workerId,
int port)
Get the current memory usage of the a given worker.
|
long |
getSystemFreeMemoryMb()
Get the amount of free memory in MB.
|
boolean |
isResourceManaged()
This class doesn't really manage resources.
|
void |
kill(String user,
String workerId)
Kill the given worker.
|
void |
launchWorkerProcess(String user,
String topologyId,
Map<String,Object> topoConf,
int port,
String workerId,
List<String> command,
Map<String,String> env,
String logPrefix,
ExitCodeCallback processExitCallback,
File targetDir)
After reserving resources for the worker (i.e.
|
void |
prepare(Map<String,Object> conf)
Called when starting up.
|
void |
reserveResourcesForWorker(String workerId,
Integer workerMemory,
Integer workerCpu,
String numaId)
This function should be used prior to starting the worker to reserve resources for the worker.
|
boolean |
runProfilingCommand(String user,
String workerId,
List<String> command,
Map<String,String> env,
String logPrefix,
File targetDir)
Run profiling command.
|
public void prepare(Map<String,Object> conf) throws IOException
ResourceIsolationInterface
prepare
in interface ResourceIsolationInterface
conf
- the cluster configIOException
- on any error.public void reserveResourcesForWorker(String workerId, Integer workerMemory, Integer workerCpu, String numaId)
ResourceIsolationInterface
reserveResourcesForWorker
in interface ResourceIsolationInterface
workerId
- worker id of the worker to startworkerMemory
- the amount of memory for the worker or null if not enforcedworkerCpu
- the amount of cpu for the worker or null if not enforcednumaId
- NUMA zone if applicable the worker should be bound topublic void cleanup(String user, String workerId, int port) throws IOException
ResourceIsolationInterface
cleanup
in interface ResourceIsolationInterface
user
- the user of the workerworkerId
- worker id to shutdown and clean up afterport
- the port of the workerIOException
public void launchWorkerProcess(String user, String topologyId, Map<String,Object> topoConf, int port, String workerId, List<String> command, Map<String,String> env, String logPrefix, ExitCodeCallback processExitCallback, File targetDir) throws IOException
ResourceIsolationInterface
launchWorkerProcess
in interface ResourceIsolationInterface
user
- the user who runs the command astopologyId
- the Id of the topologytopoConf
- the topology configurationport
- the port where the worker is onworkerId
- the Id of the workercommand
- the command to runenv
- the environment to run the commandlogPrefix
- the prefix to include in the logsprocessExitCallback
- a callback for when the process exitstargetDir
- the working directory to run the command inIOException
- on I/O exceptionpublic long getMemoryUsage(String user, String workerId, int port) throws IOException
ResourceIsolationInterface
getMemoryUsage
in interface ResourceIsolationInterface
user
- the user that the worker is running asworkerId
- the id of the workerport
- the port of the workerIOException
- on I/O exceptionpublic long getSystemFreeMemoryMb() throws IOException
ResourceIsolationInterface
getSystemFreeMemoryMb
in interface ResourceIsolationInterface
IOException
- on I/O exceptionpublic void kill(String user, String workerId) throws IOException
ResourceIsolationInterface
kill
in interface ResourceIsolationInterface
user
- the user that the worker is running asworkerId
- the id of the worker to killIOException
- on I/O exceptionpublic void forceKill(String user, String workerId) throws IOException
ResourceIsolationInterface
forceKill
in interface ResourceIsolationInterface
user
- the user that the worker is running asworkerId
- the id of the worker to killIOException
- on I/O exceptionprotected Set<Long> getAllPids(String workerId) throws IOException
IOException
public boolean areAllProcessesDead(String user, String workerId) throws IOException
ResourceIsolationInterface
areAllProcessesDead
in interface ResourceIsolationInterface
user
- the user that the processes are running asworkerId
- the id of the worker to killIOException
- on I/O exceptionpublic boolean runProfilingCommand(String user, String workerId, List<String> command, Map<String,String> env, String logPrefix, File targetDir) throws IOException, InterruptedException
ResourceIsolationInterface
runProfilingCommand
in interface ResourceIsolationInterface
user
- the user that the worker is running asworkerId
- the id of the workercommand
- the command to runenv
- the environment to run the commandlogPrefix
- the prefix to include in the logstargetDir
- the working directory to run the command inIOException
- on I/O exceptionInterruptedException
- if interruptedpublic boolean isResourceManaged()
isResourceManaged
in interface ResourceIsolationInterface
Copyright © 2023 The Apache Software Foundation. All rights reserved.