Class CgroupManager
java.lang.Object
org.apache.storm.container.DefaultResourceIsolationManager
org.apache.storm.container.cgroup.CgroupManager
- All Implemented Interfaces:
- ResourceIsolationInterface
Class that implements ResourceIsolationInterface that manages cgroups.
- 
Field SummaryFields inherited from class org.apache.storm.container.DefaultResourceIsolationManagerconf, runAsUser
- 
Constructor SummaryConstructors
- 
Method SummaryModifier and TypeMethodDescriptionvoidThis function will be called when the worker needs to shutdown.getAllPids(String workerId) Get all of the pids that are a part of this container.getLaunchCommand(String workerId, List<String> existingCommand) To compose launch command based on workerId and existing command.longgetMemoryUsage(String user, String workerId, int port) Get the current memory usage of the a given worker.longGet the amount of free memory in MB.protected static booleanExtracting out to mock it for tests.booleanThis class doesn't really manage resources.voidlaunchWorkerProcess(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.voidinitialize data structures.voidreserveResourcesForWorker(String workerId, Integer totalMem, Integer cpuNum, String numaId) This function should be used prior to starting the worker to reserve resources for the worker.Methods inherited from class org.apache.storm.container.DefaultResourceIsolationManagerareAllProcessesDead, forceKill, kill, runProfilingCommand
- 
Constructor Details- 
CgroupManagerpublic CgroupManager()
 
- 
- 
Method Details- 
prepareinitialize data structures.- Specified by:
- preparein interface- ResourceIsolationInterface
- Overrides:
- preparein class- DefaultResourceIsolationManager
- Parameters:
- conf- storm confs
- Throws:
- IOException- on any error.
 
- 
reserveResourcesForWorkerpublic void reserveResourcesForWorker(String workerId, Integer totalMem, Integer cpuNum, String numaId) throws SecurityException Description copied from interface:ResourceIsolationInterfaceThis function should be used prior to starting the worker to reserve resources for the worker.- Specified by:
- reserveResourcesForWorkerin interface- ResourceIsolationInterface
- Overrides:
- reserveResourcesForWorkerin class- DefaultResourceIsolationManager
- Parameters:
- workerId- worker id of the worker to start
- totalMem- the amount of memory for the worker or null if not enforced
- cpuNum- the amount of cpu for the worker or null if not enforced
- numaId- NUMA zone if applicable the worker should be bound to
- Throws:
- SecurityException
 
- 
cleanupDescription copied from interface:ResourceIsolationInterfaceThis function will be called when the worker needs to shutdown. This function should include logic to clean up after a worker is shutdown.- Specified by:
- cleanupin interface- ResourceIsolationInterface
- Overrides:
- cleanupin class- DefaultResourceIsolationManager
- Parameters:
- user- the user of the worker
- workerId- worker id to shutdown and clean up after
- port- the port of the worker
- Throws:
- IOException
 
- 
isOnLinuxprotected static boolean isOnLinux()Extracting out to mock it for tests.- Returns:
- true if on Linux.
 
- 
launchWorkerProcesspublic void launchWorkerProcess(String user, String topologyId, Map<String, Object> topoConf, int port, String workerId, List<String> command, Map<String, throws IOExceptionString> env, String logPrefix, ExitCodeCallback processExitCallback, File targetDir) Description copied from interface:ResourceIsolationInterfaceAfter reserving resources for the worker (i.e. calling reserveResourcesForWorker), this function can be used to launch worker process.- Specified by:
- launchWorkerProcessin interface- ResourceIsolationInterface
- Overrides:
- launchWorkerProcessin class- DefaultResourceIsolationManager
- Parameters:
- user- the user who runs the command as
- topologyId- the Id of the topology
- topoConf- the topology configuration
- port- the port where the worker is on
- workerId- the Id of the worker
- command- the command to run
- env- the environment to run the command
- logPrefix- the prefix to include in the logs
- processExitCallback- a callback for when the process exits
- targetDir- the working directory to run the command in
- Throws:
- IOException- on I/O exception
 
- 
getLaunchCommandTo compose launch command based on workerId and existing command.- Parameters:
- workerId- the worker id
- existingCommand- the current command to run that may need to be modified
- Returns:
- new commandline with necessary additions to launch worker
 
- 
getAllPidsGet all of the pids that are a part of this container.- Overrides:
- getAllPidsin class- DefaultResourceIsolationManager
- Parameters:
- workerId- the worker id
- Returns:
- all of the pids that are a part of this container
- Throws:
- IOException
 
- 
getMemoryUsageDescription copied from interface:ResourceIsolationInterfaceGet the current memory usage of the a given worker.- Specified by:
- getMemoryUsagein interface- ResourceIsolationInterface
- Overrides:
- getMemoryUsagein class- DefaultResourceIsolationManager
- Parameters:
- user- the user that the worker is running as
- workerId- the id of the worker
- port- 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
 
- 
getSystemFreeMemoryMbDescription copied from interface:ResourceIsolationInterfaceGet the amount of free memory in MB. This might not be the entire box, it might be within a parent resource group.- Specified by:
- getSystemFreeMemoryMbin interface- ResourceIsolationInterface
- Overrides:
- getSystemFreeMemoryMbin class- DefaultResourceIsolationManager
- Returns:
- The amount of memory in MB that are free on the system.
- Throws:
- IOException- on I/O exception
 
- 
isResourceManagedpublic boolean isResourceManaged()Description copied from class:DefaultResourceIsolationManagerThis class doesn't really manage resources.- Specified by:
- isResourceManagedin interface- ResourceIsolationInterface
- Overrides:
- isResourceManagedin class- DefaultResourceIsolationManager
- Returns:
- false
 
 
-