From 03e54684e1f9c0ae730cf998f80dd9ae4682c512 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Fri, 23 Sep 2011 11:30:44 +0200 Subject: [PATCH] initial import (from svn) --- Makefile | 39 ++++++++ debian/changelog | 38 ++++++++ debian/compat | 1 + debian/control | 14 +++ debian/copyright | 23 +++++ debian/defaults | 12 +++ debian/patches/adjust-ksm-slepp.diff | 26 ++++++ debian/patches/init-script.diff | 127 +++++++++++++++++++++++++++ debian/patches/ksmtuned.diff | 23 +++++ debian/patches/series | 3 + debian/postinst | 80 +++++++++++++++++ debian/postrm | 8 ++ debian/rules | 97 ++++++++++++++++++++ 13 files changed, 491 insertions(+) create mode 100644 Makefile create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/defaults create mode 100644 debian/patches/adjust-ksm-slepp.diff create mode 100644 debian/patches/init-script.diff create mode 100644 debian/patches/ksmtuned.diff create mode 100644 debian/patches/series create mode 100644 debian/postinst create mode 100644 debian/postrm create mode 100755 debian/rules diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..488cfbe --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +RELEASE=1.8 + +PACKAGE=ksm-control-daemon +PKGVER=1.0 +PKGREL=6 + +KSM_DEB=${PACKAGE}_${PKGVER}-${PKGREL}_all.deb + +all: ${KSM_DEB} + +${KSM_DEB} ksm: ksm-control-scripts.org/ksm.init + rm -rf ksm-control-scripts + rsync -a --exclude .git ksm-control-scripts.org/ ksm-control-scripts + cp -a debian ksm-control-scripts + cd ksm-control-scripts; dpkg-buildpackage -rfakeroot -us -uc + lintian ${KSM_DEB} || true + +ksm-control-scripts.org/ksm.init: + git clone git://gitorious.org/ksm-control-scripts/ksm-control-scripts.git ksm-control-scripts.org + touch $@ + + +.PHONY: upload +upload: ${KSM_DEB} + umount /pve/${RELEASE}; mount /pve/${RELEASE} -o rw + mkdir -p /pve/${RELEASE}/extra + rm -rf /pve/${RELEASE}/extra/Packages* + rm -rf /pve/${RELEASE}/extra/${PACKAGE}_*.deb + cp ${KSM_DEB} /pve/${RELEASE}/extra + cd /pve/${RELEASE}/extra; dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz + umount /pve/${RELEASE}; mount /pve/${RELEASE} -o ro + +.PHONY: distclean +distclean: clean + rm -rf ksm-control-scripts.org + +.PHONY: clean +clean: + rm -rf *~ ksm-control-scripts ${PACKAGE}_* \ No newline at end of file diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..fd941a6 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,38 @@ +ksm-control-daemon (1.0-6) unstable; urgency=low + + * add runlevel 2 to LSM header (init script) + + -- Proxmox Support Team Tue, 14 Jun 2011 06:02:52 +0200 + +ksm-control-daemon (1.0-5) unstable; urgency=low + + * update to latest available version + + -- Proxmox Support Team Mon, 07 Feb 2011 07:10:26 +0100 + +ksm-control-daemon (1.0-4) unstable; urgency=low + + * set KSM_SLEEP_MSEC=100 to reducd cpu load + + -- Proxmox Support Team Fri, 28 May 2010 07:53:00 +0200 + +ksm-control-daemon (1.0-3) unstable; urgency=low + + * fix committed_memory calculation + + -- Proxmox Support Team Mon, 01 Feb 2010 14:49:42 +0100 + +ksm-control-daemon (1.0-2) unstable; urgency=low + + * fix bug in init script (s/$prox/$prog/) + + * fix default path (/etc/default/ksmtuned) + + -- Proxmox Support Team Tue, 29 Dec 2009 16:02:36 +0100 + +ksm-control-daemon (1.0-1) unstable; urgency=low + + * first release + + -- Proxmox Support Team Tue, 15 Dec 2009 12:30:41 +0100 + diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +5 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..597c574 --- /dev/null +++ b/debian/control @@ -0,0 +1,14 @@ +Source: ksm-control-daemon +Section: admin +Priority: optional +Maintainer: Proxmox Support Team +Build-Depends: debhelper (>= 7) +Standards-Version: 3.7.3 +Homepage: http://pve.proxmox.com + +Package: ksm-control-daemon +Architecture: all +Depends: bash (>= 3.2) +Description: The KSM tuning daemon + This package contains the KSM tuning daemon which controls whether + ksm should ksm search duplicated pages. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..bcef854 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,23 @@ +Copyright 2009 Red Hat, Inc. and/or its affiliates. +Released under the GPL + +Author: Dan Kenigsberg + +Debian package created by Proxmox Server Solutions GmbH + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +The complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL-2'. diff --git a/debian/defaults b/debian/defaults new file mode 100644 index 0000000..e4a92db --- /dev/null +++ b/debian/defaults @@ -0,0 +1,12 @@ +# Defaults for ksmtuned initscript +# sourced by /etc/init.d/ksmtuned +# installed at /etc/default/ksmtuned by the maintainer scripts + +# +# This is a POSIX shell fragment +# + + +# start ksmtuned at boot [yes|no] +START=yes + diff --git a/debian/patches/adjust-ksm-slepp.diff b/debian/patches/adjust-ksm-slepp.diff new file mode 100644 index 0000000..10d7454 --- /dev/null +++ b/debian/patches/adjust-ksm-slepp.diff @@ -0,0 +1,26 @@ +Index: new/ksmtuned +=================================================================== +--- new.orig/ksmtuned 2011-06-14 06:00:42.000000000 +0200 ++++ new/ksmtuned 2011-06-14 06:01:01.000000000 +0200 +@@ -37,7 +37,7 @@ + KSM_NPAGES_MAX=${KSM_NPAGES_MAX:-1250} + # millisecond sleep between ksm scans for 16Gb server. Smaller servers sleep + # more, bigger sleep less. +-KSM_SLEEP_MSEC=${KSM_SLEEP_MSEC:-10} ++KSM_SLEEP_MSEC=${KSM_SLEEP_MSEC:-100} + + KSM_THRES_COEF=${KSM_THRES_COEF:-20} + KSM_THRES_CONST=${KSM_THRES_CONST:-2048} +Index: new/ksmtuned.conf +=================================================================== +--- new.orig/ksmtuned.conf 2011-06-14 05:58:03.000000000 +0200 ++++ new/ksmtuned.conf 2011-06-14 06:01:01.000000000 +0200 +@@ -5,7 +5,7 @@ + + # Millisecond sleep between ksm scans for 16Gb server. + # Smaller servers sleep more, bigger sleep less. +-# KSM_SLEEP_MSEC=10 ++# KSM_SLEEP_MSEC=100 + + # KSM_NPAGES_BOOST=300 + # KSM_NPAGES_DECAY=-50 diff --git a/debian/patches/init-script.diff b/debian/patches/init-script.diff new file mode 100644 index 0000000..fa10645 --- /dev/null +++ b/debian/patches/init-script.diff @@ -0,0 +1,127 @@ +Index: new/ksmtuned.init +=================================================================== +--- new.orig/ksmtuned.init 2011-06-14 05:58:03.000000000 +0200 ++++ new/ksmtuned.init 2011-06-14 06:01:38.000000000 +0200 +@@ -19,7 +19,8 @@ + # Required-Start: + # Required-Stop: + # Should-Start: +-# Default-Start: 3 4 5 ++# Default-Start: 2 3 4 5 ++# Default-Stop: 0 1 6 + # Short-Description: tune the speed of ksm + # Description: The Kernel Samepage Merging control Daemon is a simple script + # that controls whether (and with what vigor) should ksm search duplicated +@@ -27,27 +28,50 @@ + # needs testing and ironing. contact danken@redhat.com if something breaks. + ### END INIT INFO + +-. /etc/rc.d/init.d/functions ++. /lib/lsb/init-functions ++ ++PATH=/sbin:/bin:/usr/sbin:/usr/bin + + prog=ksmtuned + ksmtuned=/usr/sbin/ksmtuned ++DESC="KSM control daemon" ++ + pidfile=${PIDFILE-/var/run/ksmtune.pid} + RETVAL=0 + ++test -x $ksmtuned || exit 0 ++ ++# Include defaults if available ++if [ -f /etc/default/$prog ] ; then ++ . /etc/default/$prog ++fi ++ ++if [ "$START" != "yes" ]; then ++ exit 0 ++fi ++ + start() { +- echo -n $"Starting $prog: " +- daemon --pidfile=${pidfile} $ksmtuned ++ ++ [ -d /sys/kernel/mm/ksm/ ] || exit 0; ++ ++ log_daemon_msg "Starting $DESC" $prog ++ pid=$( pidofproc -p ${pidfile} $ksmtuned ) ++ if [ -n "$pid" ] ; then ++ log_begin_msg "Already running." ++ log_end_msg 0 ++ exit 0 ++ fi ++ ++ start-stop-daemon --start --quiet --pidfile=${pidfile} --exec $ksmtuned + RETVAL=$? +- echo +- [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog ++ log_end_msg $RETVAL + } + + stop() { +- echo -n $"Stopping $prog: " +- killproc -p ${pidfile} ++ log_daemon_msg "Stopping $DESC" $prog ++ start-stop-daemon --stop --quiet --pidfile ${pidfile} + RETVAL=$? +- echo +- [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog ++ log_end_msg $RETVAL + } + + restart() { +@@ -55,10 +79,6 @@ + start + } + +-condrestart() { +- [ -e /var/lock/subsys/$prog ] && restart || : +-} +- + case "$1" in + start) + start +@@ -67,27 +87,28 @@ + stop + ;; + status) +- status -p ${pidfile} $prog +- RETVAL=$? ++ pidofproc -p ${pidfile} $ksmtuned >/dev/null ++ RETVAL=$? ++ if [ $RETVAL -eq 0 ]; then ++ log_success_msg "$DESC is running." ++ else ++ log_failure_msg "$DESC is not running." ++ fi + ;; + restart|force-reload) + restart + ;; +- condrestart|try-restart) +- condrestart +- ;; +- retune) +- pid=`cat ${pidfile} 2> /dev/null` +- RETVAL=$? +- if [ -z "$pid" ]; then +- echo $"Cannot retune, service is not running." +- else ++ reload) ++ pid=$( pidofproc -p ${pidfile} $ksmtuned ) ++ if [ -n "$pid" ] ; then + kill -SIGUSR1 $pid + RETVAL=$? +- fi ++ else ++ log_failure_msg "$DESC is not running." ++ fi + ;; + *) +- echo $"Usage: $prog {start|stop|restart|force-reload|condrestart|try-restart|status|retune|help}" ++ echo $"Usage: $prog {start|stop|restart|force-reload|status|reload|help}" + RETVAL=2 + esac + diff --git a/debian/patches/ksmtuned.diff b/debian/patches/ksmtuned.diff new file mode 100644 index 0000000..ed70cb8 --- /dev/null +++ b/debian/patches/ksmtuned.diff @@ -0,0 +1,23 @@ +Index: new/ksmtuned +=================================================================== +--- new.orig/ksmtuned 2011-02-07 06:43:33.000000000 +0100 ++++ new/ksmtuned 2011-02-07 07:07:22.000000000 +0100 +@@ -71,7 +71,7 @@ + committed_memory () { + # calculate how much memory is committed to running qemu processes + local progname +- progname=${1:-qemu-kvm} ++ progname=${1:-kvm} + ps -C "$progname" -o rsz | awk '{ sum += $1 }; END { print sum }' + } + +@@ -124,8 +124,7 @@ + trap nothing SIGUSR1 + while true + do +- sleep $KSM_MONITOR_INTERVAL & +- wait $! ++ sleep $KSM_MONITOR_INTERVAL + adjust + done + } diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..32d3a35 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,3 @@ +init-script.diff +ksmtuned.diff +adjust-ksm-slepp.diff diff --git a/debian/postinst b/debian/postinst new file mode 100644 index 0000000..bd1e873 --- /dev/null +++ b/debian/postinst @@ -0,0 +1,80 @@ +#! /bin/sh + +# Abort if any command returns an error value +set -e + +# This script is called as the last step of the installation of the +# package. All the package's files are in place, dpkg has already +# done its automatic conffile handling, and all the packages we depend +# of are already fully installed and configured. + +# The following idempotent stuff doesn't generally need protecting +# against being run in the abort-* cases. + + +case "$1" in + configure) + # Configure this package. If the package must prompt the user for + # information, do it here. + + # There are three sub-cases: + if test "${2+set}" != set; then + # We're being installed by an ancient dpkg which doesn't remember + # which version was most recently configured, or even whether + # there is a most recently configured version. + : + + elif test -z "$2" -o "$2" = ""; then + # The package has not ever been configured on this system, or was + # purged since it was last configured. + : + + else + # Version $2 is the most recently configured version of this + # package. + : + + fi ;; + abort-upgrade) + # Back out of an attempt to upgrade this package FROM THIS VERSION + # to version $2. Undo the effects of "prerm upgrade $2". + : + + ;; + abort-remove) + if test "$2" != in-favour; then + echo "$0: undocumented call to \`postinst $*'" 1>&2 + exit 0 + fi + # Back out of an attempt to remove this package, which was due to + # a conflict with package $3 (version $4). Undo the effects of + # "prerm remove in-favour $3 $4". + : + + ;; + abort-deconfigure) + if test "$2" != in-favour -o "$5" != removing; then + echo "$0: undocumented call to \`postinst $*'" 1>&2 + exit 0 + fi + # Back out of an attempt to deconfigure this package, which was + # due to package $6 (version $7) which we depend on being removed + # to make way for package $3 (version $4). Undo the effects of + # "prerm deconfigure in-favour $3 $4 removing $6 $7". + : + + ;; + *) echo "$0: didn't understand being called with \`$1'" 1>&2 + exit 0;; +esac + +if [ -x "/etc/init.d/ksmtuned" ]; then + update-rc.d ksmtuned defaults 21 >/dev/null 2>&1 + if [ -x "`which invoke-rc.d 2>/dev/null`" ]; then + invoke-rc.d ksmtuned start || exit $? + else + /etc/init.d/ksmtuned start || exit $? + fi +fi + +exit 0 diff --git a/debian/postrm b/debian/postrm new file mode 100644 index 0000000..f44f7b2 --- /dev/null +++ b/debian/postrm @@ -0,0 +1,8 @@ +#! /bin/sh + +# Abort if any command returns an error value +set -e + +if [ "$1" = purge ]; then + update-rc.d ksmtuned remove >/dev/null 2>&1 +fi diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..829a3bb --- /dev/null +++ b/debian/rules @@ -0,0 +1,97 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +ifneq "$(wildcard /usr/share/quilt/quilt.make)" "" +include /usr/share/quilt/quilt.make +endif + +destdir := $(CURDIR)/debian/ksm-control-daemon + +configure: configure-stamp +configure-stamp: + dh_testdir + # Add here commands to configure the package. + + touch configure-stamp + + +build: patch build-stamp + +build-stamp: configure-stamp + dh_testdir + + # Add here commands to compile the package. + # nothing to do + + touch $@ + +clean: unpatch + dh_testdir + dh_testroot + rm -f build-stamp configure-stamp + + # Add here commands to clean up after the build process. + # nothing to do + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Add here commands to install the package into debian/ksm-control-scripts. + #$(MAKE) DESTDIR=$(CURDIR)/debian/ksm-control-scripts install + + install -D -m 0755 $(CURDIR)/ksmtuned.init $(destdir)/etc/init.d/ksmtuned + install -D -m 0755 $(CURDIR)/ksmtuned $(destdir)/usr/sbin/ksmtuned + install -D -m 0644 $(CURDIR)/debian/defaults $(destdir)/etc/default/ksmtuned + install -D -m 0644 $(CURDIR)/ksmtuned.conf $(destdir)/etc/ksmtuned.conf + + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs + dh_installexamples +# dh_install +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_python +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install configure -- 2.39.2