Support cpu usage management for Linux
This commit was modified by William Hubbs as follows:
- The paths in the cgroup fs were put into variables to ease
  maintenance.
- Documentation was added to rc.conf.Linux.
- The services were added originally to openrc/svcname cgroups under the
  controller cgroups, but this left an "openrc" cgroup which was unused.
  Now they are added to individual cgroups with the name openrc_${RC_SVCNAME}.
			
			
This commit is contained in:
		
				
					committed by
					
						 William Hubbs
						William Hubbs
					
				
			
			
				
	
			
			
			
						parent
						
							cf7b904704
						
					
				
				
					commit
					4f19c2f512
				
			| @@ -20,10 +20,21 @@ | ||||
| # consolefont, numlock, etc ...) | ||||
| rc_tty_number=12 | ||||
|  | ||||
| ############################################################################## | ||||
| # CGROUPS RESOURCE MANAGEMENT | ||||
|  | ||||
| # If you have cgroups turned on in your kernel, this switch controls | ||||
| # whether or not a group for each controler is mounted under | ||||
| # /sys/fs/cgroup. | ||||
| # Support for process management by cgroups is planned in the future, | ||||
| # so if you turn this off, be aware that you may not be able to use that | ||||
| # feature. | ||||
| # None of the other options in this section work if this is set to "NO". | ||||
| #rc_controller_cgroups="YES" | ||||
|  | ||||
| # These options can be set globally in this file; however, if you do | ||||
| # this, the same setting will apply to all of your services. | ||||
| # If you want different settings for each service, place the settings in | ||||
| # /etc/conf.d/foo for service foo. | ||||
|  | ||||
| # This is the number of CPU shares a service is allowed to use. The | ||||
| # default value, set by the kernel, is 1024. | ||||
| # Also, this setting is not preserved if you suspend your computer. | ||||
| #rc_cgroup_cpu_shares=1024 | ||||
|   | ||||
| @@ -193,11 +193,24 @@ unset _conf_d | ||||
| # Load any system overrides | ||||
| sourcex -e "@SYSCONFDIR@/rc.conf" | ||||
|  | ||||
| if [ "$RC_UNAME" = "Linux" -a "$1" = "start" ]; then | ||||
| 	if [ -d /sys/fs/cgroup/openrc ]; then | ||||
| 		mkdir -p /sys/fs/cgroup/openrc/${RC_SVCNAME} | ||||
| 		echo $$ > /sys/fs/cgroup/openrc/${RC_SVCNAME}/tasks | ||||
| if [ "$RC_UNAME" = "Linux" -a "$RC_SYS" != "PREFIX" -a "$1" = "start" ]; then | ||||
| 	openrc_cgroup=/sys/fs/cgroup/openrc | ||||
| 	if [ -d ${openrc_cgroup} ]; then | ||||
| 		cgroup=${openrc_cgroup}/${RC_SVCNAME} | ||||
| 		mkdir -p ${cgroup} | ||||
| 		[ -f "${cgroup}"/tasks ] && echo 0 > "${cgroup}"/tasks | ||||
| 	fi | ||||
|  | ||||
| 	shares="${rc_cgroup_cpu_shares:-$RC_CGROUP_CPU_SHARES}" | ||||
| 	if [ -n "${shares}" -a -d /sys/fs/cgroup/cpu ]; then | ||||
| 		cgroup=/sys/fs/cgroup/cpu/openrc_${RC_SVCNAME} | ||||
| 		if [ ! -d ${cgroup} ]; then | ||||
| 			mkdir -p ${cgroup} | ||||
| 		fi | ||||
| 		[ -f "${cgroup}"/cpu.shares ] && echo ${shares} > "${cgroup}"/cpu.shares | ||||
| 		[ -f "${cgroup}"/tasks ] && echo 0 >> "${cgroup}"/tasks | ||||
| 	fi | ||||
|  | ||||
| 	#todo: add processes to cgroups based on settings in conf.d | ||||
| fi | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user