- Checking /etc/fstab mounting drive should using noatime.
- Ubuntu Studio already set vm.wappiness = 10. But if you have more than 4 GB ram you could run HTPC linux without swap.
- add user to audio group. Use $USER return current user or just type username.
sudo useradd -G audio $USER
- limits.conf/audio.conf. It is advisable to set up your /etc/security/limits.conf file properly, for example:
@audio – rtprio 90 # maximum realtime priority
@audio – memlock unlimited # maximum locked-in-memory address space (KB)
- Using realtimeConfigQuickScan script for checking system
You need to install git first
sudo apt install git
Install script and run script
git clone git://github.com/raboof/realtimeconfigquickscan.git
- If script warn about CPU governer and said CPU are not run in performance mode. As some might found that cpufreq don’t have driver for their CPU. Just disable CPU energy saving and Turbo mode in Bios would be more easy solution. you could install cpufrequtils and run cpufreq-info to check if driver is available or not. You could check CPU speed by using command
more /proc/cpuinfo | grep MHz
After setting change, every cores in CPU should run at same speed whether load are high or low.
- In Ubuntu there’re no out of the box realtime kernel, we have to built it ourselves. If you just using Linux for HTPC and didn’t record video or audio, you don’t need realtime kernel. To install necessary packages run
sudo apt-get install kernel-package fakeroot build-essential libssl-dev
mkdir -p ~/tmp/linux-rt
wget -c https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.11.8.tar.xz
wget -c https://www.kernel.org/pub/linux/kernel/projects/rt/4.11/patch-4.11.8-rt4.patch.xz
Extract the kernel sources and patch them with the RT patchset:
tar xJvf linux-4.11.8.tar.xz
xzcat ../patch-4.11.8-rt4.patch.xz | patch -p1
cp /boot/config-`uname -r` .config
This will copy the config of the kernel you’re currently using. You might want to consider using a config of a kernel already optimized for audio work, like the Ubuntu -lowlatency kernel config. The next step is to create a new config with full preemption enabled from the copied config:
make -j `nproc` LOCALVERSION= deb-pkg
I don’t recommend booting neither realtime or lowlatency kernel for audio playback. When playback with ALSA mode in deadbeef and audacious, I found that its sound a little widen, and less dynamic compare to generic kernel. And I cannot hear differences between realtime and lowlatency kernel. Unless, you could hear differences between generic and lowlatency, there are no need for compiling realtime kernel, imo.
Details of my system are Ubuntu Studio 16.04 LTS, kernel version 4.11.8, and ESI Juli@ + External DAC