This page is not directly related to VILLASnode. It describes several ways to optimize the host system for running real-time applications like VILLASnode.
Operating System and Kernel
For minimum latency several kernel and driver settings can be optimized. A PREEMPT_RT patched Linux kernel is recommended. Precompiled kernels for Fedora can be found here: http://ccrma.stanford.edu/planetccrma/software/
- Tune overall system performance for real-time:
- Install a
PREEMPT_RT
patched Linux kernel.
- Use the
tuned
tool for improving general real-time performance.
- Please adjust the setting
isolated_cpucores
according to your hardware.
- Enable the following
realtime
tuned profile
$ dnf install tuned-profiles-realtime
$ echo "realtime" > /etc/tuned/active_profile
$ echo "isolated_cpucores=6-7" >> /etc/tuned/realtime-variables.conf
$ systemctl enable tuned && systemctl start tuned
- Optimize the VILLASnode configuration.
- Map NIC IRQs (see setting affinity (integer)).
- Map Tasks (see global setting affinity (integer)).
- Increase priority of server task (nice(2)) (see global setting priority (integer)).
- Increase BSD socket priority (see global setting priority (integer) for node-type Sockets).
- Configure NIC interrupt coalescence with
ethtool
: ethtool --coalesce eth0 adaptive-rx off adaptive-tx off
- Configure NIC kernel driver in
/etc/modprobe.d/e1000e.conf
:
# More conservative interrupt throttling for better latency
# https://www.kernel.org/doc/Documentation/networking/e1000e.txt
option e1000e InterruptThrottleRate=
Hardware
This are some proposals for the selection of appropriate server hardware:
- Server-grade CPU: Intel Xeon
- A multi-core system enables true paralell execution of multiple send / receive paths.
- Server-grade network cards: Intel PRO/1000
- These allow offloading of UDP checksumming to the hardware