Todos los parámetros de ajuste de TCP/IP se encuentran en el directorio /proc/sys/net/. Por ejemplo, estos son algunos de los parámetros de ajuste más importantes, seguidos de sus significados:
1. /proc/sys/net/core/rmem_max — Búfer máximo de recepción de datos TCP
2. /proc/sys/net/core/wmem_max — Búfer máximo de envío de datos TCP
3. /proc/sys/net/ipv4/tcp_timestamps: la marca de tiempo se agrega al encabezado TCP en 12 bytes (consulte RFC 1323).
4. /proc/sys/net/ipv4/tcp_sack - respuesta selectiva
5. /proc/sys/net/ipv4/tcp_window_scaling: admite ventanas TCP más grandes. Si la ventana TCP máxima excede 65535 (64 K), este valor debe establecerse en 1.
6. rmem_default: tamaño de ventana de recepción predeterminado
7. rmem_max: el tamaño máximo de la ventana de recepción
8. wmem_default: tamaño de ventana de envío predeterminado
9. wmem_max: el tamaño máximo de la ventana de envío
Todo el contenido del directorio /proc es temporal, por lo que cualquier cambio se perderá después de reiniciar el sistema.
Se recomienda modificar automáticamente los parámetros TCP/IP cuando se inicia el sistema:
Agregue el siguiente código al archivo /etc/rc.local y luego guarde el archivo. Los siguientes parámetros TCP/IP se modificarán automáticamente cuando se reinicie el sistema:
eco 256960 > /proc/sys/net/core/rmem_default
eco 256960 > /proc/sys/net/core/rmem_max
eco 256960 > /proc/sys/net/core/wmem_default
eco 256960 > /proc/sys/net/core/wmem_max
eco 0 > /proc/sys/net/ipv4/tcp_timestamps
eco 1 > /proc/sys/net/ipv4/tcp_sack
eco 1 > /proc/sys/net/ipv4/tcp_window_scaling
Los parámetros TCP/IP se explican por sí mismos, el tamaño de la ventana TCP está establecido en 256960, las marcas de tiempo TCP están deshabilitadas (cancele la adición de 12 bytes a cada encabezado de paquete), se admiten ventanas TCP más grandes y respuestas selectivas de TCP.
Los valores anteriores se establecen en función de la conexión a Internet y la velocidad máxima de ancho de banda/latencia.
Nota: Los valores del ejemplo anterior se pueden utilizar en la práctica, pero solo incluyen parte de los parámetros.
Otro método: use /etc/sysctl.conf para configurar los parámetros con los valores que estableció cuando se inicia el sistema:
net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack=1
net.ipv4.tcp_window_scaling = 1
-------------------------------------------------- ---------------
/proc/sys/fs/supermax
Este archivo especifica el número máximo de controladores de superbloque. Cualquier sistema de archivos montado requiere el uso de un superbloque, por lo que si se monta una gran cantidad de sistemas de archivos, el controlador de superbloque puede agotarse.
Configuración predeterminada: 256
/proc/sys/fs/super-nr
Este archivo muestra el número actual de superbloques asignados. Este archivo es de sólo lectura y se utiliza únicamente para mostrar información.
/proc/sys/núcleo
/proc/sys/kernel/cuenta
Este archivo tiene tres valores configurables que controlan cuándo comienza la contabilidad del proceso en función de la cantidad de espacio libre (expresada como porcentaje) en el sistema de archivos que contiene el registro:
Si el espacio libre cae por debajo de este valor porcentual, detenga la contabilidad del proceso
Si el espacio libre es superior a este valor porcentual, inicie el proceso de contabilidad
Con qué frecuencia (en segundos) se verifican los dos valores anteriores
Para cambiar un valor en este archivo, se debe devolver una secuencia de números separados por espacios.
Configuración predeterminada: 2 4 30
Estos valores hacen que la contabilidad se detenga si hay menos del 2 % de espacio libre en el sistema de archivos que contiene el diario y que se inicie nuevamente si hay un 4 % o más de espacio libre. Los controles se realizan cada 30 segundos.
/proc/sys/kernel/ctrl-alt-del
Este archivo tiene un valor binario que controla cómo reacciona el sistema cuando recibe la combinación de teclas Ctrl+Alt+Supr. Estos dos valores representan:
Un valor de cero (0) significa que Ctrl+Alt+Delete se captura y se envía al programa de inicio. Esto permitirá que el sistema se apague y se reinicie correctamente, como si hubiera ingresado el comando de apagado.
Un valor de uno (1) significa que Ctrl+Alt+Delete no se captura y se realizará un apagado no limpio, como si la alimentación se hubiera apagado directamente.
Configuración predeterminada: 0
/proc/sys/kernel/nombre de dominio
Este archivo le permite configurar el nombre de dominio de la red. No tiene ningún valor predeterminado. El nombre de dominio puede haberse configurado o no.
/proc/sys/kernel/nombre de host
Este archivo le permite configurar nombres de host de red. No tiene un valor predeterminado, el nombre de host puede haberse configurado o no.
/proc/ss/kernel/msgmax
Este archivo especifica la longitud máxima de los mensajes enviados de un proceso a otro. El paso de mensajes entre procesos ocurre en la memoria del kernel y no se intercambia al disco, por lo que si aumenta este valor, aumentará la cantidad de memoria utilizada por el sistema operativo.
Configuración predeterminada: 8192
/proc/sys/kernel/msgmnb
Este archivo especifica el número máximo de bytes en una cola de mensajes.
Configuración predeterminada: 16384
/proc/sys/kernel/msgmni
Este archivo especifica el número máximo de ID de Message Queue Server.
Configuración predeterminada: 16
/proc/sys/kernel/pánico
Este archivo indica cuánto tiempo, en segundos, espera el kernel antes de reiniciarse si ocurre un "pánico del kernel". Una configuración de cero (0) segundos deshabilitará el reinicio en caso de que se produzca un pánico en el kernel.
Configuración predeterminada: 0
/proc/sys/kernel/printk
Este archivo tiene cuatro valores numéricos que definen dónde se envía el mensaje de registro en función de su importancia. Para obtener más información sobre los diferentes niveles de registro, lea la página de manual de syslog(2). Los cuatro valores de este archivo son:
Nivel de registro de la consola: los mensajes con una prioridad superior a este valor se imprimirán en la consola
Nivel de registro de mensajes predeterminado: los mensajes sin prioridad se imprimirán con esta prioridad
Nivel mínimo de registro de la consola: el valor mínimo al que se puede establecer el nivel de registro de la consola (prioridad más alta)
Nivel de registro de consola predeterminado: el valor predeterminado para el nivel de registro de consola
Configuración predeterminada: 6 4 1 7
/proc/sys/kernel/shmall
Este archivo es la cantidad total de memoria compartida (en bytes) disponible en el sistema en un momento dado.
Configuración predeterminada: 2097152
/proc/sys/kernel/shmax
Este archivo especifica el tamaño máximo (en bytes) de los segmentos de memoria compartida permitidos por el kernel.
Configuración predeterminada: 33554432
/proc/sys/kernel/shmmni
Este archivo representa el número máximo de segmentos de memoria compartida utilizados para todo el sistema.
Configuración predeterminada: 4096
/proc/sys/kernel/sysrq
Si el valor especificado en este archivo no es cero, se activa la clave de solicitud del sistema.
Configuración predeterminada: 0
/proc/sys/kernel/threads-max
Este archivo especifica el número máximo de subprocesos que el kernel puede utilizar.
Configuración predeterminada: 2048
/proc/sys/net
/proc/sys/net/core/message_burst
Se descartará el tiempo (en 1/10 segundos) necesario para escribir un nuevo mensaje de advertencia; otros mensajes de advertencia recibidos durante este tiempo. Esto se utiliza para evitar ataques de denegación de servicio utilizados por alguien que intenta "inundar" su sistema con mensajes.
Configuración predeterminada: 50 (5 segundos)
/proc/sys/net/core/message_cost
Este archivo contiene el valor del costo asociado con cada mensaje de advertencia. Cuanto mayor sea el valor, más probable será que se ignore el mensaje de advertencia.
Configuración predeterminada: 5
/proc/sys/net/core/netdev_max_backlog
Este archivo especifica la cantidad máxima de paquetes que se pueden poner en cola cuando la interfaz recibe paquetes más rápido de lo que el kernel puede procesarlos.
Configuración predeterminada: 300
/proc/sys/net/core/optmem_max
Este archivo especifica el tamaño máximo de búfer permitido para cada socket.
/proc/sys/net/core/rmem_default
Este archivo especifica el valor predeterminado para el tamaño del búfer del socket de recepción en bytes.
/proc/sys/net/core/rmem_max
Este archivo especifica el tamaño máximo del búfer del socket de recepción en bytes.
/proc/sys/net/core/wmem_default
Este archivo especifica el valor predeterminado para el tamaño del búfer del socket de envío en bytes.
/proc/sys/net/core/wmem_max
Este archivo especifica el tamaño máximo del búfer del socket de envío en bytes.
/proc/sys/net/ipv4
Todos los parámetros de IPv4 e IPv6 están documentados en la documentación del código fuente del kernel. Consulte el archivo /usr/src/linux/Documentation/networking/ip-sysctl.txt.
/proc/sys/net/ipv6
Igual que IPv4.
/proc/sys/vm
/proc/sys/vm/buffermem
Este archivo controla la cantidad de memoria general del sistema utilizada para la memoria intermedia (expresada como porcentaje). Tiene tres valores, que se establecen escribiendo una secuencia de números separados por espacios en el archivo.
Porcentaje mínimo de memoria utilizada para buffers
Si ocurre una situación en la que no queda mucha memoria del sistema y la memoria del sistema se está reduciendo, el sistema intentará mantener la cantidad de memoria intermedia.
Porcentaje máximo de memoria utilizada para buffers
Configuración predeterminada: 2 10 60
/proc/sys/vm/freepages
Este archivo controla cómo responde el sistema a varios niveles de memoria disponible. Tiene tres valores, que se establecen escribiendo una secuencia de números separados por espacios en el archivo.
El kernel solo puede asignar algo de memoria si el número de páginas disponibles en el sistema alcanza un límite mínimo.
Si la cantidad de páginas libres en el sistema cae por debajo de este límite, el kernel iniciará el intercambio de una manera más agresiva para liberar memoria y mantener el rendimiento del sistema.
El kernel intentará mantener disponible esta cantidad de memoria del sistema. Los valores por debajo de esto permitirán el intercambio de kernel.
Configuración predeterminada: 512 768 1024
/proc/sys/vm/kswapd
Este archivo controla cómo se le permite al kernel intercambiar memoria. Tiene tres valores, que se establecen escribiendo una secuencia de números separados por espacios en el archivo:
El número máximo de páginas que el kernel intenta liberar a la vez. Si desea aumentar el ancho de banda durante el intercambio de memoria, debe aumentar este valor.
El número mínimo de veces que el kernel intenta liberar una página por intercambio.
El número de páginas escritas por el kernel en un intercambio. Esto tiene el mayor impacto en el rendimiento del sistema. Cuanto mayor sea este valor, más datos se intercambiarán y menos tiempo se dedicará a las búsquedas en el disco. Sin embargo, un valor demasiado grande puede afectar negativamente al rendimiento del sistema al "inundar" la cola de solicitudes.
Configuración predeterminada: 512 32 8
/proc/sys/vm/pagecache
Este archivo hace el mismo trabajo que /proc/sys/vm/buffermem, pero es un mapa de memoria del archivo y un caché general.
Hacer que la configuración del kernel sea persistente
Aquí se proporciona una utilidad conveniente para cambiar cualquier parámetro del kernel en el directorio /proc/sys. Le permite cambiar el kernel en ejecución (similar a los métodos de eco y redirección utilizados anteriormente), pero también tiene un archivo de configuración que se ejecuta cuando se inicia el sistema. Esto le permite realizar cambios en el kernel en ejecución y agregar esos cambios al archivo de configuración para que persistan durante los reinicios del sistema.
Esta utilidad se llama sysctl y está completamente documentada en la página de manual de sysctl(8). El archivo de configuración de sysctl es /etc/sysctl.conf, que se puede editar y grabar en sysctl.conf(8). sysctl trata los archivos bajo /proc/sys como variables individuales que se pueden cambiar. Por lo tanto, tomando el archivo /proc/sys/fs/file-max en /proc/sys como ejemplo, representa el número máximo de identificadores de archivos permitidos en el sistema. Este archivo se representa como fs.file-max.
Este ejemplo revela algunas cosas maravillosas sobre la notación syctl. Dado que sysctl solo puede cambiar variables en el directorio /proc/sys, y la gente siempre piensa que las variables están en este directorio, se omite esa parte del nombre de la variable (/proc/sys). Otro cambio a tener en cuenta es la sustitución del separador de directorio (barra diagonal /) por el punto en inglés (punto).
Hay dos reglas simples para convertir archivos en /proc/sys en variables en sysctl:
Retire la parte frontal /proc/sys.
Cambie las barras diagonales en los nombres de archivos a puntos.
Estas dos reglas le permiten convertir cualquier nombre de archivo en /proc/sys en cualquier nombre de variable en sysctl. La conversión general de archivo a variable es:
/proc/sys/dir/archivo --> dir.archivo
dir1.dir2.archivo --> /proc/sys/dir1/dir2/archivo
Puede utilizar el comando sysctl -a para ver todas las variables que se pueden cambiar y su configuración actual.
Las variables también se pueden cambiar usando sysctl, que hace exactamente lo mismo que el método echo usado anteriormente. Su representación es:
sysctl -w dir.file="valor"
Usando file-max nuevamente como ejemplo, use uno de los dos métodos siguientes para cambiar el valor a 16384.