El parche “milagro” de Linux de 200 lineas (ahora con script de instalación)

Recuerden ese parche “milagro” de 200 lineas de código que mejoraba el rendimiento en la agrupación de tareas ejecutadas desde la consola. Pues bien, he sacado un “ratejo” e implementado un pequeño script (valga la redundancia) para facilitar su instalación. El script (que teneis que ejecutar como root) es el siguiente:

001 #!/bin/bash
002
003 YELLOW="\033[1;33m"
004 RED="\033[0;31m"
005 ENDCOLOR="\033[0m"
006
007 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
008 # PARCHEAR
009 #
010 # Aplica las mejoras del kernel (parche de 200 lineas)
011 # pero en 4 lineas de bash.
012 #
013 #::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
014 function PARCHEAR()
015 {
016
017 FICHERO="$HOME/.bashrc"
018
019 echo ""
020 echo -e $YELLOW"Parcheando el fichero [${FICHERO}]..."$ENDCOLOR
021 echo ""
022
023 # Añadiendo cadenas a .bashrc
024
025 # Primero buscamos una cadena "base" para ver si esta o no ya añadido
026 LINEAS=`cat $FICHERO | grep "/dev/cgroup/cpu/user" | wc -l`
027 if [ "$LINEAS" == "0" ];
028 then
029 echo "Añadiendo parche para rendimiento..."
030 echo "if [ \"\$PS1\" ] ; then" | tee -a $FICHERO
031 echo "mkdir -m 0700 /dev/cgroup/cpu/user/\$\$" | tee -a $FICHERO
032 echo "echo \$\$ > /dev/cgroup/cpu/user/\$\$/tasks" | tee -a $FICHERO
033 echo "fi" | tee -a $FICHERO
034 else
035 echo "Parece que parche ya fue incluido en $FICHERO"
036 fi
037
038 FICHERO="/etc/rc.local"
039 echo ""
040 echo -e $YELLOW"Parcheando el fichero [${FICHERO}]..."$ENDCOLOR
041 echo ""
042
043 # Añadiendo cadenas a /etc/rc.local
044
045 # Primero buscamos una cadena "base" para ver si esta o no ya añadido
046 LINEAS=`cat $FICHERO | grep "/dev/cgroup/cpu/release_agent" | wc -l`
047 if [ "$LINEAS" == "0" ];
048 then
049
050 echo "Añadiendo parche para rendimiento..."
051 POSI=`cat $FICHERO | grep -n "exit 0" | sort -nr | head -n 1 | awk -F: '{print $1}'`
052 #echo "Posi es [$POSI]"
053 echo "Sacando copia de seguridad de $FICHERO en /etc/rc.local.backup.txt"
054 cp /etc/rc.local /etc/rc.local.backup.txt
055 sed "${POSI}imkdir -p /dev/cgroup/cpu\nmount -t cgroup cgroup /dev/cgroup/cpu -o cpu\nmkdir -m 0777 /dev/cgroup/cpu/user\necho \"/usr/local/sbin/cgroup_clean\" > /dev/cgroup/cpu/release_agent" /etc/rc.local | tee /etc/rc.new.local
056 mv /etc/rc.new.local /etc/rc.local
057
058 #echo "#========== parche mejora ============" | tee -a $FICHERO
059 #echo "mkdir -p /dev/cgroup/cpu" | tee -a $FICHERO
060 #echo "mount -t cgroup cgroup /dev/cgroup/cpu -o cpu" | tee -a $FICHERO
061 #echo "mkdir -m 0777 /dev/cgroup/cpu/user" | tee -a $FICHERO
062 #echo "echo \"/usr/local/sbin/cgroup_clean\" > /dev/cgroup/cpu/release_agent" | tee -a $FICHERO
063 #echo "#====================================" | tee -a $FICHERO
064 else
065 echo "Parece que parche ya fue incluido en $FICHERO"
066 fi
067
068 echo ""
069 echo -e $YELLOW"Dando permisos de ejecucion a [${FICHERO}]..."$ENDCOLOR
070 echo ""
071 sudo chmod +x $FICHERO
072
073 FICHERO="/usr/local/sbin/cgroup_clean"
074 echo ""
075 echo -e $YELLOW"Creando el fichero [${FICHERO}]..."$ENDCOLOR
076 echo ""
077 if [ -f $FICHERO ];
078 then
079 echo "#!/bin/sh" | tee $FICHERO
080 echo "rmdir /dev/cgroup/cpu/$*" | tee -a $FICHERO
081
082 else
083 echo "Fichero $FICHERO ya existe."
084 fi;
085
086 echo ""
087 echo -e $YELLOW"Dando permisos de ejecucion a [${FICHERO}]..."$ENDCOLOR
088 echo ""
089 sudo chmod +x $FICHERO
090
091 echo "FINALIZADO. Parche aplicado, reinicia y disfruta de Linux..."
092
093 }
094 #-----------------------------------------------------------------------------
095
096 # Comprobar que eres usuario root
097 if [ $USER != root ]; then
098 echo -e $RED"Error: tienes que ser root."
099 echo -e $YELLOW"Finalizando..."$ENDCOLOR
100 exit 0
101 fi
102
103 # Parchear el Sistema
104 PARCHEAR
105
106 # end of parche.sh

Nota: no me hago responsable de si se rompe algo en tu equipo (que ya tengo bastante con soportar a “zanganos” en el trabajo ^^, asi que ejecutalo bajo tu propia responsabilidad). De todas formas es fácil volver “hacia atrás” si se siguen las instrucciones del post original. Sin embargo, antes de ejecutar el script te recomiendo sacar una copia de seguridad de tu “.bashrc” y de tu “/etc/rc.local”. Si no da muchos problemas, lo empaquetare como .deb.

Descarga | (Renombra el .doc a .sh) parche.sh

Fuente

Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Translate »