-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathoptimize.sh
More file actions
77 lines (67 loc) · 1.87 KB
/
Copy pathoptimize.sh
File metadata and controls
77 lines (67 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/bin/bash
# Check root privileges
if [ "$EUID" -ne 0 ]; then
echo "Error: Run as root."
exit 1
fi
# Backup current config
cp /etc/sysctl.conf /etc/sysctl.conf.bak
# Calculate total memory in GB
MEM_TOTAL_KB=$(awk '/MemTotal/ {print $2}' /proc/meminfo)
MEM_TOTAL_GB=$((MEM_TOTAL_KB / 1024 / 1024))
# Default: High performance (>8GB RAM)
RMEM_DEFAULT=16777216
WMEM_DEFAULT=16777216
RMEM_MAX=67108864
WMEM_MAX=67108864
TCP_RMEM="4096 87380 67108864"
TCP_WMEM="4096 65536 67108864"
NETDEV_BACKLOG=250000
SYN_BACKLOG=8192
# Dynamic allocation based on RAM
if [ "$MEM_TOTAL_GB" -lt 2 ]; then
# Conservative (<2GB RAM)
RMEM_DEFAULT=262144
WMEM_DEFAULT=262144
RMEM_MAX=4194304
WMEM_MAX=4194304
TCP_RMEM="4096 87380 4194304"
TCP_WMEM="4096 65536 4194304"
NETDEV_BACKLOG=30000
SYN_BACKLOG=1024
elif [ "$MEM_TOTAL_GB" -lt 8 ]; then
# Balanced (2GB-8GB RAM)
RMEM_DEFAULT=2621440
WMEM_DEFAULT=2621440
RMEM_MAX=16777216
WMEM_MAX=16777216
TCP_RMEM="4096 87380 16777216"
TCP_WMEM="4096 65536 16777216"
NETDEV_BACKLOG=100000
SYN_BACKLOG=4096
fi
# Write configuration
cat > /etc/sysctl.conf << EOF
# Dynamic sysctl config (RAM: ${MEM_TOTAL_GB}GB)
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.core.rmem_default = ${RMEM_DEFAULT}
net.core.wmem_default = ${WMEM_DEFAULT}
net.core.rmem_max = ${RMEM_MAX}
net.core.wmem_max = ${WMEM_MAX}
net.ipv4.tcp_rmem = ${TCP_RMEM}
net.ipv4.tcp_wmem = ${TCP_WMEM}
net.core.netdev_max_backlog = ${NETDEV_BACKLOG}
net.ipv4.tcp_max_syn_backlog = ${SYN_BACKLOG}
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 60
net.ipv4.tcp_keepalive_probes = 5
EOF
# Apply changes
sysctl -p