From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) by finch.gentoo.org (Postfix) with ESMTP id 5E6211381F3 for ; Mon, 12 Nov 2012 17:00:56 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id E8B0421C006; Mon, 12 Nov 2012 17:00:46 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 5C8B021C006 for ; Mon, 12 Nov 2012 17:00:46 +0000 (UTC) Received: from hornbill.gentoo.org (hornbill.gentoo.org [94.100.119.163]) (using TLSv1 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 46BD033D94B for ; Mon, 12 Nov 2012 17:00:45 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by hornbill.gentoo.org (Postfix) with ESMTP id 3BD89E5436 for ; Mon, 12 Nov 2012 17:00:43 +0000 (UTC) From: "William Hubbs" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "William Hubbs" Message-ID: <1352739480.4f19c2f512d9a08599b6bdf1129f508fc9a4e055.WilliamH@OpenRC> Subject: [gentoo-commits] proj/openrc:master commit in: sh/, etc/ X-VCS-Repository: proj/openrc X-VCS-Files: etc/rc.conf.Linux sh/runscript.sh.in X-VCS-Directories: sh/ etc/ X-VCS-Committer: WilliamH X-VCS-Committer-Name: William Hubbs X-VCS-Revision: 4f19c2f512d9a08599b6bdf1129f508fc9a4e055 X-VCS-Branch: master Date: Mon, 12 Nov 2012 17:00:43 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: ab95aaf8-9fb6-477b-a86e-481a9c5c838f X-Archives-Hash: a94c587286416db38dd88a2f7fb7360f commit: 4f19c2f512d9a08599b6bdf1129f508fc9a4e055 Author: Alexander Vershilov gmail com> AuthorDate: Fri Oct 26 05:05:41 2012 +0000 Commit: William Hubbs gentoo org> CommitDate: Mon Nov 12 16:58:00 2012 +0000 URL: http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git;a=commit;h=4f19c2f5 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}. --- etc/rc.conf.Linux | 17 ++++++++++++++--- sh/runscript.sh.in | 21 +++++++++++++++++---- 2 files changed, 31 insertions(+), 7 deletions(-) diff --git a/etc/rc.conf.Linux b/etc/rc.conf.Linux index 909e6a9..6285bde 100644 --- a/etc/rc.conf.Linux +++ b/etc/rc.conf.Linux @@ -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 diff --git a/sh/runscript.sh.in b/sh/runscript.sh.in index d53d70d..21ff39a 100644 --- a/sh/runscript.sh.in +++ b/sh/runscript.sh.in @@ -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