En determinadas ocasiones he tenido que realizar un tunning, básico y
rápido (seguro que también malo, pero…. ni soy dba ni lo pretendo)
Se que los cálculos genéricos no son el camino, pero aveces no hay mas remedio.
El siguiente script, pretende ofrecer algunos valores calculados sobre el HW de la maquina, y ofrecer algún posible calculo.
Básicamente se ha convertido en un compendio de formulas para tratar de ajustar el rendimiento.
Como curiosidad no esta mal.
NOTA: El script no era el fin, en si mismo…. son ordenes básicamente secuenciales….. 🙂
script
NOTA2: Esto empezó en un post anterior Aquí.
miércoles, 11 de noviembre de 2015
Consumo de Memoria y Caches
Hace unos días he visto un caso curioso sobre un Centos7.
El caso es que la máquina tenia un consumo de memoria que rondaba el 95% y tras un análisis rápido, la memoria no aparecía como cacheada, por lo que suponía que estaba realmente siendo usada.
Lo siguiente fue, ver que proceso / procesos estaban haciendo uso de esta cantidad de memoria, y la sorpresa fue, que no me cuadraban los valores, «faltaban» más menos 7Gb de 8Gb…. ¿?
Tras revisar en detalle la salida de /proc/meminfo, observé esto:
Aunque la máquina no tenia problemas de rendimiento, por motivos que vienen al caso, no podía llegar a estos umbrales aunque la memoria estuviera como «reclamable»….
Como evitar esto?
Hay muchos posts sobre esto, así que citaré alguno de los que consulté.
Resumiendo….
Tenemos el fichero:
Nota:
También podemos configurar esto vía sysctl:
NOTA
Además de esto, también existe el parametro:
Por defecto tiene un valor de «100»
El caso es que la máquina tenia un consumo de memoria que rondaba el 95% y tras un análisis rápido, la memoria no aparecía como cacheada, por lo que suponía que estaba realmente siendo usada.
Lo siguiente fue, ver que proceso / procesos estaban haciendo uso de esta cantidad de memoria, y la sorpresa fue, que no me cuadraban los valores, «faltaban» más menos 7Gb de 8Gb…. ¿?
Tras revisar en detalle la salida de /proc/meminfo, observé esto:
...
Slab: 6903676 kB
...
SReclaimable: 6873888 kB
Aunque la máquina no tenia problemas de rendimiento, por motivos que vienen al caso, no podía llegar a estos umbrales aunque la memoria estuviera como «reclamable»….
Como evitar esto?
Hay muchos posts sobre esto, así que citaré alguno de los que consulté.
https://major.io/2008/12/03/reducing-inode-and-dentry-caches-to-keep-oom-killer-at-bay/
http://www.blackmoreops.com/2014/10/28/delete-clean-cache-to-free-up-memory-on-your-slow-linux-server-vps/
Resumiendo….
Tenemos el fichero:
/proc/sys/vm/drop_caches
Que admite los siguientes valores:
- 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
Nota:
- Pagecache: Paginación en memoria caché
- Dentries: Directory entries, relación estructurada entre directorios y ficheros
- Inodes: Índice de archivos utilizado por el sistema de ficheros dónde almacena los metadatos de cada archivo (tipo, propietario, permisos, fecha de creación....)Esto se puede ejecutar manualmente o programar en el cron:
#sync ; echo 0 > /proc/sys/vm/drop_cachesCRON
#sync ; echo 1 > /proc/sys/vm/drop_caches
#sync ; echo 2 > /proc/sys/vm/drop_caches
#sync ; echo 3 > /proc/sys/vm/drop_caches
00 04 * * * /bin/sync; /bin/echo 2 > /proc/sys/vm/drop_caches
También podemos configurar esto vía sysctl:
sysctl -a|grep -i cachePodemos modificar, que queremos vaciar como
vm.drop_caches = 0
NOTA
Además de esto, también existe el parametro:
vfs_cache_pressureEste valor indica la prioridad con la que se reclamará la cache de de (inodos/dentry) frente a la de datos (pagecache).
Por defecto tiene un valor de «100»
- Si se decrementa, se preferirá reclamar (pagecache).
- Si se incrementa, se preferirá reclamar (inodos/dentry).
- Un valor de «0» hará que nunca se reclame, por lo que acabaríamos provocando un out of memory.
Suscribirse a:
Entradas (Atom)