UDP Buffer Tuning for 4K Slicers

Increase kernel, hardware, and ulimit buffer settings to prevent packet loss on 4K UDP streams.

Linux restricts UDP performance by limiting the size of the receive socket buffer. These limits can cause packet loss for high-bitrate streams.

For 4K Slicers, you should increase the kernel buffer, hardware buffer, and ulimit settings described below. Changing these settings will not negatively impact non-4K Slicers.

After updating the settings, reboot the system to ensure all processes start with the new limits.

Kernel Buffers

View your current kernel buffer sizes:

> sysctl -a | grep rmem
net.core.rmem_default = 212992             <---- INCREASE ME
net.core.rmem_max = 212992                 <---- INCREASE ME
net.ipv4.tcp_rmem = 4096    87380   6291456
net.ipv4.udp_rmem_min = 4096

Set new values by appending to /etc/sysctl.conf:

echo "#increase UDP receive buffers to 25 MB" >> /etc/sysctl.conf
echo "net.core.rmem_max=26214400" >> /etc/sysctl.conf
echo "net.core.rmem_default=26214400" >> /etc/sysctl.conf

Hardware Buffers

Hardware buffer values vary based on the NIC installed in the system.

View your current hardware buffer settings:

ethtool --show-ring eth0
Ring parameters for eth0:
Pre-set maximums:
RX:     4096
RX Mini:    0
RX Jumbo:   0
TX:     4096
Current hardware settings:
RX:     512
RX Mini:    0
RX Jumbo:   0
TX:     512

Increase the NIC ring buffers:

/sbin/ethtool --set-ring eth0 rx 4096 tx 4096
/sbin/ethtool --set-ring eth1 rx 4096 tx 4096

Ulimits

The ulimit command controls resource limits for user processes, including memory usage, file sizes, and process counts. Set the stack size, memory size, and virtual memory to unlimited:

cat >> /etc/profile.d/ulimit_max.sh << EOF
#!/bin/sh
#stack size
ulimit -s unlimited
#memory size
ulimit -m unlimited
#virtual memory
ulimit -v unlimited
EOF
chmod 755 /etc/profile.d/ulimit_max.sh

Did this page help you?