Cómo comprobar si la sobreasignación del kernel está habilitada en Linux

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo verificar la configuración de sobreasignación de memoria virtual en Linux. Utilizará el comando sysctl para ver el parámetro del kernel vm.overcommit_memory y comprender sus diferentes valores.

También explorará el sistema de archivos /proc, específicamente el directorio /proc/sys/vm, para ver cómo los parámetros del kernel se exponen como archivos. Finalmente, inspeccionará el archivo /etc/sysctl.conf para ver cómo se pueden configurar de forma permanente estas opciones. Este laboratorio proporcionará una comprensión práctica de cómo verificar y entender las configuraciones de sobreasignación del kernel en un entorno Linux.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/BasicSystemCommandsGroup(["Basic System Commands"]) linux/BasicSystemCommandsGroup -.-> linux/echo("Text Display") linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/env("Environment Managing") subgraph Lab Skills linux/echo -.-> lab-558796{{"Cómo comprobar si la sobreasignación del kernel está habilitada en Linux"}} linux/ls -.-> lab-558796{{"Cómo comprobar si la sobreasignación del kernel está habilitada en Linux"}} linux/cat -.-> lab-558796{{"Cómo comprobar si la sobreasignación del kernel está habilitada en Linux"}} linux/env -.-> lab-558796{{"Cómo comprobar si la sobreasignación del kernel está habilitada en Linux"}} end

Verificar la sobreasignación con sysctl vm.overcommit

En este paso, aprenderá cómo verificar la configuración de sobreasignación de memoria virtual en Linux utilizando el comando sysctl.

La sobreasignación de memoria virtual es una característica en Linux que permite al sistema asignar más memoria a los procesos de la que está físicamente disponible. Esto puede ser beneficioso en algunos casos, pero también puede causar problemas si los procesos intentan utilizar toda la memoria que se les ha asignado.

El comando sysctl se utiliza para ver y modificar parámetros del kernel en tiempo de ejecución. Lo utilizaremos para verificar el valor del parámetro vm.overcommit_memory.

Abra la terminal si aún no lo ha hecho. Puede hacerlo haciendo clic en el icono de Xfce Terminal en el lado izquierdo del escritorio.

Ahora, escriba el siguiente comando en la terminal y presione Enter:

sysctl vm.overcommit_memory

Este comando le pide al kernel que muestre el valor actual del parámetro vm.overcommit_memory.

Debería ver una salida similar a esta:

vm.overcommit_memory = 0

El valor 0 indica el manejo de sobreasignación heurístico predeterminado. Otros valores posibles son 1 (siempre sobreasignar) y 2 (nunca sobreasignar). Comprender esta configuración es importante para el rendimiento y la estabilidad del sistema, especialmente en entornos con altas demandas de memoria.

Haga clic en Continuar para pasar al siguiente paso.

Verificar configuraciones en /proc/sys/vm

En este paso, explorará el sistema de archivos /proc, específicamente el directorio /proc/sys/vm, para ver cómo se exponen los parámetros del kernel relacionados con la memoria virtual.

El sistema de archivos /proc es un sistema de archivos virtual que proporciona información sobre procesos y otra información del sistema. Es un excelente lugar para inspeccionar el estado actual del kernel. El directorio /proc/sys dentro de /proc contiene archivos que corresponden a parámetros del kernel que se pueden ver y, a veces, modificar en tiempo de ejecución.

El directorio /proc/sys/vm contiene archivos relacionados con el subsistema de memoria virtual. El parámetro vm.overcommit_memory que verificamos en el paso anterior tiene un archivo correspondiente en este directorio.

Usemos el comando cat para ver el contenido del archivo que representa vm.overcommit_memory. El comando cat se utiliza para mostrar el contenido de archivos.

Escriba el siguiente comando en su terminal y presione Enter:

cat /proc/sys/vm/overcommit_memory

Este comando leerá el contenido del archivo overcommit_memory ubicado en /proc/sys/vm y lo imprimirá en su terminal.

Debería ver el mismo valor que vio con el comando sysctl en el paso anterior:

0

Esto demuestra que sysctl esencialmente lee o escribe en estos archivos del sistema de archivos /proc/sys.

También puede listar los archivos en el directorio /proc/sys/vm para ver otros parámetros relacionados con la memoria virtual. Use el comando ls:

ls /proc/sys/vm/

Verá una lista de archivos, cada uno de los cuales representa un parámetro diferente del kernel relacionado con la memoria virtual.

compact_hueristic
compact_memory
dirty_background_bytes
dirty_background_ratio
dirty_bytes
dirty_expire_centisecs
dirty_ratio
dirty_writeback_centisecs
drop_caches
extfrag_threshold
hugetlb_shm_group
laptop_mode
lowmem_reserve_ratio
min_free_bytes
min_slab_ratio
min_unmapped_ratio
mmap_min_addr
nr_hugepages
nr_hugepages_mempolicy
nr_overcommit_hugepages
numa_balancing
numa_balancing_scan_period_max_ms
numa_balancing_scan_period_min_ms
numa_balancing_scan_size_mb
numa_balancing_settle_count
numa_balancing_timeout
oom_dump_tasks
oom_kill_allocating_task
overcommit_memory
overcommit_ratio
page-cluster
panic_on_oom
percpu_pagelist_fraction
stat_interval
swappiness
user_reserve_kbytes
vfs_cache_pressure
watermark_boost_factor
watermark_scale_factor
zone_reclaim_mode

Esto le da una idea de los muchos parámetros ajustables disponibles en el subsistema de memoria virtual del kernel de Linux.

Haga clic en Continuar para continuar.

Inspeccionar la configuración con cat /etc/sysctl.conf

En este paso, aprenderá sobre el archivo /etc/sysctl.conf, que se utiliza para configurar de forma permanente los parámetros del kernel entre reinicios.

Si bien puede cambiar los parámetros del kernel en tiempo de ejecución utilizando el comando sysctl o escribiendo en archivos en /proc/sys, estos cambios suelen ser temporales y se perderán cuando el sistema se reinicie. Para hacer que los cambios de los parámetros del kernel sean permanentes, normalmente los agrega al archivo /etc/sysctl.conf o a archivos en el directorio /etc/sysctl.d/.

Cuando el sistema se inicia, lee la configuración de /etc/sysctl.conf y la aplica.

Usemos nuevamente el comando cat para ver el contenido del archivo /etc/sysctl.conf.

Escriba el siguiente comando en su terminal y presione Enter:

cat /etc/sysctl.conf

Esto mostrará el contenido del archivo de configuración principal de sysctl.

Puede ver líneas que comienzan con #, que son comentarios y se ignoran. Otras líneas tendrán el formato parámetro = valor, similar a lo que vio en la salida del comando sysctl.

#
## /etc/sysctl.conf - Archivo de configuración para establecer variables del sistema
## Consulte los archivos .conf en /etc/sysctl.d/ para otras variables del sistema
#

#kernel.domainname = example.com

## Descomente lo siguiente para evitar mensajes de bajo nivel en la consola
#kernel.printk = 3 4 1 3

##############################################################3
## Funciones previamente encontradas en netbase
#

## Descomente las siguientes dos líneas para habilitar la protección contra ataques de suplantación
#net.ipv4.conf.default.rp_filter=1
#net.ipv4.conf.all.rp_filter=1

## Descomente la siguiente línea para habilitar las cookies TCP/IP SYN
#net.ipv4.tcp_syncookies=1

## Descomente la siguiente línea para habilitar el reenvío de paquetes para IPv4
#net.ipv4.ip_forward=1

## Descomente la siguiente línea para habilitar el reenvío de paquetes para IPv6
#net.ipv6.conf.all.forwarding=1

##############################################################3
## Eliminar el usuario nobody en el kernel
#

#kernel.yama.ptrace_scope = 1

##############################################################3
## Tecla de solicitud mágica del sistema
#

#kernel.sysrq = 176

##############################################################3
## Memoria compartida dinámica:
#

#kernel.shmmax = 4294967295
#kernel.shmall = 268435456

##############################################################3
## Otras configuraciones
#

#fs.file-max = 100000

#vm.swappiness = 60
#vm.vfs_cache_pressure = 50

#kernel.nmi_watchdog = 0

Tenga en cuenta que el parámetro vm.overcommit_memory puede no estar definido explícitamente en este archivo. Si un parámetro no está definido en /etc/sysctl.conf o /etc/sysctl.d/, el kernel utiliza su valor predeterminado. El valor que vio con el comando sysctl y en /proc/sys/vm/overcommit_memory es el valor actualmente activo, que podría ser el predeterminado o establecido por otro archivo de configuración o script durante el arranque.

Comprender /etc/sysctl.conf es crucial para la configuración persistente del sistema.

Haga clic en Continuar para finalizar este laboratorio.

Resumen

En este laboratorio, aprendiste cómo verificar la configuración de sobreasignación de memoria virtual en Linux. Utilizaste el comando sysctl vm.overcommit_memory para ver el valor actual de este parámetro del kernel, comprendiendo que un valor de 0 indica el manejo heurístico predeterminado, 1 significa siempre sobreasignar y 2 significa nunca sobreasignar.

También exploraste el sistema de archivos /proc, específicamente el directorio /proc/sys/vm, para ver cómo parámetros del kernel como vm.overcommit_memory se exponen como archivos dentro de este sistema de archivos virtual, lo que proporciona una forma alternativa de inspeccionar el estado actual del kernel en cuanto a las configuraciones de memoria virtual.