Saltar al contenido

Limitar los recursos de CPU y memoria en Linux RedHat

26 febrero 2021

Tabla de contenidos

Debido a una serie de pruebas de rendimiento que querían hacer desde el equipo de aplicaciones, me han preguntado si era posible limitar los recursos de CPU y memoria a nivel global del servidor, un Linux RedHat 7.

Podemos hacerlo con CGROUPS pero para este caso concreto he preferido limitar los recursos mediante parámetros del kernel configurados en grub. Veamos cómo lo he hecho:

En RedHat 7

Si nuestro sistema tiene BIOS

Creamos una máquina virtual con Linux Centos 7 con 1500MB de RAM y 4 CPUs virtuales

Para crear la maquina virtual he utilizado HyperV.

Recursos hardware asignados a la maquina virtual en HyperVRecursos hardware asignados a la maquina virtual en HyperV

Limitamos el uso de memoria a 512MB y el número de CPUs a 2, editando el fichero /boot/grub2/grub.cfg

Como podemos comprobar, al final he añadido los parámetros mem=512M y nr_cpus=2

Limitar la CPU y Memoria en RedHat con grubLimitar la CPU y Memoria en RedHat con grub

Una vez realizados los cambios, rebotamos el servidor y volvemos a comprobar cuánta memoria y cuántos procesadores vemos en el sistema:

Limitar memoria y CPU con grub en Linux RedHatLimitar memoria y CPU con grub en Linux RedHat

Si nuestro sistema tiene UEFI

El procedimiento anterior me ha funcionado correctamente con sistemas con BIOS, sin embargo, tuve que hacer lo mismo en un RedHat 7.6 con UEFI y el procedimiento no es exactamente igual pero sí muy parecido (https://access.redhat.com/solutions/32726):

  • Editamos el fichero /etc/sysconfig/grub.
  • Añadimos las directivas de limitación de memoria y CPU como hicimos anteriormente.
  • Regeneramos el fichero de configuración de grub: grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
[[email protected] sysconfig]# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-957.27.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.27.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-0ea1c55e2750436b9c64c7d00397ab7a
Found initrd image: /boot/initramfs-0-rescue-0ea1c55e2750436b9c64c7d00397ab7a.img
done
[[email protected] sysconfig]#
  • Rebotamos el servidor y comprobaremos que la memoria y la CPU se han limitado correctamente.

En RedHat 8

Para limitar los recursos de memoria y CPU en Linux RedHat 8, configuraremos el fichero /boot/grub2/grubenv:

[[email protected] ~]# cat /boot/grub2/grubenv
# GRUB Environment Block
saved_entry=062f875ce1af4e47828eb10505496dc0-4.18.0-240.10.1.el8_3.x86_64
kernelopts=root=/dev/mapper/vg00-rootvol ro audit=1 nomodeset crashkernel=auto resume=/dev/mapper/vg00-swapvol rd.lvm.lv=vg00/rootvol rd.lvm.lv=vg00/swapvol biosdevname=0 net.ifnames=0 rhgb quiet transparent_hugepage=never mem=15G
boot_success=0
boot_indeterminate=0

Luego, rebotaremos el servidor.

Te puede interesar

Anuncios 10⭐Estrellas

La mejor forma de potenciar tu negocio a través de la plataforma de Google Ad Manager