Kernel testing tips

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



While doing very simple testing I have come across a few themes that might
be useful to other people who want to do light testing of the linux kernel.
Previously I posted another post talking about checking options (things
that would hopefully tell you if the kernel is misbehaving sooner) here -
http://groups.google.com/group/linux.kernel/browse_frm/thread/d73bbfdc7455cba5/d676733d10ccd21a?#d676733d10ccd21a .
Hopefully these posts are useful even if they don't get responses...

Learning to use git
I found http://linux.yyz.us/git-howto.html a reasonable guide to starting to
use git. I wound up having to use man git-bisect a lot to learn how to do
bisection.

Using linux-next via git
There are instructions on
http://linux.f-seidel.de/linux-next/pmwiki/pmwiki.php?n=Linux-next.FAQ
(which unfortunately does not turn up in a google search for linux-next). I
found that to fetch the latest version after doing a git remote update I
have to do git checkout linux-next/master though.

Compile everything you need into the kernel and not into modules
If you are doing builds for a single machine it is often easier to build
everything into the kernel rather than using modules. You can even skip
creating an initrd assuming your setup is simple and you are referring to
devices by /dev/sda? syntax. This also makes it easier to transfer a
finished kernel to another machine (as all you need is the bzImage file).

Compiling on multi-CPU machines
Make sure that if your machine has more than one CPU/core you use the -j
option on make. On a two core box -j5 (even though there are only two cores
and no hyperthreading) seems to yield the lowest compile time.

Bisection
Bisection can allow the narrowing down of a bad patch (assuming the kernel
worked in the past and is broken now). The learning curve is very shallow
(it can be used in a brute force fashion with little understanding) but the
tradeoff is time. The number of commits that happen to linux-next in a day
seems to always be more than 1000 which which means at least 10 recompiles
if yesterday's next worked and today's is broken. Instructions on bisection
can be found on 

On my home desktop (an Athlon 850) it takes at least 35 minutes to do a
complete kernel build. Until you are down to the last few compiles you will
mostly be doing complete builds. In contrast the work laptop I am borrowing
(an Intel Core 2 Duo 1.8Ghz) can finish the same clean build in around 5
minutes.

Let's say you are trying to bisect a persistant hang on boot from 1000
patches (arguably the easiest sort of thing to find because it happens
quickly and is very noticeable) on the laptop. If the laptop boots to a
working logged in desktop in 1 minute 30 seconds and shutting down takes
around 1 minute it will take at least 1 hour and 15 minutes to find the
patch.

Send reports to the right people
Experience says that posting a report to only the LKML will not solicit much
of a response. You pretty much have to CC the right people to stand any
chance of getting a reply. If the problem is in a driver you can try the
driver author as mentioned in the MAINTAINERS file. You can also try
subsystem lists. If you have done a bisection include a CC to the person
who wrote the patch (addresses are shown in the git log of the patch).

Likelihood of responses
When it comes to getting responses things that messages about problems that
have been bisected are usually followed up. Problems about regressions also
seem to get replies. Posts about things like lock dependency warnings and
reports about missing features don't tend to see replies so it's probably
best not to bother making such posts unless you have made a patch which
resolves the issue. 

-- 
Sitsofe | http://sucs.org/~sits/

--
To unsubscribe from this list: send the line "unsubscribe kernel-testers" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux