El kernel Linux permite modificar una gran cantidad de parámetros sin necesidad de recompilarlo. Estos parámetros afectan al funcionamiento del sistema en mayor o menor medida así que conviene saber el modo de optimizarlos y/o saber como modificarlos. El comando sysctl suele ser la forma más común de hacerlo. Los valores se almacenan en el directorio /proc/sys.
Hay que tener en cuenta que cuando modificamos los parámetros vía sysctl los cambios surten efecto al instante, pero tras un reinicio se pierden, por eso conviene guardar las personalizaciones y cambios en el fichero de configuración de sysctl /etc/sysctl.conf. En alguna otra entrada ya hemos visto algún cambio de estos parámetros, como por ejemplo el valor del swappiness para optimizar el uso de memoria, que hacer ante un kernel panic o ip_conntrack_max.
Lo primero que podemos observar con el comando sysctl -a es un listado de los parámetros configurables junto con su valor actual:
# sysctl -a kernel.sched_child_runs_first = 0 kernel.sched_min_granularity_ns = 4000000 kernel.sched_latency_ns = 12000000 kernel.sched_wakeup_granularity_ns = 2000000 kernel.sched_shares_ratelimit = 500000 kernel.sched_tunable_scaling = 1 kernel.sched_shares_thresh = 4 kernel.sched_migration_cost = 500000 ... ...
Vamos a trabajar con el ejemplo de la variable para kernel panic. Vamos a modificarlo de 0 a 5 para indicar que ante un kernel panic el sistema se reinicie pasados 5 segundos. Por defecto está a 0:
# sysctl -a | grep panic kernel.panic = 0
Podemos cambiarlo de dos formas: cambiando el parámetro con sysctl o volcando el «5» directamente al fichero en /proc/sys:
# echo 5 > /proc/sys/kernel/panic # sysctl -a | grep panic kernel.panic = 5
# sysctl -w kernel.panic=5 # sysctl -a | grep panic kernel.panic = 5
Para guardarlo tras el reinicio tendríamos que añadir la siguiente línea a /etc/sysctl.conf:
kernel.panic = 5
Si únicamente lo añadimos al fichero de configuración y no ejecutamos sysctl ni echo tenemos que actualizar la configuración con sysctl -p para que los cambios sean efectivos al instante:
# sysctl -p kernel.panic = 5 # sysctl -a | grep panic kernel.panic = 5
Esta es la forma de utilizar el comando sysctl linux, a partir de aquí solo es necesario utilizarlo para «tunear» aquellos parámetros de kernel que necesitemos.