Tutoriales

Cómo ajustar el kernel de Linux usando el sistema de archivos /proc

Linux es un sistema operativo sorprendente y poderoso. Más específicamente, el kernel de Linux es la fuente de muchos de sus superpoderes. He estado usando Linux durante 25 años y he usado muchas versiones del kernel de Linux. Incluso compilé el kernel una o dos veces en clase, algunas veces solo para divertirme.

[ Download now: Advanced Linux commands cheat sheet. ]

La mayoría de los usuarios o incluso los administradores del sistema no necesitan compilar el núcleo. En la mayoría de las distribuciones, la compilación predeterminada está bien para la mayoría de los casos de uso. Pero a veces se requieren algunos ajustes. La buena noticia es que el núcleo se puede modificar fácilmente sin volver a compilar o incluso reiniciar.

Este artículo no pretende divulgar en detalle todos los datos del núcleo disponibles para su visualización o modificación.Este es un tributo a una increíble pieza de software. 31 aniversario.

¿Qué es el sistema de archivos /proc?

Este /proc El sistema de archivos es uno de los componentes más críticos del kernel. Es un sistema de archivos virtual que existe solo en la memoria.Este /proc sistema de archivos por Estándar de capas del sistema de archivos de Linux (FHS) donde Linux almacena información sobre el sistema, el kernel y todos los procesos que se ejecutan en el host. Está destinado a ser el lugar donde el kernel expone información sobre sí mismo para facilitar a los programadores, desarrolladores y administradores de sistemas el acceso a los datos sobre el sistema.

La recopilación de estos datos no afecta el rendimiento general del host Linux. El kernel de Linux está diseñado para recopilar y almacenar continuamente datos de rendimiento a los que se puede acceder y mostrar mediante todas y cada una de las herramientas de supervisión del rendimiento. Estas herramientas acceden a esos datos para leerlos, luego los manipulan y los muestran en un formato significativo.Debido a que estos datos ya están almacenados en /proc sistema de archivos, lo que evita llamadas a funciones complejas y lentas dentro del kernel.

Algunos datos están en /proc El sistema de archivos se utiliza para ajustar el kernel. Los valores en estos archivos se pueden cambiar fácilmente con herramientas Linux simples y familiares.

Ver datos

Cuando se utiliza como una ventana al estado del sistema operativo y su vista del sistema y el hardware, el núcleo proporciona un fácil acceso a casi cualquier información que desee como administrador del sistema.Todas las herramientas geniales que usan los administradores de sistemas para acceder a los datos /proc El sistema de archivos se basa en el kernel para ver el estado del sistema operativo y obtener los datos que necesita.

[ Boost your Linux skills. Get the guide to installing applications on Linux. ]

Primero mire algunos datos disponibles.Primero, haz /proc El directorio de trabajo actual (PWD) y una lista de los contenidos. Muchos de ellos son directorios, otros son archivos. Yo uso el emulador de terminal Konsole. El color predeterminado para los directorios es azul y los archivos tienen el color del texto del terminal, que configuré en ámbar. Los enlaces simbólicos son cian.

Lista de directorios /proc. (David Du, CC BY-SA 4.0)

Todos los directorios numéricos representan el ID de proceso (PID) de un proceso y contienen datos que el kernel necesita para administrar ese proceso. A diferencia de los directorios con nombre, los archivos con nombre contienen datos asociados con el nombre del archivo. Un directorio con nombre normalmente contiene una serie de archivos y subdirectorios relacionados con el nombre del directorio.

un ejemplo es stat documento. Este archivo contiene estadísticas relacionadas con la CPU del sistema.puedes usarlo cat comando para ver el archivo. Haga esto varias veces, o use el siguiente comando como raíz para ver cómo cambia el archivo:

# watch cat /proc/stat

Este watch El comando por defecto repite el comando cada dos segundos hasta que lo use Ctrl + C Busca un avance. También puede especificar un intervalo diferente. Lea la página del manual para obtener esa información.

Otro documento interesante es proc/meminfoIntenta ver eso durante unos minutos.Todas mis herramientas favoritas de determinación de problemas y monitoreo utilizan /proc Obtenga sus datos.

mira eso free comando, por ejemplo:

# free
               total        used        free      shared  buff/cache   available
Mem:        32726880      727108    31104776        1560      894996    31610372
Swap:       16777208           0    16777208

El siguiente comando muestra el resultado. free comando y meminfo Archivar al mismo tiempo. Asegúrese de que las comillas simples y dobles sean correctas.línea # La notación proporciona un poco de separación visual entre la salida de los dos comandos, brindándole suficientes señales visuales cuando las necesite. Lo he acortado aquí para que todo quepa en una sola línea.

# watch 'free ; echo "###########" ; cat /proc/meminfo | head -20'

La interpretación de la salida de datos de estos comandos está más allá del alcance de este artículo, pero se puede encontrar en la Sección 1.14, /proc página descrita por LFSHexistir Proyecto de documentación de Linux sitio web.

Este man 5 proc La pagina tambien tiene una buena descripcion de todo /proc documento.

Este free El comando es solo una de las muchas herramientas que le permiten ver el estado del kernel en ejecución en tiempo real.

Otros que me gustan son top, htopy glances, todos los cuales muestran una vista completa del sistema en ejecución. Use diseños ligeramente diferentes y diferentes opciones para configurar cómo se muestran los datos, todos los cuales pueden mostrar el uso de la memoria y el intercambio, el uso individual y total de la CPU, una lista de los procesos del sistema y del usuario, y datos sobre cada proceso, como la memoria, el uso de la CPU. , tiempo de ejecución total del proceso, PID e ID del proceso principal (PPID).

Estas tres herramientas, junto con renice comando, también puede renice o matar un proceso en ejecución.La modificación de un proceso cambia los datos en el proceso. /proc/PID/stat documento. Los datos en este archivo son complejos y los editores no pueden escribir ni redirigir el archivo, por lo que se requiere una herramienta Renice disponible.

Otras herramientas que uso regularmente son lsblk, iptop, lsusb, lspciy otras herramientas relacionadas para enumerar y administrar hardware.Cualquiera de las muchas herramientas que administran procesos, memoria, redes, hardware adicional y todo lo demás que se usa /proc El sistema de archivos hace esto.

Cambiar el núcleo en ejecución

Este /proc El sistema de archivos también está diseñado para proporcionar acceso para modificar muchos valores de configuración si es necesario para permitirle modificar un sistema en ejecución sin reiniciar después del cambio.

[ Download now: A sysadmin’s guide to Bash scripting. ]

Lo primero que necesitaba modificar en el host Linux utilizado para el enrutador era convertirlo en un enrutador.Esto se hace configurando el contenido del archivo /proc/sys/net/ipv4/ip_forward a 1Hay varias formas de cambiar las variables de ajuste del kernel, todas las cuales simplemente cambian el /proc Sistema de archivos.

Los primeros dos métodos son solo temporales y deben realizarse después de cada reinicio.

Primero, puedo usar el comando:

# echo 1 > /proc/sys/net/ipv4/ip_forward

Este sysctl El comando hace lo mismo: establece el valor de ese archivo en 1:

#  sysctl -w net.ipv4.ip_forward = 1

Puede comprobar el valor de cualquier archivo:

# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

o:

# cat sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Pero todos estos cambios son solo temporales, se restablecen a los valores predeterminados en cada arranque.

hacer cambios permanentes

Es muy fácil hacer que estos cambios sean permanentes.Simplemente agregue la siguiente línea a /etc/sysctl.conf archivo o a un nuevo archivo /etc/sysctl.dEstos archivos se leen y se utilizan para configurar los parámetros del kernel en el momento del arranque. Puede ver algunas otras opciones del kernel que configuré para satisfacer mis necesidades en este archivo:

################################################################################                            #                            Local-sysctl.conf                                 #
#                                                                              #
# Local kernel option settings.                                                #
# Install this file in the /etc/sysctl.d directory.                            #
#                                                                              #
# Use the command: sysctl -p /etc/sysctl.d/local-sysctl.conf to activate.      #
#                                                                              #
################################################################################
################################################################################
# Local Network settings - Specifically to disable IPV6                        #
################################################################################
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
################################################################################
# And to make this a router                                                    #
################################################################################
net.ipv4.ip_forward = 1
################################################################################
# Virtual Memory Swappiness                                                    #     
################################################################################
# Set swappiness
vm.swappiness = 13

Para obtener más detalles sobre cómo realizar estas tareas, consulte mi artículo de Opensource.com, ¿Cómo desactivo IPv6 en Linux?.

pensamientos finales

Este /proc El sistema de archivos es el «único punto de verdad» (SPOT) para obtener información sobre el sistema en ejecución y cambiar las variables de ajuste del kernel. Lo uso mucho, directa o indirectamente, con las utilidades habituales de GNU y otras herramientas que ya están disponibles en todas las distribuciones de Linux.

La capacidad de ajustar el kernel de Linux en tiempo de ejecución es uno de los aspectos más poderosos del uso de Linux. Puede cambiar los parámetros del kernel en tiempo de ejecución sin reiniciar.

recurso

LEER  Nginx: 413 - Error y decisión de entidad de solicitud demasiado amplio

Publicaciones relacionadas

Deja una respuesta

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

Botón volver arriba