Kernel Tuning

sysctl parameters, systemd-udev rules, EEVDF scheduler, and kernel module management.

sysctl — Runtime Parameters

# List all parameters
sysctl -a

# View specific parameter
sysctl net.ipv4.ip_forward

# Temporary change (reverts on reboot)
sudo sysctl net.ipv4.ip_forward=1

# Persistent change
sudo tee /etc/sysctl.d/99-custom.conf <<'EOF'
# Networking
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_forward = 0
fs.file-max = 2097152
fs.inotify.max_user_instances = 8192

# Memory
vm.swappiness = 10
vm.vfs_cache_pressure = 50
EOF

# Apply
sudo sysctl -p /etc/sysctl.d/99-custom.conf

EEVDF Scheduler (RHEL 10)

RHEL 10 replaces the CFS (Completely Fair Scheduler) with EEVDF (Earliest Eligible Virtual Deadline First). EEVDF provides better latency and throughput characteristics for modern workloads.

# Check current scheduler
cat /sys/block/sda/queue/scheduler

# View per-task scheduler info
taskset -c -p $$

# Tune EEVDF behavior (kernel 6.11+)
sudo sysctl kernel.sched_tunable_scaling=1

# Set process scheduling priority
schedtool -e other -p 10 -P 0 -p $$

# Set CPU affinity
taskset -c 0,1 -p $$

systemd-udev Rules

# Create a custom udev rule
sudo tee /etc/udev/rules.d/99-custom.rules <<'EOF'
# Set static device permissions
SUBSYSTEM=="block", KERNEL=="sdb", MODE="0660", GROUP="disk"

# Trigger custom script on device insertion
ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/bin/usb-handler.sh"
EOF

# Reload rules
sudo udevadm control --reload

# Trigger rules for existing devices
sudo udevadm trigger

# Monitor udev events
sudo udevadm monitor

Kernel Modules

# List loaded modules
lsmod

# Load a module
sudo modprobe nvidia

# Unload a module
sudo modprobe -r nvidia

# Blacklist a module (prevent auto-load)
echo 'blacklist nvidia' | sudo tee /etc/modprobe.d/blacklist-nvidia.conf

# Persistent module load at boot
echo 'nf_conntrack' | sudo tee /etc/modules-load.d/nf_conntrack.conf

# Module parameters
echo 'nvidia NVreg_RestrictProfilingToAdminUsers=1' | sudo tee /etc/modprobe.d/nvidia.conf

Performance Tuning

# Reduce latency for high-performance apps
sudo tee /etc/sysctl.d/99-latency.conf <<'EOF'
# Disable TCP timestamps (reduces jitter)
net.ipv4.tcp_timestamps = 0

# Increase TCP buffer sizes
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# Enable TCP BBR congestion control
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
EOF

sudo sysctl -p /etc/sysctl.d/99-latency.conf

# Verify BBR is active
lsmod | grep bbr
cat /proc/sys/net/ipv4/tcp_congestion_control