The TRUTH about kernels

Discussion in 'Android General Discussions' started by banderbe, Aug 5, 2010.

  1. banderbe
    Offline

    banderbe Member

    Joined:
    Feb 28, 2010
    Messages:
    148
    Likes Received:
    0
    Trophy Points:
    16
    Ratings:
    +0
    This post is the product of seeing over the last six to nine months endlessly repeated claims by people that this kernel or that kernel is more stable, runs cooler, has better battery life, runs faster, etc.

    This post isn't meant to knock those who like to build kernels. I like to build kernels. The guys who build kernels like Chevy and Jdlfg are nice guys. It seems like the end users who don't work on these kernels have no idea what actually goes into building a kernel. Well, to be honest, not that much goes into building a kernel. It's pretty easy to do and the kernels by Bekit, Chevy, AdamZ, P3Droid, Jdlfg, are all more or less the same.

    While many of you may already know some of what will follow, many don't. My hope is that with this post I can at least to some degree put an end to all the hype surrounding kernels and kernel development.

    The Life of A Kernel

    A stock kernel for the Droid is born when a person downloads the kernel source code from the Android Open Source Project.

    That person then builds the kernel against a generic kernel configuration (sholes_defconfig) that comes as part of the download and is compatible with the Droid.

    Customizing The Generic Kernel

    The customization that may be done to the kernel is fairly limited. The developer may change the available frequencies, the voltages used for those frequencies, and they may modify some of the configuration options to enable or disable certain features.

    Voltage -
    Each frequency has a corresponding voltage so the developer can try to use a lower voltage or a higher voltage depending on what kind of kernel he's making. Some Droids can run low voltage and some can't due to tolerances allowed by the semiconductor manufacturer during production of the ARM Cortex CPU. The voltage is represented in code as a hexadecimal value, and some kernel developers do not know what this value represents in mV (millivolts). Lower voltage means a cooler phone and longer battery life.

    Short of actually seeing the voltages used by the kernel, there's no way to know if your "low voltage" kernel is lower than another "low voltage" kernel. I've seen "low voltage" kernels that used stock voltages and in fact had top frequency voltages beyond the Vmax of 1.8 volts specified in the ARM Cortex technical reference manual.

    Frequency -
    The generic kernel has seven slots and maxes out at 800 mhz. The developer can change the frequencies in these seven slots but as of kernel 2.6.32, they cannot change the number of slots. This is why all Froyo kernels have seven slots. The higher the frequency, the more voltage is needed to boot the phone and remain stable under load.

    Modules -
    The developer can modify the generic configuration to include things like:

    TUN
    EXT2/3/4
    LZO compression (Swap/Compcache support)

    These can be built as part of the kernel or as loadable modules.

    Beyond these standard modules most of the more popular kernels on the market today are almost identical to the generic configuration.

    The exception that I'm aware of are the configuration files of Bekit's Eclair kernels which had a large number of changes but these changes were simply based off of changes in the CyanogenMod kernel. Bekit himself would freely tell you that he didn't know what most of them did.

    Kernel Code Changes

    99% of the kernels available for the Droid have no source code changes beyond the changes to the frequency list mentioned above.

    There is one small patch some developers have applied to support swap/compcache but this amounts to three or four lines of code modified by a script.

    The one exception that I'm aware of are Jake Day's Droid kernels which contain (according to Jake) some 30,000 lines of modified code.

    Conclusion

    Outside of choosing a kernel because you need TUN, or because you want to use the new changes to read the OMAP sensor to track real time CPU temperatures, the only real difference that exists is how stable a kernel is on your hardware - getting back to the fact that some phones run better on higher voltage.

    Remember the next time you see someone claiming that this kernel or that kernel seems faster, or smoother. It isn't.
  2. brando56894
    Offline

    brando56894 Active Member

    Joined:
    Mar 9, 2010
    Messages:
    1,217
    Likes Received:
    0
    Trophy Points:
    36
    Location:
    New Jersey
    Ratings:
    +0
    Great post, very informative. I was just thinking "why dont I start to build my own kernels? I build my own linux kernels already" That way I'd know exactly what works best for my phone.
  3. banderbe
    Offline

    banderbe Member

    Joined:
    Feb 28, 2010
    Messages:
    148
    Likes Received:
    0
    Trophy Points:
    16
    Ratings:
    +0
    Thanks. That's exactly what I have ended up doing is building my own kernels. That way I can crank the voltage down as low as my phone will allow. Plus I can build in the modules I want, and experiment with other settings when time allows. It's a great way to learn about the linux kernel.
  4. DeeMat
    Offline

    DeeMat Member

    Joined:
    Jan 8, 2010
    Messages:
    242
    Likes Received:
    1
    Trophy Points:
    18
    Ratings:
    +1
    Good write up banderbe.
  5. ilikemoneygreen
    Offline

    ilikemoneygreen Silver Member

    Joined:
    Apr 7, 2010
    Messages:
    2,581
    Likes Received:
    15
    Trophy Points:
    103
    Location:
    AZ, Superstition MTNs!
    Ratings:
    +15
    Awesome writeup
  6. banderbe
    Offline

    banderbe Member

    Joined:
    Feb 28, 2010
    Messages:
    148
    Likes Received:
    0
    Trophy Points:
    16
    Ratings:
    +0
    bump!!!!!!!!!!!!
  7. giant25
    Offline

    giant25 Member

    Joined:
    Jan 4, 2010
    Messages:
    308
    Likes Received:
    1
    Trophy Points:
    18
    Location:
    CA
    Ratings:
    +1
    What's the "bump" for?!?! All kidding aside, thanks for the write up. I think battery life, voltage, and temperature are all very important reasons for the various kernels out there. I think these variations account for an overall feel of performance between these kernels. I understand your point about the limited number of configurable parameters, but they are important ones nonetheless. Great info. Thanks.
  8. DF Smod
    Offline

    DF Smod Silver Member

    Joined:
    Apr 23, 2010
    Messages:
    11,470
    Likes Received:
    93
    Trophy Points:
    163
    Ratings:
    +93
    I have answered a lot of kernel questions today, sometimes a Bump is necessary for the good of the Forum
  9. giant25
    Offline

    giant25 Member

    Joined:
    Jan 4, 2010
    Messages:
    308
    Likes Received:
    1
    Trophy Points:
    18
    Location:
    CA
    Ratings:
    +1
    I was mostly kidding about the bump. Just thought I missed a question in there somewhere....
  10. Tanknspank
    Offline

    Tanknspank Beta Team Premium Member

    Joined:
    Jan 13, 2010
    Messages:
    3,506
    Likes Received:
    0
    Trophy Points:
    151
    Location:
    North Carolina
    Ratings:
    +0
    Wow, glad it did get bumped. This will be a useful link to post to those who say certain things. :)

    Sent from my Droid
  11. raidzero
    Offline

    raidzero n00b. Theme Developer Premium Member Developer

    Joined:
    Apr 15, 2010
    Messages:
    1,054
    Likes Received:
    3
    Trophy Points:
    38
    Location:
    Denver, CO
    Ratings:
    +3
    sorry to necrobump, but..

    You forgot about kernel configuration!


    kernels most certainly can be faster or smoother than another one built from the same code! just because there arent many code changes does not mean the kernel itself cannot be smaller, the less built into it, the better it performs. Plain and simple.

    all kernels are not the same. yes the code is similar between most of them (mine included)...

    the magic is in the config, pulling unwanted functionality out is the best way to reduce overhead and improve general performance

    except for the 2.6.29 I used for RZRecovery which is mishmash of droidmod, slayher, and bekit code...
  12. killabyte
    Online

    killabyte Guest

    Top Poster Of Month

    Ratings:
    +0
    so does anyone have a favorite site for information about compiling your own kernel they would like to share?
Search tags for this page

a855 sholes update 3.1

,

android kernel voltage table

,
change kernel on droid a855
,

droid a855 kernel

,
droid sholes kernals
,

kernel ð´ð»ñ droid a855

,
kernel low voltage droid a855
,
kernels for droid a855
,
update generic android kernel