public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "William Hubbs" <williamh@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/openrc:master commit in: sh/
Date: Sat, 16 Feb 2013 07:30:48 +0000 (UTC)	[thread overview]
Message-ID: <1360999715.b46747f9981337470353014bfa34e9f9f8bace34.WilliamH@OpenRC> (raw)

commit:     b46747f9981337470353014bfa34e9f9f8bace34
Author:     Alexander Vershilov <qnikst <AT> gentoo <DOT> org>
AuthorDate: Sun Feb  3 22:01:16 2013 +0000
Commit:     William Hubbs <williamh <AT> gentoo <DOT> org>
CommitDate: Sat Feb 16 07:28:35 2013 +0000
URL:        http://git.overlays.gentoo.org/gitweb/?p=proj/openrc.git;a=commit;h=b46747f9

Add module for cgroup processing

sh/rc-cgroup.sh.in: new script to handle cgroup processing
sh/rc-cgroup.sh.in: do not use grep or cut (modification by William Hubbs)
sh/runscript.sh.in: use the cgroup script

---
 sh/.gitignore      |    1 +
 sh/Makefile        |    4 +-
 sh/rc-cgroup.sh.in |   59 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 sh/runscript.sh.in |   26 ++++------------------
 4 files changed, 67 insertions(+), 23 deletions(-)

diff --git a/sh/.gitignore b/sh/.gitignore
index a07afb3..9fe5510 100644
--- a/sh/.gitignore
+++ b/sh/.gitignore
@@ -8,6 +8,7 @@ init.sh
 init-early.sh
 ifwatchd-carrier.sh
 ifwatchd-nocarrier.sh
+rc-cgroup.sh
 udhcpc-hook.sh
 tmpfiles.sh
 migrate-to-run.sh

diff --git a/sh/Makefile b/sh/Makefile
index 356c37e..043b144 100644
--- a/sh/Makefile
+++ b/sh/Makefile
@@ -13,9 +13,9 @@ SRCS-FreeBSD=
 BIN-FreeBSD=
 
 SRCS-Linux=	cgroup-release-agent.sh.in init-early.sh.in migrate-to-run.sh.in \
-	udhcpc-hook.sh.in
+	rc-cgroup.sh.in udhcpc-hook.sh.in
 BIN-Linux=	cgroup-release-agent.sh init-early.sh migrate-to-run.sh \
-	udhcpc-hook.sh
+	rc-cgroup.sh udhcpc-hook.sh
 
 SRCS-NetBSD=	ifwatchd-carrier.sh.in ifwatchd-nocarrier.sh.in
 BIN-NetBSD=	ifwatchd-carrier.sh ifwatchd-nocarrier.sh

diff --git a/sh/rc-cgroup.sh.in b/sh/rc-cgroup.sh.in
new file mode 100644
index 0000000..09b9b56
--- /dev/null
+++ b/sh/rc-cgroup.sh.in
@@ -0,0 +1,59 @@
+#@SHELL@
+# Copyright (c) 2012 Alexander Vershilov <qnikst@gentoo.org>
+# Released under the 2-clause BSD license.
+
+cgroup_find_path()
+{
+	local OIFS n name dir result
+	[ -n "$1" ] || return 0
+	OIFS="$IFS"
+	IFS=":"
+	while read n name dir; do
+		[ "$name" = "$1" ] && result="$dir"
+	done < /proc/1/cgroup
+	IFS="$OIFS"
+	echo $result
+}
+
+# prepare values to be attached inside cgroups
+cgroup_prepare()
+{
+	local h=$(cgroup_find_path "$1")
+	cgroup="/sys/fs/cgroup/${1}${h}openrc_${RC_SVCNAME}"
+	[ -d ${cgroup} ] || mkdir -p ${cgroup}
+	return 0
+}
+
+cgroup_set_value()
+{
+	[ -f "$cgroup/${1}" -a -n "$2" ] && echo $2 > "${cgroup}/${1}"
+	return 0
+}
+
+cgroup_add_process()
+{
+	[ -f "${cgroup}"/tasks ] && echo 0 > "${cgroup}"/tasks
+	return 0
+}
+
+cgroup_set_limits()
+{
+	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
+
+	if [ -d /sys/fs/cgroup/cpu ]; then
+		local share
+
+		share=${rc_cgroup_cpu_shares:-$RC_CGROUP_CPU_SHARES}
+		if [ -n "$share" ]; then
+			cgroup_prepare "cpu"
+		cgroup_set_value "cpu.shares" $share
+			cgroup_add_process
+		fi
+	fi
+	return 0
+}

diff --git a/sh/runscript.sh.in b/sh/runscript.sh.in
index f953afb..c9a3745 100644
--- a/sh/runscript.sh.in
+++ b/sh/runscript.sh.in
@@ -34,6 +34,7 @@ sourcex()
 
 sourcex "@LIBEXECDIR@/sh/functions.sh"
 sourcex "@LIBEXECDIR@/sh/rc-functions.sh"
+[ "$RC_SYS" != "PREFIX" ] && sourcex -e "@LIBEXECDIR@/sh/rc-cgroup.sh"
 
 # Support LiveCD foo
 if sourcex -e "/sbin/livecd-functions.sh"; then
@@ -204,30 +205,13 @@ unset _conf_d
 # Load any system overrides
 sourcex -e "@SYSCONFDIR@/rc.conf"
 
-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
-
 # Apply any ulimit defined
 [ -n "${rc_ulimit:-$RC_ULIMIT}" ] && ulimit ${rc_ulimit:-$RC_ULIMIT}
 
+# Apply cgroups settings if defined
+[ "$(command -v cgroup_set_limits)" = "cgroup_set_limits" ] && \
+	cgroup_set_limits
+
 # Load our script
 sourcex "$RC_SERVICE"
 


             reply	other threads:[~2013-02-16  7:30 UTC|newest]

Thread overview: 148+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-16  7:30 William Hubbs [this message]
  -- strict thread matches above, loose matches on Subject: below --
2018-06-15 22:45 [gentoo-commits] proj/openrc:master commit in: sh/ William Hubbs
2018-05-22 22:12 William Hubbs
2018-03-12  2:43 William Hubbs
2018-02-28 18:45 William Hubbs
2018-02-28 18:45 William Hubbs
2018-02-23 21:53 William Hubbs
2017-12-01 21:48 William Hubbs
2017-10-26 18:58 William Hubbs
2017-10-26 18:58 William Hubbs
2017-10-25 20:10 William Hubbs
2017-09-29 17:52 William Hubbs
2017-09-22 22:25 William Hubbs
2017-09-18 18:07 William Hubbs
2017-09-15 20:32 William Hubbs
2017-09-15 18:44 William Hubbs
2017-09-15 18:31 William Hubbs
2017-09-14 15:57 William Hubbs
2017-09-14 15:57 William Hubbs
2017-08-15 22:19 William Hubbs
2017-03-23 18:27 William Hubbs
2017-02-24  0:19 William Hubbs
2016-12-18 17:54 William Hubbs
2016-12-18 17:22 William Hubbs
2016-12-17 22:57 William Hubbs
2016-09-22 23:21 William Hubbs
2016-09-20 16:36 William Hubbs
2016-09-19 23:05 William Hubbs
2016-09-14 19:00 William Hubbs
2016-09-13 17:54 William Hubbs
2016-09-12 17:59 William Hubbs
2016-07-26 15:54 William Hubbs
2016-07-25 20:54 William Hubbs
2016-07-25 20:54 William Hubbs
2016-07-25 20:54 William Hubbs
2016-05-24 16:43 William Hubbs
2016-05-24 16:43 William Hubbs
2016-02-19 21:34 William Hubbs
2016-01-19 23:02 William Hubbs
2015-12-09 18:42 William Hubbs
2015-12-01 18:31 William Hubbs
2015-10-13 22:45 William Hubbs
2015-10-13 22:45 William Hubbs
2015-10-13 13:36 William Hubbs
2015-10-06 17:17 William Hubbs
2015-10-04 20:37 William Hubbs
2015-08-04 19:41 William Hubbs
2015-07-10 18:26 William Hubbs
2015-07-10 18:26 William Hubbs
2015-05-14 19:29 William Hubbs
2015-05-13 21:56 William Hubbs
2015-04-21 21:33 William Hubbs
2015-04-08 15:33 William Hubbs
2015-03-29 23:37 William Hubbs
2015-01-12 21:02 William Hubbs
2014-09-11 19:06 William Hubbs
2014-09-11 17:03 William Hubbs
2014-08-28 14:49 William Hubbs
2014-08-28 14:49 William Hubbs
2014-08-22 19:10 William Hubbs
2014-08-13 20:29 ` William Hubbs
2014-08-22 19:10 William Hubbs
2014-08-07 18:35 ` William Hubbs
2014-08-22 19:10 William Hubbs
2014-08-13 15:07 ` William Hubbs
2014-07-16 18:14 William Hubbs
2014-07-10 17:08 William Hubbs
2014-07-10 17:08 William Hubbs
2014-06-21  0:44 William Hubbs
2014-06-20 21:22 William Hubbs
2014-05-26  6:52 Robin H. Johnson
2014-04-03 18:05 William Hubbs
2014-01-18  8:50 William Hubbs
2014-01-18  7:56 William Hubbs
2013-12-11  4:47 William Hubbs
2013-11-30 21:33 Mike Frysinger
2013-10-31 21:09 William Hubbs
2013-09-27 21:22 William Hubbs
2013-07-27 16:12 William Hubbs
2013-07-26  1:56 William Hubbs
2013-07-25  6:01 William Hubbs
2013-07-23 23:01 William Hubbs
2013-07-23 23:01 William Hubbs
2013-07-16 18:56 William Hubbs
2013-07-16 18:56 William Hubbs
2013-07-16 18:56 William Hubbs
2013-06-24 20:46 William Hubbs
2013-06-24 20:46 William Hubbs
2013-05-26  2:06 William Hubbs
2013-05-26  1:15 William Hubbs
2013-05-05 19:29 William Hubbs
2013-04-03 16:34 William Hubbs
2013-03-11  6:11 William Hubbs
2013-02-24  3:38 William Hubbs
2013-02-19 22:53 William Hubbs
2013-02-17  2:49 William Hubbs
2013-01-17  3:14 Mike Frysinger
2013-01-15 18:36 William Hubbs
2013-01-15 18:21 William Hubbs
2012-12-22 15:47 William Hubbs
2012-12-22 14:40 William Hubbs
2012-12-19 17:43 William Hubbs
2012-12-07 15:48 William Hubbs
2012-12-06 22:51 William Hubbs
2012-11-26  3:45 William Hubbs
2012-11-06 22:41 William Hubbs
2012-11-05 21:25 Robin H. Johnson
2012-10-22  0:53 William Hubbs
2012-10-22  0:53 William Hubbs
2012-10-21 19:51 William Hubbs
2012-10-17 23:19 William Hubbs
2012-09-26 22:12 Robin H. Johnson
2012-08-16 18:45 Robin H. Johnson
2012-07-02 18:27 William Hubbs
2012-05-16 22:00 Christian Ruppert
2012-05-02 19:50 William Hubbs
2012-04-26 17:59 William Hubbs
2012-04-26 17:21 William Hubbs
2012-04-26 17:12 William Hubbs
2012-04-26 16:28 William Hubbs
2012-03-12 19:05 Robin H. Johnson
2012-03-12  8:38 Robin H. Johnson
2012-02-09  9:56 Robin H. Johnson
2012-01-29 15:53 William Hubbs
2012-01-28 18:26 Christian Ruppert
2012-01-27  4:18 William Hubbs
2012-01-17 18:09 William Hubbs
2011-11-18 14:39 William Hubbs
2011-11-18  6:06 William Hubbs
2011-11-02 13:42 William Hubbs
2011-09-18 20:07 Mike Frysinger
2011-09-13  3:20 William Hubbs
2011-09-12 15:48 Christian Ruppert
2011-09-12 15:48 Christian Ruppert
2011-09-12 15:48 Christian Ruppert
2011-09-07 20:14 William Hubbs
2011-09-07  3:21 William Hubbs
2011-07-26 17:29 William Hubbs
2011-07-06 14:55 William Hubbs
2011-07-03  4:34 William Hubbs
2011-06-27 17:11 William Hubbs
2011-06-27 16:56 William Hubbs
2011-06-04  0:43 Mike Frysinger
2011-05-16 22:49 Mike Frysinger
2011-05-11 19:55 William Hubbs
2011-04-19 16:01 William Hubbs
2011-04-18 22:39 William Hubbs
2011-03-25  0:18 William Hubbs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1360999715.b46747f9981337470353014bfa34e9f9f8bace34.WilliamH@OpenRC \
    --to=williamh@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox