LPIC-2 Tema 200.2: predicción de carencias de recursos

Segunda entrada sobre las certificaciones LPIC-2. El Tema 200.2 está destinado a aplicar todos los comandos vistos en el Tema 200.1 también para poder prevenir futuras necesidades de recursos de hardware. Algo que es importante a la hora de escalar los sistemas, como suele ocurrir en los servidores.

Este tema pretende enseñar a que los candidatos a administrador de sistemas puedan usar las herramientas a su alcance e interpretar la información que arrojan para determinar si se necesitaría ampliar algún elemento o no (CPU, memoria, redes,…), en función de la sobrecarga.

Herramientas

Además de las citadas anteriormente del artículo previo, también puedes usar otras muchas soluciones de terceros, como:

¿Cómo se si se necesitarán más recursos?

A veces puede ser un desafío saber si un servidor Linux necesita actualizar la RAM, los discos duros, su capacidad de procesamiento, o el ancho de banda de red por un incremento del tráfico de la red. Más complicado aún es saber cuánta capacidad extra necesita para realizar el escalado adecuado.

Además, en cada caso será diferente, en función de las necesidades de cada aplicación para la que se vaya a usar el sistema. Pero deberías centrarte en:

  • Obtén la información mediante las herramientas y saber interpretarla.
  • Saber anticiparte y determinar cuándo una configuración de hardware podría llegar a su límite si la empresa o usuario tiene previsto crecer en cuanto a procesos.
  • Analizar el crecimiento del promedio de carga del sistema para realizar cálculos aproximados de cuándo se llegaría al límite de seguir esa progresión.
  • Hacer uso de gráficas mucho más intuitivas como las herramientas de monitorización citadas en el apartado anterior.
  • Tener siempre presente que el rendimiento puede cambiar de la noche a la mañana en un servidor. Aunque, en caso de cambios muy súbitos, deberías comprobar que no se trate de otros motivos (fallos de hardware, malware, mala administración de procesos)…

Caso práctico: ¿necesito más RAM?

Si notas que el sistema va más lento de lo habitual últimamente, una de las cosas que pueden estar ocurriendo es que los recursos de hardware no sean suficientes. Para comprobar la memoria, ten en cuenta lo siguiente:

Puedes usar métodos similares para comprobar si necesitas más espacio de almacenamiento secundario, o si tienes que mejorar la capacidad de procesamiento. Por ejemplo, en caso de comprobar el rendimiento de cómputo, podrías usar las herramientas para monitorizar los tiempos de CPU y el promedio de carga para determinar si hay demasiados procesos a la espera o si el trabajo está bien balanceado en los núcleos o unidades de procesamiento existentes.

Por cierto, cuidado con la CPU, algunos gobernadores para el escalado dinámico de la frecuencia de reloj, o modos de ahorro energético, etc., podrían estar reduciendo el rendimiento y que no se trate de un problema de falta de recursos físicos…

  • Usa las herramientas disponibles para consultar la memoria libre y disponible.
  • Recuerda que la memoria RAM no se llenará completamente, ya que siempre habrá algo libre debido a la optimización que hace el kernel usando el espacio de intercambio (si está habilitado).
  • En un servidor sin el espacio de intercambio activo será más sencillo detectar que la memoria es insuficiente. Pero si está activa, deberías fijarte en la frecuencia del uso de la E/S  de intercambio (vigila el uso de CPU de kswap, el proceso que implementa el servicio del kernel para swapping). Si la frecuencia es muy alta, aunque la memoria no llegue a colmarse, significa que tienes carencia de RAM.
  • También se puede detectar un caso de memoria insuficiente con picos de los valores «wa». Junto con kswap, está indicando que el rendimiento del sistema se está viendo perjudicado por un uso excesivo de la memoria de intercambio del espacio de almacenamiento secundario (más lento que la RAM). Recuerda que «wa» es la espera de E/S (p.e.: usa vmstat 1), como se vio en el LPIC-2 Tema 200.1.
  • Verifica que no se trata de casos puntuales, sino que es un problema permanente. En ocasiones, por cierta actividad extra, podrían llegarse a límites sin que ello implique que se necesita ampliar la memoria.

Swappiness y Cache Pressure

A veces, ajustando el tamaño de la SWAP, o swapfile, o mediante Cache Presure o Swappiness, se podrían solucionar también este tipo de problemas. Sin necesidad de cambiar el hardware.

Cache Pressure

El kernel usa dos tipos de cache, una para introducir más bloques en la RAM (block cache) y otra para hacer que el kernel reclame más de la pagecache o cache de disco para la RAM. En el caso de la segunda, se emplea para los FS (abrir ficheros, directorios, búsquedas,…). Y ambas compiten entre sí, siendo el valor Cache Pressure el que determina cuál de los dos tiene prioridad.

Por defecto el valor es 100 (0 indicaría prioridad para la block cache), dando la prioridad a pagecache, lo que es positivo para mejorar el rendimiento de operaciones sobre las particiones del disco duro. En caso de querer optimizar el movimiento de ficheros de tamaños elevados, entonces se debería dar más prioridad a la block cache.

Un valor 50 le daría el 50% para cada una, por lo que no habría prioridad, estarían igualadas y competirían por igual por la memoria. Y, por supuesto, podrías dar valores intermedios…

#Comprobar el valor actual
sudo cat /proc/sys/vm/vfs_cache_pressure

#Cambiar el valor a 50 temporalmente, por ejemplo
sudo sysctl -w vm.vfs_cache_pressure=50

Para cambiarlo de forma permanente, puedes editar el fichero /etc/sysctl.conf, modificando el valor de la línea vm.vfs_cache_pressure=.

Swappiness

El kernel prioriza el uso de la memoria RAM, subiendo más procesos a ella, o el dinamismo entre la SWAP y la memoria principal. Por eso, en función de la cantidad de memoria disponible, se debería optimizar este valor (por defecto es 60):

  • Un valor 0, o cercano a cero, hará que no se haga tanto uso de la SWAP, manteniendo la RAM más llena. Los valores más bajos son más adecuados a sistemas con gran capacidad de RAM.
  • Un valor 100, o próximo a cien, prioriza el uso de la SWAP, dejando la RAM más libre. Mejor para sistemas con una capacidad de RAM más discreta.
#Ver el valor actual
cat /proc/sys/vm/swappiness

#Modificar el valor a 10 de forma temporal
sysctl -w vm.swappiness=10

Al igual que ocurre con la Cache Pressure, si quieres modificar el valor de forma permanente, para que se mantenga incluso si se reinicia el sistema, deberías modificar /etc/sysctl.conf, modificando la línea vm.swappiness=.

Drop caches

Otro parámetro importante es este valor que usa el kernel para determinar cómo se debe liberar la memoria RAM:

  • 0: no libera nada, cediendo el control al kernel.
  • 1: libera pagecache, la memoria de paginación de discos.
  • 2: libera dentries (Directory Entries) e inodes. Es decir, la relación estructurada entre directorios/ficheros y nodos índice para localizar los ficheros del FS.
  • 3: libera pagecache, dentries e inodes.
#Cambiar el valor 
sysctl vm.drop_caches=3

#O también
echo 3 > /proc/sys/vm/drop_caches

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar