Adding support for Linux' POSIX capabilities - Alex
[terminatorX.git] / README.PERFORMANCE
1 There are several things you can do to improve terminatorX performance:
2
3 1. Don't use fancy gtk+ themes
4 2. Install suid root
5 3. Compile an optimized binary
6 4. Optimize your terminatorX setup
7 5. Optimize your kernel
8
9 In Detail:
10
11 1. Don't use pixmapped nor other "fat" gtk+-themes.
12 ---------------------------------------------------
13
14 terminatorX involves quite some GUI activity, so it's desirable that drawing
15 happens fast. Some gtk+ engines can slow down drawing signifcantly
16
17 2. Install suid root
18 --------------------
19
20 Note: Installing a program suid-root is always potentially dangerous. However
21 a program needs special privileges to acquire realtime scheduling (which 
22 improves playback quality signifcantly). Since release 3.81 terminatorX provides
23 two methods of running suid root:
24
25 - Linux' POSIX capabilities: when capabilities support is available at
26   compile time (requires libcap) terminatorX can make use of Linux' POSIX
27   capabilities. The binary has to be installed suid root but the program
28   will drop root privileges right on startup - after aquiring the CAP_SYS_NICE
29   capability.
30   
31 - The "old" suid-root way: terminatorX starts the engine thread with root
32   privileges (and realtime scheduling). Then both threads drop root privileges.
33   Unfortunately the standard Linux 2.4 pthreads implementation has an extra
34   "manager" thread that keeps running as root. So it might be possible to gain
35   root privileges somehow. This has been shown before - the detected holes 
36   have been close, but I'm confident that others do exist.
37
38 As the 2nd approach is more dangerous you have to explictly enable it at
39 compile time (run configure with --enable-suidroot). However both methods might
40 be exploitable somehow - so your not getting any garanties either way.
41
42 3. Compile an optimized binary
43 ------------------------------
44
45 This issue is covered in the INSTALL file mostly. Setting good optimization
46 flags is a good idea although this step will proabably have the least effect.
47
48 4. Optimize your terminatorX setup
49 ----------------------------------
50
51 The default settings for the GUI updates provide good realtime feedback. This
52 may cause problems on slower machines or evil gtk+-themes. If the GUI-thread
53 causes dropouts in the audio-engine you should increase the Update-Delay value 
54 in the options dialog.
55
56 5. Optimize your kernel
57 -----------------------
58
59 2.6 Kernels have much lower latency than older Kernels - if you want to work 
60 with a stable Kernel however I recommend patching the 2.4 Series with Con 
61 Kolivas' "ck" patches. They improve terminatorX performace signifcantly - if you
62 dont forget to renice your X to '0' (see Con Kolivas' FAQ at 
63 http://members.optusnet.com.au/ckolivas/kernel/).