From 323f73dcc707c61c30d5fa1352ab3697bd61a6ce Mon Sep 17 00:00:00 2001 From: Andre Madureira Date: Wed, 18 Jul 2018 14:16:52 -0300 Subject: [PATCH 1/9] new rules --- ananicy.d/00-default/ark.rules | 3 +++ ananicy.d/00-default/bash.rules | 2 ++ ananicy.d/00-default/cinnamon.rules | 18 ++++++++++++++++++ ananicy.d/00-default/konsole.rules | 2 ++ ananicy.d/00-default/minidlna.rules | 2 ++ ananicy.d/00-default/okular.rules | 2 ++ ananicy.d/00-default/packaged.rules | 3 +++ ananicy.d/00-default/unbound.rules | 2 ++ ananicy.d/00-default/unison.rules | 5 +++++ ananicy.d/00-default/update.rules | 7 +++++++ ananicy.d/00-default/vscode.rules | 3 +++ ananicy.d/00-types.types | 2 +- 12 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 ananicy.d/00-default/ark.rules create mode 100644 ananicy.d/00-default/bash.rules create mode 100644 ananicy.d/00-default/konsole.rules create mode 100644 ananicy.d/00-default/minidlna.rules create mode 100644 ananicy.d/00-default/okular.rules create mode 100644 ananicy.d/00-default/packaged.rules create mode 100644 ananicy.d/00-default/unbound.rules create mode 100644 ananicy.d/00-default/unison.rules create mode 100644 ananicy.d/00-default/update.rules create mode 100644 ananicy.d/00-default/vscode.rules diff --git a/ananicy.d/00-default/ark.rules b/ananicy.d/00-default/ark.rules new file mode 100644 index 00000000..a5931424 --- /dev/null +++ b/ananicy.d/00-default/ark.rules @@ -0,0 +1,3 @@ +# ark KDE archiver +{"name": "ark", "type": "BG_CPUIO"} + diff --git a/ananicy.d/00-default/bash.rules b/ananicy.d/00-default/bash.rules new file mode 100644 index 00000000..6704b9e0 --- /dev/null +++ b/ananicy.d/00-default/bash.rules @@ -0,0 +1,2 @@ +# Bash +{ "name": "bash", "type": "Doc-View" } diff --git a/ananicy.d/00-default/cinnamon.rules b/ananicy.d/00-default/cinnamon.rules index e889897c..a61d1bba 100644 --- a/ananicy.d/00-default/cinnamon.rules +++ b/ananicy.d/00-default/cinnamon.rules @@ -5,3 +5,21 @@ { "name": "cinnamon-killer-daemon", "type": "LowLatency_RT" } { "name": "cinnamon-launcher", "type": "LowLatency_RT" } { "name": "cinnamon-screensaver", "type": "BG_CPUIO" } +{ "name": "csd-background", "type": "LowLatency_RT" } +{ "name": "csd-power", "type": "LowLatency_RT" } +{ "name": "csd-wacom", "type": "LowLatency_RT" } +{ "name": "csd-media-keys", "type": "LowLatency_RT" } +{ "name": "csd-keyboard", "type": "LowLatency_RT" } +{ "name": "csd-print-notifications", "type": "LowLatency_RT" } +{ "name": "csd-color", "type": "LowLatency_RT" } +{ "name": "csd-xsettings", "type": "LowLatency_RT" } +{ "name": "csd-sound", "type": "LowLatency_RT" } +{ "name": "csd-automount", "type": "LowLatency_RT" } +{ "name": "csd-orientation", "type": "LowLatency_RT" } +{ "name": "csd-housekeeping", "type": "LowLatency_RT" } +{ "name": "csd-a11y-keyboard", "type": "LowLatency_RT" } +{ "name": "csd-a11y-settings", "type": "LowLatency_RT" } +{ "name": "csd-cursor", "type": "LowLatency_RT" } +{ "name": "csd-mouse", "type": "LowLatency_RT" } +{ "name": "csd-screensaver-proxy", "type": "LowLatency_RT" } +{ "name": "csd-clipboard", "type": "LowLatency_RT" } diff --git a/ananicy.d/00-default/konsole.rules b/ananicy.d/00-default/konsole.rules new file mode 100644 index 00000000..fbf3d5e8 --- /dev/null +++ b/ananicy.d/00-default/konsole.rules @@ -0,0 +1,2 @@ +# Konsole +{ "name": "konsole", "type": "Doc-View" } diff --git a/ananicy.d/00-default/minidlna.rules b/ananicy.d/00-default/minidlna.rules new file mode 100644 index 00000000..ee25e05c --- /dev/null +++ b/ananicy.d/00-default/minidlna.rules @@ -0,0 +1,2 @@ +# minidlna +{ "name": "minidlnad", "type": "Chat" } diff --git a/ananicy.d/00-default/okular.rules b/ananicy.d/00-default/okular.rules new file mode 100644 index 00000000..4c0d5652 --- /dev/null +++ b/ananicy.d/00-default/okular.rules @@ -0,0 +1,2 @@ +# Okular PDF KDE reader +{ "name": "okular", "type": "Doc-View" } diff --git a/ananicy.d/00-default/packaged.rules b/ananicy.d/00-default/packaged.rules new file mode 100644 index 00000000..2a7b30c0 --- /dev/null +++ b/ananicy.d/00-default/packaged.rules @@ -0,0 +1,3 @@ +# PackageManager +{ "name": "packaged", "type": "BG_CPUIO" } +{ "name": "packagemanagerd", "type": "BG_CPUIO" } diff --git a/ananicy.d/00-default/unbound.rules b/ananicy.d/00-default/unbound.rules new file mode 100644 index 00000000..9999f971 --- /dev/null +++ b/ananicy.d/00-default/unbound.rules @@ -0,0 +1,2 @@ +# Unbound DNS cache system +{ "name": "unbound", "type": "Doc-View" } diff --git a/ananicy.d/00-default/unison.rules b/ananicy.d/00-default/unison.rules new file mode 100644 index 00000000..8ab3d4f3 --- /dev/null +++ b/ananicy.d/00-default/unison.rules @@ -0,0 +1,5 @@ +# Unison +{ "name": "unison", "type": "BG_CPUIO" } +{ "name": "unison-gtk", "type": "BG_CPUIO" } +{ "name": "unison-2.48.3", "type": "BG_CPUIO" } +{ "name": "unison-2.48.3-gtk", "type": "BG_CPUIO" } diff --git a/ananicy.d/00-default/update.rules b/ananicy.d/00-default/update.rules new file mode 100644 index 00000000..e2417114 --- /dev/null +++ b/ananicy.d/00-default/update.rules @@ -0,0 +1,7 @@ +# system updaters +{ "name": "apt-get", "type": "BG_CPUIO" } +{ "name": "aptitude", "type": "BG_CPUIO" } +{ "name": "zypper", "type": "BG_CPUIO" } + +{ "name": "rpm", "type": "BG_CPUIO" } +{ "name": "dpkg", "type": "BG_CPUIO" } diff --git a/ananicy.d/00-default/vscode.rules b/ananicy.d/00-default/vscode.rules new file mode 100644 index 00000000..f3e25b3e --- /dev/null +++ b/ananicy.d/00-default/vscode.rules @@ -0,0 +1,3 @@ +# VisualStudio Code +{ "name": "code", "type": "Doc-View" } +{ "name": "vscode", "type": "Doc-View" } diff --git a/ananicy.d/00-types.types b/ananicy.d/00-types.types index aab7c81a..59b3e73e 100644 --- a/ananicy.d/00-types.types +++ b/ananicy.d/00-types.types @@ -1,7 +1,7 @@ # Type: Game # Use more CPU time if possible # Games do not always need more IO, but in most cases can be hungry for CPU -{ "type": "Game", "nice": -5, "ioclass": "best-effort" } +{ "type": "Game", "nice": -5 } # Type: Player Audio/Video # Try to add more CPU power to decrease latency/lags From 8e7b1d979eb9abd4cbcb78a4360ca9cf3058d85e Mon Sep 17 00:00:00 2001 From: Andre Madureira Date: Wed, 18 Jul 2018 14:17:26 -0300 Subject: [PATCH 2/9] fixed problem with systemd not recognizing some parameters (it could not start the service because of that) --- ananicy.service | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) mode change 100644 => 100755 ananicy.service diff --git a/ananicy.service b/ananicy.service old mode 100644 new mode 100755 index ec565078..eb183577 --- a/ananicy.service +++ b/ananicy.service @@ -8,12 +8,12 @@ ExecStart=/usr/bin/ananicy start Nice=19 SuccessExitStatus=143 OOMScoreAdjust=-999 -Restart=always +Restart=on-failure CPUAccounting=true -MemoryHigh=16M -MemoryMax=64M +#MemoryHigh=16M +#MemoryMax=64M ProtectSystem=true -ProtectHome=true +#ProtectHome=true PrivateTmp=yes [Install] From 0a370eb95a671b4c3bc0a39fae0b802351ba57b7 Mon Sep 17 00:00:00 2001 From: Andre Madureira Date: Wed, 18 Jul 2018 14:17:47 -0300 Subject: [PATCH 3/9] created a installation script for Debian 9 --- install.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100755 install.sh diff --git a/install.sh b/install.sh new file mode 100755 index 00000000..e3fd977f --- /dev/null +++ b/install.sh @@ -0,0 +1,22 @@ +#!/bin/bash +SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" + +[ "$(whoami)" != "root" ] && echo -e "\n\tRUN this script as ROOT. Exiting...\n" && exit 1 + +PWD=$(pwd) +apt-get update && +apt-get -y install schedtool git make gcc autoconf automake && +cd "$SCRIPT_DIR"/ananicy && +make -j4 install && +systemctl daemon-reload && +systemctl enable ananicy && +systemctl start ananicy +STATUS=$? +cd "$PWD" +if [ $STATUS -eq 0 ]; then + echo -e '\n\tAll went fine, Ananicy Installed with SUCCESS\n' +else + echo -e '\n\tAnanicy Installation - ERROR\n' + exit $STATUS +fi + From c7fefaa34d982d83c43cc2a942651ee10573b526 Mon Sep 17 00:00:00 2001 From: Andre Madureira Date: Wed, 18 Jul 2018 14:27:40 -0300 Subject: [PATCH 4/9] some changes to make this fork inline with the main branch --- ananicy.d/00-default/cinnamon.rules | 18 ------------------ ananicy.d/00-types.types | 2 +- 2 files changed, 1 insertion(+), 19 deletions(-) diff --git a/ananicy.d/00-default/cinnamon.rules b/ananicy.d/00-default/cinnamon.rules index a61d1bba..e889897c 100644 --- a/ananicy.d/00-default/cinnamon.rules +++ b/ananicy.d/00-default/cinnamon.rules @@ -5,21 +5,3 @@ { "name": "cinnamon-killer-daemon", "type": "LowLatency_RT" } { "name": "cinnamon-launcher", "type": "LowLatency_RT" } { "name": "cinnamon-screensaver", "type": "BG_CPUIO" } -{ "name": "csd-background", "type": "LowLatency_RT" } -{ "name": "csd-power", "type": "LowLatency_RT" } -{ "name": "csd-wacom", "type": "LowLatency_RT" } -{ "name": "csd-media-keys", "type": "LowLatency_RT" } -{ "name": "csd-keyboard", "type": "LowLatency_RT" } -{ "name": "csd-print-notifications", "type": "LowLatency_RT" } -{ "name": "csd-color", "type": "LowLatency_RT" } -{ "name": "csd-xsettings", "type": "LowLatency_RT" } -{ "name": "csd-sound", "type": "LowLatency_RT" } -{ "name": "csd-automount", "type": "LowLatency_RT" } -{ "name": "csd-orientation", "type": "LowLatency_RT" } -{ "name": "csd-housekeeping", "type": "LowLatency_RT" } -{ "name": "csd-a11y-keyboard", "type": "LowLatency_RT" } -{ "name": "csd-a11y-settings", "type": "LowLatency_RT" } -{ "name": "csd-cursor", "type": "LowLatency_RT" } -{ "name": "csd-mouse", "type": "LowLatency_RT" } -{ "name": "csd-screensaver-proxy", "type": "LowLatency_RT" } -{ "name": "csd-clipboard", "type": "LowLatency_RT" } diff --git a/ananicy.d/00-types.types b/ananicy.d/00-types.types index 59b3e73e..aab7c81a 100644 --- a/ananicy.d/00-types.types +++ b/ananicy.d/00-types.types @@ -1,7 +1,7 @@ # Type: Game # Use more CPU time if possible # Games do not always need more IO, but in most cases can be hungry for CPU -{ "type": "Game", "nice": -5 } +{ "type": "Game", "nice": -5, "ioclass": "best-effort" } # Type: Player Audio/Video # Try to add more CPU power to decrease latency/lags From 74246a1b4adc2d2f5907d566f8b28bd736706216 Mon Sep 17 00:00:00 2001 From: Andre Luiz Romano Madureira Date: Wed, 18 Jul 2018 14:36:43 -0300 Subject: [PATCH 5/9] Fixed python3 dependency --- install.sh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/install.sh b/install.sh index e3fd977f..6f76a6e5 100755 --- a/install.sh +++ b/install.sh @@ -1,11 +1,14 @@ #!/bin/bash +# Copywright Andre Madureira 2018 +# Install dependencies to make Ananicy work inside Debian 9 + SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" [ "$(whoami)" != "root" ] && echo -e "\n\tRUN this script as ROOT. Exiting...\n" && exit 1 PWD=$(pwd) apt-get update && -apt-get -y install schedtool git make gcc autoconf automake && +apt-get -y install schedtool git make gcc autoconf automake python3 && cd "$SCRIPT_DIR"/ananicy && make -j4 install && systemctl daemon-reload && From 84471bc8172321170dec71a030cb159582e02b5a Mon Sep 17 00:00:00 2001 From: Andre Luiz Romano Madureira Date: Wed, 18 Jul 2018 14:38:13 -0300 Subject: [PATCH 6/9] Fixed bug and improved readability --- install.sh | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/install.sh b/install.sh index 6f76a6e5..6427f480 100755 --- a/install.sh +++ b/install.sh @@ -6,20 +6,14 @@ SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" [ "$(whoami)" != "root" ] && echo -e "\n\tRUN this script as ROOT. Exiting...\n" && exit 1 -PWD=$(pwd) apt-get update && apt-get -y install schedtool git make gcc autoconf automake python3 && -cd "$SCRIPT_DIR"/ananicy && make -j4 install && systemctl daemon-reload && systemctl enable ananicy && -systemctl start ananicy -STATUS=$? -cd "$PWD" -if [ $STATUS -eq 0 ]; then - echo -e '\n\tAll went fine, Ananicy Installed with SUCCESS\n' -else +systemctl start ananicy && +echo -e '\n\tAll went fine, Ananicy Installed with SUCCESS\n' || ( echo -e '\n\tAnanicy Installation - ERROR\n' - exit $STATUS -fi + exit 1 +) From ca4a1238d502add6b4abacca54991fb6454c0670 Mon Sep 17 00:00:00 2001 From: Andre Madureira Date: Wed, 18 Jul 2018 15:15:12 -0300 Subject: [PATCH 7/9] improved install script to support more distros (not only debian) --- install.sh | 60 +++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 53 insertions(+), 7 deletions(-) diff --git a/install.sh b/install.sh index 6427f480..637ec9eb 100755 --- a/install.sh +++ b/install.sh @@ -1,17 +1,63 @@ #!/bin/bash -# Copywright Andre Madureira 2018 -# Install dependencies to make Ananicy work inside Debian 9 +# Copywright - Andre L. R. Madureira - 2018 +# Install dependencies to make Ananicy work inside a Linux Distribution +# +# Currently supported distros: Debian, ... others go here ... SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" +# check if the distro supports systemctl +SYSTEMCTL=$(whereis systemctl | cut -d':' -f2 | tr -s ' ' | xargs | cut -d\ -f1) +DISTRO="" +ARCH="" + [ "$(whoami)" != "root" ] && echo -e "\n\tRUN this script as ROOT. Exiting...\n" && exit 1 -apt-get update && -apt-get -y install schedtool git make gcc autoconf automake python3 && +check_distro(){ + # find the distro running + DISTRO=$( (lsb_release -a ; cat /etc/issue* /etc/*release /proc/version) 2> /dev/null ) + if echo "$DISTRO" | grep -i -P 'debian' &> /dev/null; then + DISTRO=debian + fi + # check distro architecture + if uname -a | grep -i -P '(amd64|x86_64)' &> /dev/null; then + ARCH=x86_64 + else + ARCH=i386 + fi +} + +install_deps(){ + local LOCAL_STATUS=0 + case "${DISTRO}_${ARCH}" in + debian*|ubuntu*) + apt-get update && + apt-get -y install coreutils schedtool make python3 + LOCAL_STATUS=$(($LOCAL_STATUS+$?)) + ;; + *) + # add other distros here as needed + ;; + esac + return $LOCAL_STATUS +} + +set_autostart(){ + local SERVICE_NAME=ananicy + if [ -n "$SYSTEMCTL" ]; then + # use systemctl to autostart ananicy + systemctl daemon-reload && + systemctl enable "$SERVICE_NAME" && + systemctl start "$SERVICE_NAME" + else + # TODO, create SYS V INIT script + fi +} + +check_distro +install_deps && make -j4 install && -systemctl daemon-reload && -systemctl enable ananicy && -systemctl start ananicy && +set_autostart && echo -e '\n\tAll went fine, Ananicy Installed with SUCCESS\n' || ( echo -e '\n\tAnanicy Installation - ERROR\n' exit 1 From 25840f2155140f6ca1be1c9e4f87b9131e97227a Mon Sep 17 00:00:00 2001 From: Andre Luiz Romano Madureira Date: Wed, 18 Jul 2018 15:16:54 -0300 Subject: [PATCH 8/9] bug fix --- install.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/install.sh b/install.sh index 637ec9eb..11840f7e 100755 --- a/install.sh +++ b/install.sh @@ -44,14 +44,17 @@ install_deps(){ set_autostart(){ local SERVICE_NAME=ananicy + local LOCAL_STATUS=0 if [ -n "$SYSTEMCTL" ]; then # use systemctl to autostart ananicy systemctl daemon-reload && systemctl enable "$SERVICE_NAME" && systemctl start "$SERVICE_NAME" + LOCAL_STATUS=$(($LOCAL_STATUS+$?)) else # TODO, create SYS V INIT script fi + return $LOCAL_STATUS } check_distro From 8d259ddab09382f0144533ffcf08051094191d03 Mon Sep 17 00:00:00 2001 From: Andre Madureira Date: Wed, 18 Jul 2018 16:21:46 -0300 Subject: [PATCH 9/9] improved script for better maintainability --- install.sh | 53 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 32 insertions(+), 21 deletions(-) diff --git a/install.sh b/install.sh index 11840f7e..4d6ef8f8 100755 --- a/install.sh +++ b/install.sh @@ -2,12 +2,26 @@ # Copywright - Andre L. R. Madureira - 2018 # Install dependencies to make Ananicy work inside a Linux Distribution # -# Currently supported distros: Debian, ... others go here ... +# To add a new distro, just add it below the declare -A +# and type in the command to update and install +# dependencies. If you want to specify different +# dependencies based on the ARCH of the system, just +# type in SUPPORTED_DISTROS[distroname_arch]. Ex: +# SUPPORTED_DISTROS[debian_x86_64]="apt-get ..." +declare -A SUPPORTED_DISTROS -SCRIPT_DIR="$(dirname "$(readlink -f "$0")")" +SUPPORTED_DISTROS[debian]=" +apt-get update && +apt-get install coreutils schedtool make python3" + +SUPPORTED_DISTROS[ubuntu]=" +apt-get update && +apt-get install coreutils schedtool make python3" # check if the distro supports systemctl +SERVICE_NAME=ananicy SYSTEMCTL=$(whereis systemctl | cut -d':' -f2 | tr -s ' ' | xargs | cut -d\ -f1) + DISTRO="" ARCH="" @@ -15,10 +29,13 @@ ARCH="" check_distro(){ # find the distro running - DISTRO=$( (lsb_release -a ; cat /etc/issue* /etc/*release /proc/version) 2> /dev/null ) - if echo "$DISTRO" | grep -i -P 'debian' &> /dev/null; then - DISTRO=debian - fi + local SUPP_DIST=$(echo ${!SUPPORTED_DISTROS[@]} | tr ' ' '|') + DISTRO=$( + (lsb_release -a ; cat /etc/issue* /etc/*release /proc/version) 2> /dev/null | + tr '[:upper:]' '[:lower:]' | + grep -o -P "($SUPP_DIST)" | + head -n 1 + ) # check distro architecture if uname -a | grep -i -P '(amd64|x86_64)' &> /dev/null; then ARCH=x86_64 @@ -27,23 +44,15 @@ check_distro(){ fi } -install_deps(){ - local LOCAL_STATUS=0 - case "${DISTRO}_${ARCH}" in - debian*|ubuntu*) - apt-get update && - apt-get -y install coreutils schedtool make python3 - LOCAL_STATUS=$(($LOCAL_STATUS+$?)) - ;; - *) - # add other distros here as needed - ;; - esac - return $LOCAL_STATUS +install_deps(){ + local PKT_TOOLS=${SUPPORTED_DISTROS[${DISTRO}_${ARCH}]} + if [ -z "$PKT_TOOLS" ]; then + PKT_TOOLS=${SUPPORTED_DISTROS[${DISTRO}]} + fi + eval $PKT_TOOLS } set_autostart(){ - local SERVICE_NAME=ananicy local LOCAL_STATUS=0 if [ -n "$SYSTEMCTL" ]; then # use systemctl to autostart ananicy @@ -52,7 +61,9 @@ set_autostart(){ systemctl start "$SERVICE_NAME" LOCAL_STATUS=$(($LOCAL_STATUS+$?)) else - # TODO, create SYS V INIT script + # TODO, create SYS V INIT script and remove the + # LOCAL_STATUS=1 below + LOCAL_STATUS=1 fi return $LOCAL_STATUS }