From a9de1d077995654485d5de3eeb2f3008324c388a Mon Sep 17 00:00:00 2001
From: Britney Fransen <brfransen@gmail.com>
Date: Wed, 24 Mar 2010 17:32:23 -0500
Subject: linhes-scripts: update limit-mythcommflag.sh and add
 removecommercials.sh

---
 abs/core-testing/linhes-scripts/PKGBUILD           | 30 ++++++-
 .../linhes-scripts/limit-mythcommflag.sh           | 95 +++++++++++++++-------
 2 files changed, 95 insertions(+), 30 deletions(-)

diff --git a/abs/core-testing/linhes-scripts/PKGBUILD b/abs/core-testing/linhes-scripts/PKGBUILD
index f671142..02fba0e 100644
--- a/abs/core-testing/linhes-scripts/PKGBUILD
+++ b/abs/core-testing/linhes-scripts/PKGBUILD
@@ -3,7 +3,7 @@
 
 pkgname=linhes-scripts
 pkgver=1
-pkgrel=57
+pkgrel=58
 pkgdesc="Various scripts that help to make LinHES, LinHES."
 arch=('i686' 'x86_64')
 license=('GPL2')
@@ -37,6 +37,7 @@ install_hulu.sh
 update_schema_021_to_022.sh
 upgrade_to_0.22.sh
 remove_php_mythvideo.sh
+removecommercials.sh
 )
 
 build() {
@@ -102,3 +103,30 @@ md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
          '65629302a4d2c3adf88cdf0ebc10d493'
          'ea5492d4dab8271db20cb84416c001dc'
          'd7c7914225ec86bf3ea46104a364f977')
+md5sums=('f56985b2d602e11dc1e10d3e7848b2a5'
+         '623b6e9ba6cc4a19771005e750f337a7'
+         '9ae2cd7a0c42d57ad8b5f515d7d60196'
+         '1274bad3fb7296f00acd2d44804bad14'
+         'b4f858834ea92418208ab496ca39ad32'
+         '6b6e7d34a4bda6d608d150039adefd07'
+         '3fe554dbbf7d09e1f9925032ba888bf5'
+         '18263972b6326e140bbef0bb7dfa2da9'
+         '410795ef9039e4c6c0484e706ecfd567'
+         '0750d7c65109d12aa536f312a38410d1'
+         'ac2a4a6b4100f4d7bfb9ecd9356c8c6e'
+         'd2b475821f902c5e081e7da43a35e6ac'
+         '95c092f67036a361ef7a57436f44332e'
+         '3b776bbff68906ddc2f62b7e0dde3fe4'
+         '15f3143d2b1369da431e4268029aba40'
+         '3d0adf26280cde55a0c47188fff34826'
+         '93aaa2940e33ec9ebb305b839ac46a3e'
+         '972e42e02a11575da91f5e051d4de1d2'
+         'b527b01d119d3bc33b8fa69bdf1082bb'
+         'c537c44156d8404016cc4b405b092d45'
+         '4e66f302a77f1a857476e7f289d0c157'
+         'be324dba44ae96676973a74421944853'
+         'c9dc0dd07369622879a000247ac55074'
+         '65629302a4d2c3adf88cdf0ebc10d493'
+         'ea5492d4dab8271db20cb84416c001dc'
+         'd7c7914225ec86bf3ea46104a364f977'
+         '25c1baeb97a49656456ae33f7e7a9f06')
diff --git a/abs/core-testing/linhes-scripts/limit-mythcommflag.sh b/abs/core-testing/linhes-scripts/limit-mythcommflag.sh
index 8ca61c7..5cd81bb 100755
--- a/abs/core-testing/linhes-scripts/limit-mythcommflag.sh
+++ b/abs/core-testing/linhes-scripts/limit-mythcommflag.sh
@@ -1,6 +1,7 @@
 #!/bin/bash
-# limit-mythcommflag.sh   v0.1  05/17/09
-# Utility to automatically limit mythcommflag if CPU usage is above a certain level.
+# limit-mythcommflag.sh   v0.2  03/2/10
+# Utility to automatically limit mythcommflag if CPU system load is above a certain level
+# and if backend usage is above a certain level
 # Uses cpulimit from http://cpulimit.sourceforge.net/
 # Free for any use.
 # Installation:
@@ -8,47 +9,83 @@
 #  chmod +x /usr/LH/bin/limit-mythcommflag.sh
 # Usage: Executed from runit limit-mythcommflag at boot
 
-# Threshold for when mythcommflag will be paused
-CPUTHRESHOLD=43
-
-# Limit mythcommflag to percentage
-LIMITCPU=20
-
-# Log file to write (use /dev/null for no log)
-#LOG=/var/log/mythtv/limit-mythcommflag.log
-LOG=/dev/null
-
+#-----OPTIONS______
 # Number of seconds to wait between checking for mythcommflag process
 SLEEP=5
+# Backend and Frontend thresholds above which mythcommflag is stopped
+BETHRESHOLD=30
+FETHRESHOLD=55
 
-#sleep $SLEEP
+# FUNCTIONS
+limit_cpu()
+# Arg_1 = LimitedRangeNum; Arg_2 = CPULimitPercent; Arg_3 = Commflag PID
+{
+if [ $ALREADYLIMITED -ne $1 ] ; then
+    if [ $cpulimit_pid -ne 0 ]; then
+        kill $cpulimit_pid
+    fi
+    cpulimit -p $3 -l $2 &
+    cpulimit_pid=$!
+    ALREADYLIMITED=$1
+fi
+}
 
-touch $LOG
+stop_limit()
+{
+if [ $ALREADYLIMITED -ne 0 ]; then
+    if [ $cpulimit_pid -ne 0 ]; then
+        kill $cpulimit_pid
+        cpulimit_pid=0
+    fi
+    ALREADYLIMITED=0
+fi
+}
 
 ALREADYLIMITED=0
+STOPPED=0
+cpulimit_pid=0
 
 while true; do
     PROCCOMMFLAG=`pidof mythcommflag`
-    if [ -n "${PROCCOMMFLAG}" ]
-    then
-        FRONTENDCPU=`top -bn1u mythtv | grep mythfrontend | awk '{ print $9 }'`
-        if [ "$FRONTENDCPU" -ge "$CPUTHRESHOLD" ]
-        then
-            echo "$(date) FE CPU $FRONTENDCPU% is greater than $CPUTHRESHOLD%, LIMIT Commflagging" # >> $LOG
-            if [ $ALREADYLIMITED -eq 0 ]; then
-                cpulimit -e mythcommflag -l $LIMITCPU &
-		cpulimit_pid=$!
-                ALREADYLIMITED=1
+    if [ -n "${PROCCOMMFLAG}" ]; then
+        BACKENDCPU=`top -bn1u mythtv | grep -m 1 mythbackend | awk '{ print $9 }'`
+        FRONTENDCPU=`top -bn1u mythtv | grep -m 1 mythfrontend | awk '{ print $9 }'`
+        if [ "$FRONTENDCPU" = "" ]; then
+            FRONTENDCPU=0
+        fi
+        if [ "$BACKENDCPU" -ge "$BETHRESHOLD" ]; then
+            if [ "$FRONTENDCPU" -ge $FETHRESHOLD ]; then
+                if [ $STOPPED -eq 0 ]; then
+                    kill -s STOP $PROCCOMMFLAG
+                    STOPPED=1
+                fi
+            else
+                if [ $STOPPED -eq 1 ]; then
+                    kill -s CONT $PROCCOMMFLAG
+                    STOPPED=0
+                fi
+                stop_limit
             fi
         else
-            echo "$(date) FE CPU $FRONTENDCPU% is less than $CPUTHRESHOLD%, UNLIMIT Commflagging" #>> $LOG
-            if [ $ALREADYLIMITED -eq 1 ]; then
-	        kill $cpulimit_pid
-                ALREADYLIMITED=0
+            if [ $STOPPED -eq 1 ]; then
+                kill -s CONT $PROCCOMMFLAG
+                STOPPED=0
             fi
+            case $FRONTENDCPU in
+	        [0-9]|[0-3][0-9] )
+                stop_limit;;
+	        [4-5][0-9] ) 
+                limit_cpu "1" "70" $PROCCOMMFLAG;;
+	        [6-7][0-9] ) 
+                limit_cpu "2" "50" $PROCCOMMFLAG;;
+	        [8-9][0-9] ) 
+                limit_cpu "3" "20" $PROCCOMMFLAG;;
+	        [1][0-9][0-9] )
+                limit_cpu "4" "10" $PROCCOMMFLAG;;
+	        esac
         fi
 #    else
-#        echo "No COMMFLAG Process Active" >> $LOG
+#        echo "No COMMFLAG Process Active"
     fi
     sleep $SLEEP
 done
-- 
cgit v0.12

