Linux kernel parameter

From HPCWIKI
Jump to navigation Jump to search

sysctl can be used to modify kernel parameters at runtime without recompiling the entire kernel.

net.ipv4.tcp_fin_timeout

can help in faster release of network resources.After adjusting the TCP FIN Timeout:

sudo sysctl -w net.ipv4.tcp_fin_timeout=30

net.ipv4.tcp_keepalive_time

determines the time interval for TCP keepalive packets

sudo sysctl -w net.ipv4.tcp_keepalive_time=120

net.ipv4.tcp_sack

Enable the TCP selective acks option for better throughput:

# sysctl -w net.ipv4.tcp_sack=1

net.ipv4.tcp_timestamps

Disable the TCP timestamps option for better CPU utilization

# sysctl -w net.ipv4.tcp_timestamps=0

net.core.somaxconn

somaxconn is used to set the maximum number of connections that can be queued for a socket. This parameter is used to prevent a flood of connection requests from overwhelming the system. The maximum value for the net.core.somaxconn parameter depends on the system and kernel version.

The default value for the net.core.somaxconn Linux kernel parameter is typically 128 and the maximum value is around 65535 on most systems.

Nginx consideration

It is important to set the net.core.somaxconn parameter to a value that is larger than the backlog value of NGINX, as the backlog value is used to determine the maximum number of connections that can be queued for a listening socket of NGINX only. If the net.core.somaxconn value is smaller than the backlog value, NGINX will not be able to queue all the incoming connections, resulting in connection errors.[1]

Calculate optimal net.core.somaxconn value

For example, if your average queue length from vmstat is 1000 and you have 2 CPU cores,

the optimal value for net.core.somaxconn would be 1000 * 4 / 2 = 2000.

The formula for net.core.somaxconn 

optimal value = CPU cores * queue length / 4

vm.vfs_cache_pressure

can optimize how the kernel handles file system caches

sudo sysctl -w vm.vfs_cache_pressure=50

vm.swappiness

controls how aggressively the kernel swaps memory pages. Lower values are generally better for systems with sufficient RAM

sudo sysctl -w vm.swappiness=10

References