Liberar memoria RAM caché en GNU/Linux
La memoria caché es aquella que almacena información de los procesos con el objetivo de ser reutilizada para lograr que se lleven a cabo procesamientos futuros de manera casi instantanea. Linux por sí mismo almacena esta memoria y la reutiliza cuando es requerida, pero tambien la libera cuando otro proceso requiere memoria RAM.
En Linux, desde la versión 2.6.16 del Kernel es posible para el usuario «administrar» la liberación de la memoria caché mediante el archivo /proc/sys/vm/drop_caches
No sé por qué alguien querría manejar manualmente este tipo de procesos si el Kernel por sí mismo lo hace a su manera (¿paranoia?) y nunca he sabido de algún inconveniente debido a esto.
Lo única ventaja que se me ocurre de realizar esto es para hacer una especie de «refresh» sin tener que reiniciar el Sistema; cerrar todas las aplicaciones y darle prioridad a aplicaciones que se vayan ejecutando en cierto orden. Y no estoy seguro que tenga que recurrirse a esto para lograrlo, pues al abrir una aplicación que requiera memoria, Linux se encargará de liberarla para darle prioridad a la nueva aplicación que lo requiera.
La tarea consiste simplemente en asignarle (como root) un valor del 0 al 3 al archivo /proc/sys/vm/drop_caches:
echo 0|1|2|3 > /proc/sys/vm/drop_caches
El significado de cada valor:
- 0 » Cede el control al Kernel para que administre la memoria
- 1 » Libera pagecache
- 2 » Libera dentries y inodes
- 3 » Libera pagecache, dentries y inodes
Donde:
pagecache: Memoria caché de la paginación.
dentries: (Directory Entries) Representa la relación de forma estructurada que existe entre directorios-archivos.
inodes: Son nodos índice de archivos y directorios que usa el Sistema de Archivos para administrar las actividades posibles de dichos archivos y directorios guardados en disco o memoria. Contiene la metadata de los archivos y directorios: permisos, tamaño, propietario, última fecha de acceso, creación, modificación, etc…
Se debe recomienda utilizar en primer lugar el comando sync para forzar la grabación de información pendiente en la memoria caché y de esta manera asegurarse de liberar solamente información «libre».
sync ; echo 0 > /proc/sys/vm/drop_caches sync ; echo 1 > /proc/sys/vm/drop_caches sync ; echo 2 > /proc/sys/vm/drop_caches sync ; echo 3 > /proc/sys/vm/drop_caches
Fuentes:
http://www.linuxinsight.com/proc_sys_vm_drop_caches.html
http://redes-privadas-virtuales.blogspot.com/2009/07/liberar-la-memoria-ram-cacheada-en.html
:wq
Mejorando el desempeño con el comando «cd» o cómo hacernos más flojos en la terminal [1]
Existen una gran cantidad de sencillos tips para los sistemas basados en UNIX (GNU/Linux, *BSD, Solaris, etc…) que nos facilitará la vida a los que usamos la terminal, en especial a quienes usamos las coreutils en reemplazo de algún file manager. Si bien son prescindibles para el desempeño en la terminal, son de gran utilidad si se quiere ser un poco más ágil y evitarse teclear menos para tareas básicas.
En este post, mencionaré algunos básicos para movernos a lo largo del árbol de directorios *nix.
1. La variable de entorno $CDPATH
Se trata de una variable que nos permite tratar directorios como si estuvieramos todo el tiempo situados en ellos, esto nos ahorraría el trabajo de teclear una ruta completa.
Por ejemplo, en vez de teclear:
cd /home/usuario/Documentos/Escuela/Tareas/Contabilidad\ Financiera/
Si agregamos «/home/usuario/Documentos/Escuela/Tareas/» a la variable CDPATH, podriamos solamente escribir:
cd Contabilidad\ Financiera/
Para definirla, simplemente se agrega la variable «CDPATH» con los directorios separados por «:» al archivo de configuración de la shell que se esté utilizando (.zshrc .bashrc .kshrc etc…), por ejemplo:
export CDPATH="/usr/local/share/:$HOME/Documentos/"
En caso de que existan dos directorios con el mismo nombre, uno en /usr/local/share/ y otro en /home/usuario/Documentos, cd recorre en orden de izquierda a derecha los directorios en la variable CDPATH, por lo que reconocerá primero el directorio que se encuentre en /usr/local/share/ y se cambiará a ese.
2. El caracter «~»
Este caracter es el equivalente a /home/usuario/, por lo que tecleando un simple «cd ~» podriamos situarnos en nuestro $HOME desde cualquier otro directorio.
O tambien copiar un archivo a nuestro home desde /usr/share/app1/ tecleando:
cp archivo1 ~
Otra utilidad podría ser listar lo que tenemos en nuestro $HOME:
ls ~usuario
3. Zsh y el autocd
Existe una simple opción para Zsh llamada «auto_cd». La utilidad de esta opción es que se puede omitir la palabra «cd» para cambiarse a un directorio (así o más flojo).
Simplemente hay que agregar «setopt auto_cd» al .zshrc
El autocompletado y el pushd y popd son otras genialidades que deberían estar en la lista, ya lo explicaré después… tal vez.
:wq
Los 10 comandos que uso más
cruznick me mandó la invitación para participar en esto de publicar los «10 comandos que uso más».
Mi historial de comandos lo tengo limitado a «666», no uso bash y tengo el historial en un archivo separado. El comportamiento de «history» es distinto, y al tener limitado a 666 mi historial, pues el resultado va sobre lo que he tecleado los últimos….. ~7 días.
Comando original:
history | awk ‘{print $2}’ | sort | uniq -c | sort -rn | head -10
Comando modificado:
┌─(ramonoid@gentoo:pts/1)──────────────────────────────────────────────────(~)─┐ └─(00:21:%)──> cat .zsh_history | awk '{print $1}' | sort | uniq -c | sort -rn | head -10 51 mv 35 sudo 27 search 26 rm 24 cat 23 ls 20 sv 20 cd 17 unmerge 16 vp
vp = emerge -vp
sv = sudo vim
search = emerge –search
Creo que lo protocolario es que yo invite a alguien más, así que invitaré a Thalskarth, a ushcompu y a Rugebiker
:wq
Separar un archivo flac
Perdón a mis 1¼ lectores por no actualizar esto, tenía planeado no actualizarlo jamás pero creo que lo dejaré para poner tonterías relacionadas exclusivamente al mundillo de Unix y las compus, o no.
Hoy escribiré algo para la gente pobre que nos encanta ilusionarnos con tener música lossless en FLAC, WAV, AIFF, ALAC o lo-que-sea.
Me descargué un álbum en flac y para mi sorpresa solo venían 2 archivos .flac, 1 por cada CD rippeado, y como a mí me gusta tener las canciones separadas y scrobblear para documentar lo que escucho en (last|libre).fm pues investigué la manera de separar el archivo en las distintas canciones que conforman el álbum.
Las herramientas:
emerge -av cuetools shntool #shntool con la USE flag "flac"
cuetools se trata de una serie de scripts que ayudan a manejar los archivos con extensión «cue», en gentoo en particular uno de los scripts no se instala en donde se supone debería de instalarse, así que por comodidad, a moverlo:
mv /usr/share/doc/cuetools-*/extras/cuetag.sh /usr/local/bin
La conversión:
cuebreakpoints archivo.cue | shnsplit -o flac archivo.flac
Esto generará las canciones separadas con su extensión .flac si el archivo .cue está bien estructurado.
La taggeada:
En las versiones nuevas de cuetools hay que hacer un ajuste al script cuetag.sh para hacer que maneje sin problemas los archivos .flac
Se sustituyen simplemente unos parámetros en unas lineas del script:
sed -i 's/remove-vc-all/remove-all-tags/g;s/import-vc-from/import-tags-from/' /usr/local/bin/cuetag.sh
Y…
cuetag.sh archivo.cue split-track*.flac
Listo.
-Extra-
Generar un arhivo .cue cuando este no exista separado pero esté incluido en el archivo .flac:
metaflac --show-tag=CUESHEET archivo.flac | grep -v ^CUESHEET > archivo.cue
El álbum se trata de «Conqueror» de Jesu en su edición Japonesa con los 2 tracks extra (20 de Octubre, cualquier edición es bienvenida). http://www.discogs.com/Jesu-Conqueror/release/901537
En realidad esto ya lo había hecho meses atrás en Archlinux pero no tuve problemas y solo quería documentarlo ahora que los tuve xD!
Basado en: https://nxadm.wordpress.com/2009/02/09/split-one-flac-cue-file-into-separate-tracks/
:wq
Mi Escritorio [23]
Wallpaper de aquí: http://www.imheremovie.com/default.aspx
.xinitrc: http://pastie.org/1265920
.conkyrc2(top-mpd): http://pastie.org/1265922
.conkyrc-cli(bottom-status): http://pastie.org/1265924
dzenstat.sh: http://pastie.org/1265926
Iconos: http://ompldr.org/vNjBqag/dzen.tar.bz2
:wq
Deshabilita el touchpad mientras escribes
Desde que uso el teclado para el 95% de las tareas con GNU/Linux dejé de tener este problema, pero antes sí que era un JODIDO problema que me molestaba cada que pasaba.
La cosa es tan sencilla como activar una aplicación llamada syndaemon:
NAME
syndaemon – a program that monitors keyboard activity and disables the touchpad when the keyboard is being used.SYNOPSIS
syndaemon [-i idle-time] [-d] [-p pid-file] [-t] [-k] [-K] [-R] [-s]DESCRIPTION
Disabling the touchpad while typing avoids unwanted movements of the pointer that could lead to giving focus to the wrong window.
Entre las opciones se puede desabilitar solamente el tap-2-click o el scrolling, establecer tiempo de reacción del «click», ignorar teclas especiales, etc…
Truco del día.
:wq
Mi Escritorio [21]
De vuelta a la normalidad.
Esta vez me puse a probar en serio wmii y puedo describir como ha sido la experiencia en una sola palabra: FuckYeah!.
Seguiré probándolo hasta optimizarlo con rb y py.
Archivos de configuración:
:wq
10 comments