Take the 2-minute tour ×
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It's 100% free, no registration required.

After installing Ubuntu Studio 12.04, I found that it uses a low latency kernel. I searched why and how to change back to realtime or generic ones. But, looks like this part of Linux hasn't been covered so much.

Q: Why to choose low latency kernel over generic or realtime ones?

P.S:L I have already read the answers from this question and this post.

share|improve this question
add comment

3 Answers

These are some simple guidelines provided to help you understand which kernel, and in which order, you should test to fit your use case.

  • If you do not require low latency for your system then please use the -generic kernel.
  • If you need a low latency system (e.g. for recording audio) then please use the -preempt kernel as a first choice. This reduces latency but doesn't sacrifice power saving features. It is available only for 64 bit systems (also called amd64).
  • If the -preempt kernel does not provide enough low latency for your needs (or you have an 32 bit system) then you should try the -lowlatency kernel.
  • If the -lowlatency kernel isn't enough then you should try the -rt kernel
  • If the -rt kernel isn't enough stable for you then you should try the -realtime kernel

I guess it depend what you will do with you studio distro. For some users, generic willl just do fine, for other it won't.

https://help.ubuntu.com/community/UbuntuStudio/RealTimeKernel

FREEDOM SPEECH, try read this link : http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

share|improve this answer
    
I already read the previous article you posted. About the second, how much are those facts reliable? –  Starx Apr 28 '12 at 3:30
    
Well the tests mentioned there talks by themselves. If Ubuntu team have chosen Latency in the first place, it must be a reason to it. SO you wanted to know the differences, now you do. Problem solved ? –  ubuntu fan Apr 28 '12 at 3:50
1  
No.. I dont think the problem is solved. If your answer does anything, it increases my curiosity more. –  Starx Apr 28 '12 at 4:09
add comment

I'm the author of the blogpost linked by ubuntu fan: http://sevencapitalsins.wordpress.com/2007/08/10/low-latency-kernel-wtf/

That blog post doesn't present any fact, it's only theory. It's the way it works, actually: the processor "stops" more frequently to see if there are some processes requiring immediate attention. That means that those processes will be executed before the others, so you won't skip frames when encoding, or have huge delay times between mouse clicks and enemy deaths. It doesn't mean that all processes will end sooner: actually the CPU is losing a bigger portion of its time deciding what process will be executed next, and doing the context switch. So the total execution time is longer, and that's why no one runs a preemptible kernel on webserver or database machines. But a preemptible 300Hz (or even 1000Hz) kernel is the best for gameservers.

But nowadays processors have many cores, so when there are few processes requiring attention they can easily be allocated on a different core rather than waiting for a core to take it.

(stackexchange requires me references/personal experience: I'm an electronic engineer, bloodthirsty noobgamer mantaining several gameservers at http://www.gamezoo.it ).

So, as a rule of thumb, I'd say: if your processor is a powerful number-crunching high-frequency quad-core AND you don't usually open tons of webpages while encoding/decoding/gaming (huh), you could just try the generic (or i686, or amd64 if they exist) kernel and have the highest possible throughput (i.e., the raw number-crunching the processor is able to do). If you experience problems (they should really be minor) or your machine is slightly less powerful than the top of the market, go for the -preempt.

If you're on a low-end machine that has only one or two cores, then try the -lowlatency. You could also try the -realtime, but you'll find that it tends to block processes until the "real-time" ones have finished their job. I believe the realtime kernel isn't the "vanilla" one, but has the CONFIG_PREEMPT_RT patch applied. I think that realtime kernels are only for those who have to build a single application on embedded systems, so usual desktop users shouldn't have real benefits because they usually run a fair number of applications at the same time.

Finally, the most relevant kernel options if you want to recompile your kernel yourself to have a low-latency desktop are:

PREEMPT=y

and:

CONFIG_1000_HZ=y

To add some powersaving you may check this one:

CONFIG_NO_HZ=y
share|improve this answer
    
I noticed you mention maintaining servers, I'm trying to figure out the best kernel for valve source dedicated server (CSGO specifically). most CS threads I find are related to goldsrc which needed 1000Hz kernel. With srcds, is lowlatency bad? if it doesn't matter I'll just stick to lowlatency as that's what I have right now (I isolate the cpu cores for 128 tick srcds servers as it doesn't really benefit from multi threading anyway). –  Vincent Apr 11 at 20:42
add comment

BTW: preemt-, lowlatency or the rt kernel wont make your system faster. They are slightly slower than generic kernel.

share|improve this answer
1  
Can you explain your reasoning or give sources? –  hexafraction Jul 16 '12 at 14:54
    
Did you mean my answer ObsessiveFOSS? Short answer: because it introduces more overhead in the kernel. You may read this interesting article if you want to get more information: versalogic.com/mediacenter/whitepapers/wp_linux_rt.asp –  gemue2010 Jul 19 '12 at 1:16
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.