Package org.apache.storm.container
Interface ResourceIsolationInterface
-
- All Known Implementing Classes:
CgroupManager
,DefaultResourceIsolationManager
,DockerManager
,OciContainerManager
,RuncLibContainerManager
public interface ResourceIsolationInterface
A plugin to support resource isolation and limitation within Storm.
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method 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.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()
Return true if resources are being managed.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.
-
-
-
Method Detail
-
prepare
void prepare(Map<String,Object> conf) throws IOException
Called when starting up.- Parameters:
conf
- the cluster config- Throws:
IOException
- on any error.
-
reserveResourcesForWorker
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.- Parameters:
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 to
-
cleanup
void cleanup(String user, String workerId, int port) throws IOException
This function will be called when the worker needs to shutdown. This function should include logic to clean up after a worker is shutdown.- Parameters:
user
- the user of the workerworkerId
- worker id to shutdown and clean up afterport
- the port of the worker- Throws:
IOException
-
launchWorkerProcess
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
After reserving resources for the worker (i.e. calling reserveResourcesForWorker), this function can be used to launch worker process.- Parameters:
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 in- Throws:
IOException
- on I/O exception
-
getMemoryUsage
long getMemoryUsage(String user, String workerId, int port) throws IOException
Get the current memory usage of the a given worker.- Parameters:
user
- the user that the worker is running asworkerId
- the id of the workerport
- the port of the worker- Returns:
- the amount of memory the worker is using in bytes or -1 if not supported
- Throws:
IOException
- on I/O exception
-
getSystemFreeMemoryMb
long getSystemFreeMemoryMb() throws IOException
Get the amount of free memory in MB. This might not be the entire box, it might be within a parent resource group.- Returns:
- The amount of memory in MB that are free on the system.
- Throws:
IOException
- on I/O exception
-
kill
void kill(String user, String workerId) throws IOException
Kill the given worker.- Parameters:
user
- the user that the worker is running asworkerId
- the id of the worker to kill- Throws:
IOException
- on I/O exception
-
forceKill
void forceKill(String user, String workerId) throws IOException
Kill the given worker forcefully.- Parameters:
user
- the user that the worker is running asworkerId
- the id of the worker to kill- Throws:
IOException
- on I/O exception
-
areAllProcessesDead
boolean areAllProcessesDead(String user, String workerId) throws IOException
Check if all the processes are dead.- Parameters:
user
- the user that the processes are running asworkerId
- the id of the worker to kill- Returns:
- true if all the processed are dead; false otherwise
- Throws:
IOException
- on I/O exception
-
runProfilingCommand
boolean runProfilingCommand(String user, String workerId, List<String> command, Map<String,String> env, String logPrefix, File targetDir) throws IOException, InterruptedException
Run profiling command.- Parameters:
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 in- Returns:
- true if succeeds; false otherwise
- Throws:
IOException
- on I/O exceptionInterruptedException
- if interrupted
-
isResourceManaged
boolean isResourceManaged()
Return true if resources are being managed. TheDefaultResourceIsolationManager
will have it return false since it doesn't really manage resources.- Returns:
- true if resources are being managed.
-
-