<br><br>---------- Forwarded message ----------<br><span class="gmail_quote">From: <b class="gmail_sendername">porl sheean</b> &lt;<a href="mailto:porl42@gmail.com">porl42@gmail.com</a>&gt;<br>Date: 16 Oct 2007 12:33<br>Subject: Re: [LAU] difference between realtime-kernel and low-latency-kernel?
<br>To: Fernando Lopez-Lezcano &lt;<a href="mailto:nando@ccrma.stanford.edu">nando@ccrma.stanford.edu</a>&gt;<br><br></span>i think a few people have missed what i mean. after re-reading my post i can see it wasn&#39;t all that clear. i am still using ubuntustudio, but i downloaded the 64studio *kernel* (not the whole distribution, which i tried but it wasn&#39;t quite what i wanted) to replace ubuntu&#39;s. after doing that, everything runs perfectly. i assumed that the ubuntu kernel didn&#39;t have the rt patches set right, but after downloading a vanilla kernel and patching it myself i noticed that my custom kernel had the same problems as ubuntu&#39;s. whilst i am happy to use the 64studio kernel, i am very curious as to what they have done to it to make it work where both the ubuntu-rt and my own custom kernel both have the same symptoms (*very* unstable audio at lower than 40ms latency, and even then ardour often refuses to start plaback - jack drops it off as soon as i press play sometimes on larger projects). i did a diff of the config files from all kernels and couldn&#39;t find any notable difference that would explain it (to my limited knowledge anyway), so i assume it is a patch that 64studio has applied in addition to the standard rt patch that is making the difference. are there any other audio performance enhancing patches for the kernel?
<br><br>thanks porl<div><span class="e" id="q_115a6a8e96083356_1"><br><br><br><div><span class="gmail_quote">On 16/10/2007, <b class="gmail_sendername">Fernando Lopez-Lezcano</b> &lt;<a href="mailto:nando@ccrma.stanford.edu" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
nando@ccrma.stanford.edu</a>&gt; wrote:</span>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">On Sun, 2007-10-14 at 12:48 +1000, porl sheean wrote:<br>&gt; i have actually had no end of trouble with ubuntustudio&#39;s (and now
<br>&gt; ubuntu&#39;s) rt kernel. on an amd 6000+ system with 1gig ram and a<br>&gt; rme9652 soundcard i can&#39;t get reliable performance under 40 or so ms.<br>&gt; i even tried a vanilla kernel with the rt patches and had the same
<br>&gt; trouble. the 64studio kernel worked fine, however. i&#39;m currently<br>&gt; running at 5ms with it and have had no problems. this is even with<br>&gt; compiz fusion running and spinning the cube whilst playing back audio
<br>&gt; from an 18 channel ardour project. what patches would cause such a<br>&gt; difference in performance? it isn&#39;t any options selected in &#39;make<br>&gt; menuconfig&#39; - i loaded the 64studio&#39;s ones in and used them. still no
<br>&gt; luck. i can only assume they have added more patches to do with<br>&gt; realtime performance than just the -rt patchset.<br><br>&gt;From what I gather ubuntustudio does not have an rt patched kernel (ie:<br>patched with Ingo Molnar&#39;s realtime preemption patch). See observations
<br>below:<br><br>&gt; On 05/10/2007, thomas fisher &lt;<a href="mailto:studio1@commspeed.net" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">studio1@commspeed.net</a>&gt; wrote:<br>&gt; I can supply no quantifications for the 32 bit 
2.6.20-16-realtime<br>&gt; kernel in ubuntustudio other than no xruns have been observed.
<br><br>So, Ubuntu Studio has a kernel named realtime and they have observed no<br>xruns (which is not your case, and not the case of other posters).<br>Obviously it depends on how they test (hardware used, size of buffers,
<br>load on the machine under test, etc, etc) and there&#39;s no info on that<br>post about that.<br><br>&gt; With the low latency kernel, xruns were observed.<br><br>This implies they don&#39;t have the low latency patches applied and that,
<br>in their experience, the low latency patch was worse than the mainline<br>kernel.<br><br>If you have access to that kernel and you can check its build<br>configuration you could grep for &quot;PREEMPT&quot; there and post the results.
<br>That will definitely tell us which options were used for building it (I<br>suspect you will find just &quot;PREEMPT_VOLUNTARY&quot; there).<br><br>In my experience, a mainline kernel will lead to xruns at low latencies
<br>(there&#39;s always an exception, of course).<br><br>&gt; Jack is the only app that has a -20 priority assigned.<br><br>This implies they are not using SCHED_FIFO for running Jack. Apparently<br>they are boosting the normal scheduler ring priority of Jack to -20. I
<br>have not experimented with this so I can&#39;t comment, except to say that<br>everyone else (that I know of) is using SCHED_FIFO for running Jack -<br>SCHED_FIFO is a higher priority scheduling method that can&#39;t be
<br>preempted by regular linux tasks, and while it is more risky as a badly<br>designed application can hang the machine, the tradeoff is of course<br>much better realtime performance.<br><br>&gt; The general workstation has been running without fault. The general
<br>&gt; Debian / Ubuntu philosophy tends towards system stability.<br><br>The realtime preemption patch is certainly less stable than the mainline<br>kernel. But if you hardware runs it fine then it is more effective than
<br>mainline for achieving low latencies.<br><br>-- Fernando<br><br><br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tom<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; On Wednesday 03 October 2007 14:54:32 Fernando Lopez-Lezcano<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wrote:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; On Wed, 2007-10-03 at 18:39 +0200, Frank Barknecht wrote:
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; Hallo,<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; Matthias Schönborn hat gesagt: // Matthias Schönborn<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; wrote:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; &gt; I&#39;ve just read that there&#39;s a difference between a
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; realtime-kernel and<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; &gt; the low-latency-kernel provided by ubuntustudio. The<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; text in the german<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; &gt; wiki on <a href="http://ubuntuusers.de" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

ubuntuusers.de</a> said, that a realtime-kernel is<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; slightly better<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; &gt; than the lowlatencykernel<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( <a href="http://wiki.ubuntuusers.de/Echtzeitkernel" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://wiki.ubuntuusers.de/Echtzeitkernel
</a>) -<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; &gt; then why isn&#39;t it used in ubuntustudio? Or do I just mix<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; something up?<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; I think, this wiki and maybe Ubuntustudio as well are
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; using a very<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; confusing terminology.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; Generally we have two kinds of kernels: The &quot;vanilla&quot;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kernel as
<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; downloadable on <a href="http://kernel.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">kernel.org</a> and the same kernel, but<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; patched with Ingo<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; Molnars RT-patches. The vanilla kernel, if configured
<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; properly with<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; CONFIG_PREEMPT etc., already gives very good performance<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; in the low<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; latency department, enough for many users, even audio<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; users. I run one
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; of these.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; If you want more, then you can install a RT-patched<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kernel, as is<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; provided in the linux-rt or linux-realtime packages.&nbsp;&nbsp;I
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; would call the<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; &gt; Ingo-Molnar-patched kernels Realtime-Kernels or<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Low-Latency-Kernels.<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; To further clarify (or confuse?) the issue, how &quot;low
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; latency&quot; the kernel<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; is also depends on how you configure the kernel build<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; options before or<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; after patching the kernel with Ingo&#39;s patch. For Ingo&#39;s
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; patch<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; CONFIG_PREEMPT_RT is the best option in terms of latency but<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; there are<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; others (CONFIG_PREEMPT_DESKTOP) that have a more<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conservative approach
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; but have (relatively speaking) higher latencies. So from<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; worst to best<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; it would be something like:<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp; vanilla linuz + CONFIG_PREEMPT_NONE
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp; vanilla + CONFIG_PREEMPT_VOLUNTARY (used by the stock<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Fedora kernel)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp; vanilla + Ingo + CONFIG_PREEMPT_DESKTOP<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;&nbsp;&nbsp; vanilla + Ingo + CONFIG_PREEMPT_RT (the one I use for
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Planet CCRMA)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; (there&#39;s more granularity and options in the CONFIG_PREEMPT*<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; world but<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; those are the ones that have the biggest impact as far as I
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; can<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; remember)<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; -- Fernando<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; _______________________________________________<br>
&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; Linux-audio-user mailing list
<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt; <a href="mailto:Linux-audio-user@lists.linuxaudio.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Linux-audio-user@lists.linuxaudio.org</a><br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
<a href="http://lists.linuxaudio.org/mailman/listinfo.cgi/linux-audio-user" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://lists.linuxaudio.org/mailman/listinfo.cgi/linux-audio-user</a><br>&gt;<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; _______________________________________________<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Linux-audio-user mailing list<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="mailto:Linux-audio-user@lists.linuxaudio.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">

Linux-audio-user@lists.linuxaudio.org</a><br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="http://lists.linuxaudio.org/mailman/listinfo.cgi/linux-audio-user" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">http://lists.linuxaudio.org/mailman/listinfo.cgi/linux-audio-user
</a><br>&gt;<br>&gt; _______________________________________________
<br>&gt; Linux-audio-user mailing list<br>&gt; <a href="mailto:Linux-audio-user@lists.linuxaudio.org" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">Linux-audio-user@lists.linuxaudio.org</a><br>&gt; 
<a href="http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)">
http://lists.linuxaudio.org/mailman/listinfo/linux-audio-user</a><br><br></blockquote></div><br>
</span></div>