mirror of
https://git.rwth-aachen.de/acs/public/villas/node/
synced 2025-03-16 00:00:02 +01:00
51 lines
1.6 KiB
Markdown
51 lines
1.6 KiB
Markdown
# Tuning {#tuning}
|
|
|
|
## Operating System and Kernel
|
|
|
|
For minimum latency several kernel and driver settings can be optimized.
|
|
A [PREEMPT_RT patched Linux](https://rt.wiki.kernel.org/index.php/Main_Page) kernel is recommended.
|
|
Precompiled kernels for Fedora can be found here: http://ccrma.stanford.edu/planetccrma/software/
|
|
|
|
1. **Important:** Tune overall system performance for real-time:
|
|
|
|
```bash
|
|
$ 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
|
|
```
|
|
|
|
This enables the following `tuned` profiles:
|
|
- latency-performance
|
|
- network-latency
|
|
- realtime
|
|
|
|
2. Map NIC IRQs => see setting `affinity`
|
|
3. Map Tasks => see setting `affinity`
|
|
|
|
4. Increase priority of server task (nice(2)) => see setting `priority`
|
|
5. Increase BSD socket priority => see setting `priority` and node-type `socket`
|
|
|
|
6. Configure NIC interrupt coalescence with `ethtool`:
|
|
|
|
```bash
|
|
$ ethtool -C|--coalesce devname [adaptive-rx on|off] [adaptive-tx on|off] ...
|
|
```
|
|
|
|
7. 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 systems allows parallization of send/receive paths.
|
|
|
|
- Server-grade network cards: Intel PRO/1000
|
|
- These allow offloading of UDP checksumming to the hardware
|