[Asterisk-Users] A question about Linux kernels and Asterisk

WipeOut wipe_out at users.sourceforge.net
Fri Jan 9 10:12:37 MST 2004


I understand.. Thanks for explaining..

I am going to give kernel building a go but I don't think it will be on 
a production box for a while, not until I am happy that I have at least 
some understanding as to what I am doing..

Thanks again, as always you are a great source of informed help..

Later..



Steven Critchfield wrote:

>On Fri, 2004-01-09 at 09:22, WipeOut wrote:
>  
>
>>Steven Critchfield wrote:
>>
>>    
>>
>>>On Fri, 2004-01-09 at 05:08, WipeOut wrote:
>>> 
>>>
>>>      
>>>
>>>>I know nothing about building custome kernels so if these are stupid 
>>>>questions then tell me.. :)
>>>>
>>>>I am guessing that since the kernel can be built with all sorts of 
>>>>options and settings.. So is there anything in the kernel setup that 
>>>>could be used to make a custome kernel that would be optimised for use 
>>>>with asterisk and make it better able to process the codec operations 
>>>>and RTP streams?? or is it all about as optimal as its going to get in 
>>>>the standard kernels that come with various distros..
>>>>
>>>>The thinking came from a post that I saw a while ago that said that the 
>>>>Fedora kernel was far better with Asterisk than the RH9 kernel..
>>>>   
>>>>
>>>>        
>>>>
>>>The basic wisdom about a kernel is to use as few pieces in it as
>>>possible. If you can get away with stripping it down to bare minimum
>>>then you have removed sections of low non-swappable memory from ever
>>>loading. Optimize to your current CPU level. Maybe implement QoS and
>>>firewalling so you can protect your system better plus get your RTP out
>>>with priority. 
>>> 
>>>
>>>      
>>>
>>So apart from minimising memory usage there is nothing that can really 
>>be done to improve the kernels computational ability.. The best way I 
>>can articulate my thinking is if we take an example of a car engine, you 
>>can take the cylender head and clean up the inlet on outlet ports, even 
>>open them up a little to get a better path for the air fuel mixture to 
>>travel through.. Is there no way to "open up" the computational paths in 
>>the kernel to give it the ability to process more data through the CPU 
>>(obviously the CPU is the the hard limit of the processing ability).
>>    
>>
>
>Nothing like cleaning up flow so much as minimizing the junk that
>pollutes that space. To really push the analogy here, think of your CPU
>as the cylinder, the cache as the volume of space in the intake runners,
>and the clock cycles as something akin to the valves. The memory
>reduction removes code from the cache that isn't interesting to your
>application and therefore move more productive code into cache(don't
>those pesky EGR valves piss you off sticking exhaust gasses into your
>intake). You may find some kernels are compiled for lower class
>processors, this would be like having the wrong kind of fuel being
>provided to your engine(Some diesel can be added to your gasoline engine
>but it won't run at peak performance). So if you optimize the kernel to
>your CPU family, you might get the CPU to handle some of it's integer
>math faster for you.
>
>Essentially all of this comes down to trying to reduce contention for
>the CPU. Minimizing the kernel reduces what it might try and accomplish
>during it's clock cycles. If the kernel can get out of the way faster,
>you leave asterisk with more clock cycles per second. I think you might
>end up getting better reward for effort by making sure you have the
>lowest process count and that every process is really needed. 
>
>On my main switch, I have 47 processes at the moment and 20 of them are
>asterisk, 3 are postgres, 1 sshd, 4 related to my login and ps, 6 idle
>gettys, and a few kernel related and inet related processes. This
>machine doesn't ever break a sweat on my call load.
>
>  
>
>>>I can't comment on Fedora vs. RH9 versions of the kernel as I personally
>>>won't ever run one unless I am hog tied to some special driver whose
>>>creator pushes binary only packages against one of those pre made
>>>kernels. I prefer the bone stock kernel.org sources, but that is just a
>>>preference.   
>>> 
>>>
>>>      
>>>
>>About the only app I run from source is Asterisk so i think creating 
>>(and trusting) my own kernel would be a real stretch..
>>    
>>
>
>Trusting isn't an issue, it works or it doesn't. Rolling your own kernel
>from source is a very rewarding experience. There is many little help
>comments in the kernel help that will also help you find out what might
>help you speed your kernel up or not. For example look at the comments
>about CONFIG_MTRR:
>  x On Intel P6 family processors (Pentium Pro, Pentium II and later)                                                                                                                                  x  
>  x the Memory Type Range Registers (MTRRs) may be used to control                                                                                                                                     x  
>  x processor access to memory ranges. This is most useful if you have                                                                                                                                 x  
>  x a video (VGA) card on a PCI or AGP bus. Enabling write-combining                                                                                                                                   x  
>  x allows bus write transfers to be combined into a larger transfer                                                                                                                                   x  
>  x before bursting over the PCI/AGP bus. This can increase performance                                                                                                                                x  
>  x of image write operations 2.5 times or more. Saying Y here creates a                                                                                                                               x  
>  x /proc/mtrr file which may be used to manipulate your processor's                                                                                                                                   x  
>  x MTRRs. Typically the X server should use this.                                                                                                                                                     x  
>  
>Once you are over the hump about how to create a custom kernel, you will
>be less dependent on RH or fedora for any of your systems. Eventually
>you might be able to choose a different distro based on your new
>knowledge.
>  
>





More information about the asterisk-users mailing list