Skip to content

Instantly share code, notes, and snippets.

@arenadoon
Forked from vintagewang/os.sh
Last active April 13, 2024 21:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arenadoon/203aaeea434841dc45ce9db1fdac7ca2 to your computer and use it in GitHub Desktop.
Save arenadoon/203aaeea434841dc45ce9db1fdac7ca2 to your computer and use it in GitHub Desktop.
Kernel sysctl configuration file for Linux
#!/bin/sh
echo '# ======================ของเซิฟตัวเล่น======================' >> /etc/sysctl.d/99-linux.internal.conf
echo '# sysctl settings are defined through files in' >> /etc/sysctl.d/99-linux.internal.conf
echo '# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.' >> /etc/sysctl.d/99-linux.internal.conf
echo '#' >> /etc/sysctl.d/99-linux.internal.conf
echo '# Vendors settings live in /usr/lib/sysctl.d/.' >> /etc/sysctl.d/99-linux.internal.conf
echo '# To override a whole file, create a new file with the same in' >> /etc/sysctl.d/99-linux.internal.conf
echo '# /etc/sysctl.d/ and put new settings there. To override' >> /etc/sysctl.d/99-linux.internal.conf
echo '# only specific settings, add a file with a lexically later' >> /etc/sysctl.d/99-linux.internal.conf
echo '# name in /etc/sysctl.d/ and put new settings there.' >> /etc/sysctl.d/99-linux.internal.conf
echo '#' >> /etc/sysctl.d/99-linux.internal.conf
echo '# For more information, see sysctl.conf(5) and sysctl.d(5).' >> /etc/sysctl.d/99-linux.internal.conf
echo '' >> /etc/sysctl.d/99-linux.internal.conf
echo '# Kernel sysctl configuration file for Linux' >> /etc/sysctl.d/99-linux.internal.conf
echo '#' >> /etc/sysctl.d/99-linux.internal.conf
echo '# Version 1.14 - 2019-04-05' >> /etc/sysctl.d/99-linux.internal.conf
echo '# Michiel Klaver - IT Professional' >> /etc/sysctl.d/99-linux.internal.conf
echo '# http://klaver.it/linux/ for the latest version - http://klaver.it/bsd/ for a BSD variant' >> /etc/sysctl.d/99-linux.internal.conf
echo '#' >> /etc/sysctl.d/99-linux.internal.conf
echo '# This file should be saved as /etc/sysctl.conf and can be activated using the command:' >> /etc/sysctl.d/99-linux.internal.conf
echo '# sysctl -e -p /etc/sysctl.conf' >> /etc/sysctl.d/99-linux.internal.conf
echo '# sysctl --system' >> /etc/sysctl.d/99-linux.internal.conf
echo '# sysctl -e -p /etc/sysctl.d/99-linux.internal.conf' >> /etc/sysctl.d/99-linux.internal.conf
echo '## Keep at least 640MB of free RAM space available' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.min_free_kbytes = 655350' >> /etc/sysctl.d/99-linux.internal.conf
echo '### 〓〓〓🚩ใช้สำหรับเครื่องที่มีแรมจำกัด' >> /etc/sysctl.d/99-linux.internal.conf
echo '### Comments/memory https://gist.github.com/vintagewang/6148755' >> /etc/sysctl.d/99-linux.internal.conf
echo '### https://www.cnblogs.com/Qing-840/p/16731088.html' >> /etc/sysctl.d/99-linux.internal.conf
echo '### https://www.kernel.org/doc/Documentation/sysctl/vm.txt' >> /etc/sysctl.d/99-linux.internal.conf
echo '# https://www.cnblogs.com/Qing-840/p/16731088.html' >> /etc/sysctl.d/99-linux.internal.conf
echo '# +1 https://gist.github.com/vintagewang/6148755' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.overcommit_memory=1' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.min_free_kbytes=5000000' >> /etc/sysctl.d/99-linux.internal.conf
echo '# 🚩vm.drop_caches=1 flush all RAM to disk เพื่อล้าง RAM ทั้งหมดลงดิสก์🚩https://stackoverflow.com/a/20215710' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.drop_caches=1' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.zone_reclaim_mode=0' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.max_map_count=655360' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.dirty_background_ratio=50' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.dirty_ratio=50' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.page-cluster=3' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.dirty_writeback_centisecs=360000' >> /etc/sysctl.d/99-linux.internal.conf
echo 'vm.swappiness=10' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_no_metrics_save = 1' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.core.netdev_max_backlog = 16384' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.core.somaxconn = 65535' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_fin_timeout = 15' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_keepalive_time = 60' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_keepalive_probes = 2' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_keepalive_intvl = 10' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.core.rmem_max=256960' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.core.wmem_max=256960' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.udp_rmem_min = 16384' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.udp_wmem_min = 16384' >> /etc/sysctl.d/99-linux.internal.conf
echo 'kernel.core_uses_pid = 1' >> /etc/sysctl.d/99-linux.internal.conf
echo '# Use BBR TCP congestion control and set tcp_notsent_lowat to 16384 to ensure HTTP/2 prioritization works optimally' >> /etc/sysctl.d/99-linux.internal.conf
echo '# Do a 'modprobe tcp_bbr' first (kernel > 4.9)' >> /etc/sysctl.d/99-linux.internal.conf
echo '# Fall-back to htcp if bbr is unavailable (older kernels)' >> /etc/sysctl.d/99-linux.internal.conf
echo '#net.ipv4.tcp_congestion_control = htcp' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_congestion_control = bbr' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_congestion_control = bbr_powered' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_notsent_lowat = 16384' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_slow_start_after_idle = 0' >> /etc/sysctl.d/99-linux.internal.conf
echo '# For servers with tcp-heavy workloads, enable 'fq' queue management scheduler (kernel > 3.12)' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.core.default_qdisc = fq' >> /etc/sysctl.d/99-linux.internal.conf
echo '# Turn on the tcp_window_scaling' >> /etc/sysctl.d/99-linux.internal.conf
echo 'net.ipv4.tcp_window_scaling = 1' >> /etc/sysctl.d/99-linux.internal.conf
sysctl -p
ulimit -n 655350
echo 'ulimit -n 655350' >> /etc/profile
DISK=`df -k | sort -n -r -k 2 | awk -F/ 'NR==1 {gsub(/[0-9].*/,"",$3); print $3}'`
[ "$DISK" = 'cciss' ] && DISK='cciss!c0d0'
echo 'deadline' > /sys/block/$DISK/queue/scheduler
echo "---------------------------------------------------------------"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment