| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| wiki:system_configuration [2025/04/05 18:29] – [Disabling resource-intensive daemons, services and processes] autostatic | wiki:system_configuration [2026/08/11 20:04] (current) – [Power management] autostatic |
|---|
| |
| ==== Simultaneous Multithreading ==== | ==== Simultaneous Multithreading ==== |
| Simultaneous Multithreading (SMT) or hyper-threading can cause spikes in DSP load at higher DSP loads. In such cases it might be beneficial to disable SMT. This can be done by setting the SMT ''control'' flag to ''0''. | Simultaneous Multithreading (SMT) or hyper-threading can cause spikes in DSP load at higher DSP loads. In such cases it might be beneficial to disable SMT. This can be done by setting the SMT ''control'' flag to ''off''. |
| | |
| | echo off | sudo tee /sys/devices/system/cpu/smt/control |
| | |
| | See also https://manual.ardour.org/setting-up-your-system/the-right-computer-system-for-digital-audio/ and https://discourse.ardour.org/t/avoiding-hyperthreading/89367/3 |
| | |
| | More information on SMT/hyper-threading: https://en.wikipedia.org/wiki/Simultaneous_multithreading |
| ==== Solve IRQ conflicts by unbinding devices ==== | ==== Solve IRQ conflicts by unbinding devices ==== |
| |
| |
| And ''/dev/cpu_dma_latency'' should now have read-write permissions for root and the audio group (mode 0660). Now you can set CPU latency as low as you like. Bear in mind that setting it to 0 will put your CPU's in an always-on state which wil run them hotter. So be prepared for some extra fan noise. | And ''/dev/cpu_dma_latency'' should now have read-write permissions for root and the audio group (mode 0660). Now you can set CPU latency as low as you like. Bear in mind that setting it to 0 will put your CPU's in an always-on state which wil run them hotter. So be prepared for some extra fan noise. |
| | |
| | === USB autosuspend === |
| | When using an USB audio interface it is recommended to disable the power management of the USB subsystem. This way your USB audio interface won't be disconnected when the kernel thinks it is in an idle state. Disabling the power management can be done by adding the following kernel parameter to your the ''GRUB_CMDLINE_LINUX_DEFAULT'' line in your GRUB configuration: |
| | usbcore.autosuspend=-1 |
| | |
| | And then run ''sudo update-grub''. After a reboot this setting will then be picked up. To activate the setting immediately use the following command: |
| | echo "-1" | sudo tee /sys/module/usbcore/parameters/autosuspend |
| | |
| ==== Filesystems ==== | ==== Filesystems ==== |
| |
| The [[https://codeberg.org/rtcqs/rtcqs|rtcqs]] script automatically analyzes your current configuration. This script will make configuration suggestions based on your current setup and link to the relevant sections on this page for background information. | The [[https://codeberg.org/rtcqs/rtcqs|rtcqs]] script automatically analyzes your current configuration. This script will make configuration suggestions based on your current setup and link to the relevant sections on this page for background information. |
| |
| rtcqs - version 0.5.0 | rtcqs - version 0.6.6 |
| | |
| Root User | Root User |
| [ OK ] Not running as root. | [ OK ] Not running as root. |
| | |
| Audio Group | Group Limits |
| =========== | ============ |
| [ OK ] User music is in the audio group. | [ OK ] User music is member of a group that has sufficient rtprio (95) and memlock (unlimited) limits set. |
| | |
| CPU Frequency Scaling | CPU Frequency Scaling |
| ===================== | ===================== |
| [ OK ] The scaling governor of all CPU's is set at performance. | [ OK ] The scaling governor of all CPUs is set to performance. |
| | |
| | Simultaneous Multithreading |
| | =========================== |
| | [ OK ] Simultaneous Multithreading (SMT, also called hyper-threading) is disabled. |
| | |
| Kernel Configuration | Kernel Configuration |
| Preempt RT | Preempt RT |
| ========== | ========== |
| [ OK ] Kernel 5.17.1-rt17 is a real-time kernel. | [ OK ] Kernel 6.13.8-4-liquorix-amd64 is using threaded IRQs. |
| | |
| Spectre/Meltdown Mitigations | Spectre/Meltdown Mitigations |
| Swappiness | Swappiness |
| ========== | ========== |
| [ OK ] Swappiness is set at 10. | [ OK ] Your system is configured without swap, setting swappiness does not apply. |
| | |
| Filesystems | Filesystems |
| =========== | =========== |
| [ OK ] The following mounts can be used for audio purposes: /, /mnt/data | [ OK ] The following mounts can be used for audio purposes: / |
| [ WARNING ] The following mounts should be avoided for audio purposes: /run/user/1000/gvfs. See also https://wiki.linuxaudio.org/wiki/system_configuration#filesystems | |
| | |
| IRQs | IRQs |
| ==== | ==== |
| [ OK ] USB port ehci_hcd:usb1 with IRQ 16 does not share its IRQ. | [ OK ] USB port xhci_hcd with IRQ 45 does not share its IRQ. |
| USB port ehci_hcd:usb2 with IRQ 23 does not share its IRQ. | [ OK ] Soundcard snd_hda_intel:card10 with IRQ 91 does not share its IRQ. |
| USB port xhci_hcd with IRQ 25 does not share its IRQ. | [ OK ] USB port xhci_hcd with IRQ 43 does not share its IRQ. |
| Soundcard snd_hda_intel:card10 with IRQ 31 does not share its IRQ. | [ OK ] Soundcard snd_hda_intel:card11 with IRQ 92 does not share its IRQ. |
| | [ OK ] USB port xhci_hcd with IRQ 49 does not share its IRQ. |
| | [ OK ] USB port xhci_hcd with IRQ 47 does not share its IRQ. |
| | |
| Power Management | Power Management |
| ================ | ================ |
| [ OK ] Power management can be controlled from user space. This enables DAW's like Ardour and Reaper to set CPU DMA latency which could help prevent xruns. | [ OK ] Power management can be controlled from user space. This enables DAWs like Ardour and Reaper to set CPU DMA latency which could help prevent xruns. |
| |
| Discuss this script at the [[https://linuxmusicians.com/viewtopic.php?f=24&t=24000|LinuxMusicians Forum]] | Discuss this script at the [[https://linuxmusicians.com/viewtopic.php?f=24&t=24000|LinuxMusicians Forum]] |
| {{:wiki:htop_2023-10-15.png|Terminal running htop}} | {{:wiki:htop_2023-10-15.png|Terminal running htop}} |
| |
| ==== latencytop ==== | ==== LatencyTOP ==== |
| |
| ''latencytop'' is a very useful tool to find out what process is causing system latency to happen. | [[https://www.latencytop.org/|LatencyTOP]] is a very useful tool to find out what processes are causing system latency to happen. LatencyTOP only works on kernels that have ''CONFIG_LATENCYTOP'' enabled. This would mean building your own kernel as practically all packaged kernels do not have this feature enabled by default. |
| |
| {{:wiki:latencytop.png|latencytop}} | {{:wiki:latencytop.png|latencytop}} |
| |
| Just as ''latencytop'' measures system latencies, ''[[https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start|cyclictest]]'' measures kernel latencies. ''cyclictest'' has quite some options but one of the most used ways to run the command is: | Just as ''latencytop'' measures system latencies, ''[[https://wiki.linuxfoundation.org/realtime/documentation/howto/tools/cyclictest/start|cyclictest]]'' measures kernel latencies. ''cyclictest'' has quite some options but one of the most used ways to run the command is: |
| # cyclictest -t1 -p 80 -n -i 10000 -l 10000 -m | # cyclictest -t1 -p 80 -i 10000 -l 10000 -m |
| One single thread (''-t1''), priority of 80 (''-p 80''), use clock_nanosleep (''-n''), use 10000 us base interval of thread (''-i 1000''), use 1000 loops and then exit (''-l 10000''), lock current and future memory allocations (''-m''). More on clock_nanosleep can be found in its manpage (''man clock_nanosleep''). | One single thread (''-t1''), priority of 80 (''-p 80''), use 10000 µs base interval of thread (''-i 10000''), use 10000 loops and then exit (''-l 10000''), lock current and future memory allocations (''-m''). ''cyclictest'' uses clock_nanosleep by default. More on clock_nanosleep can be found in its manpage (''man clock_nanosleep''). |
| |
| Other examples of the usage of ''cyclictest'': | Other examples of the usage of ''cyclictest'': |