:orphan: Network Tuning ============== Linux ----- Linux TCP networking is tuned as in the following. This (or similar) is *required*, since we are really pushing the system. Add the following to the end of ``/etc/sysctl.conf`` and do ``sysctl -p``: :: net.core.somaxconn = 8192 net.ipv4.tcp_max_orphans = 8192 net.ipv4.tcp_max_syn_backlog = 8192 net.core.netdev_max_backlog = 262144 net.ipv4.ip_local_port_range = 1024 65535 #net.ipv4.tcp_low_latency = 1 #net.ipv4.tcp_window_scaling = 0 #net.ipv4.tcp_syncookies = 0 fs.file-max = 16777216 fs.pipe-max-size = 134217728 Further system level tuning: Modify ``/etc/security/limits.conf`` for the following :: # wildcard does not work for root, but for all other users * soft nofile 1048576 * hard nofile 1048576 # settings should also apply to root root soft nofile 1048576 root hard nofile 1048576 and add the following line :: session required pam_limits.so to both of these files at the end: :: /etc/pam.d/common-session /etc/pam.d/common-session-noninteractive Reboot (or at least I don't know how to make it immediate without reboot). Check that you actually got large (``1048576``) FD limit: :: ulimit -n Probably also check that above ``sysctl`` settings actually are in place (``sysctl -a | grep ..`` or such). I am paranoid. FreeBSD ------- Here are a couple of background articles: - https://pleiades.ucsc.edu/hyades/FreeBSD\_Network\_Tuning - https://blog.whatsapp.com/196/1-million-is-so-2011? - https://wiki.freebsd.org/NetworkPerformanceTuning - https://calomel.org/freebsd\_network\_tuning.html - https://www.freebsd.org/doc/handbook/configtuning-kernel-limits.html Add the following to ``/boot/loader.conf``: :: boot_verbose="YES" # increase max. open sockets / files kern.ipc.maxsockets=2400000 kern.maxfiles=3000000 kern.maxfilesperproc=2700000 kern.maxproc=16384 # tune up for high connection numbers net.inet.tcp.tcbhashsize=524288 net.inet.tcp.hostcache.hashsize=4096 net.inet.tcp.hostcache.cachelimit=131072 net.inet.tcp.hostcache.bucketlimit=120 # misc kern.hwpmc.nbuffers=32 kern.hwpmc.nsamples=64 kern.timecounter.smp_tsc=1 kern.random.sys.harvest.ethernet=0 Add the following to ``/etc/sysctl.conf`` :: # increase range of ephemeral ports net.inet.ip.portrange.first=1024 net.inet.ip.portrange.last=65535 net.inet.ip.portrange.randomized=0 # allow binding of ports <1024 by non-root processes net.inet.ip.portrange.reservedhigh=0 # increase backlog kern.ipc.somaxconn=32768 # set to 128MB kern.ipc.maxsockbuf=134217728 # set autotuning maximum to 128MB too net.inet.tcp.sendbuf_max=134217728 net.inet.tcp.recvbuf_max=134217728 # enable send/recv autotuning net.inet.tcp.sendbuf_auto=1 net.inet.tcp.recvbuf_auto=1 # increase autotuning step size net.inet.tcp.sendbuf_inc=16384 net.inet.tcp.recvbuf_inc=16384