Re: Kernel threads resource leakage

From: Vladimir Kondratiev
Date: Thu Aug 14 2003 - 16:37:37 EST


Richard,

I forgot to mention that I use gcc 3.3; it _do_ compile the code I submitted since it support declarations after statements.
I did actually run tests with the code included in my posting.

About Makefile, it made this way to ensure you use the same flags as for kernel. It is kind of style that proposed in 2.6 kernel, adopted for 2.4.

All,

I am sorry for submitting problem before doing complete analysis. It reveals that I used to have improperly compiled kernel. I tried on another host (2.4.20 with kdb patch, have no plain 2.4.20 handy right now), and it works fine without resource leakage.

Regarding need to create lots of kernel threads. Of course, it is useless to do it very often, but consider, for example, wireless network card, that need to create kernel thread to manage BSS MAC. I would not get too deeply into details, but it may be situation when you need to create new kernel thread, for example, each laptop suspend-resume cycle.

Sure, thousands of cycles may seems too much, but it is a good way to check that you have no leakage. For example, in my driver testing, I do thousands of insmod/rmmod cycles and stuff like this. This helps to find bugs like 100 bytes leakage per 'insmod'.

Anyway, original example is the right way to create and terminate thread and may be used as example.

Sorry again for misleading posting.

Vladimir.

Richard B. Johnson wrote:

I am using a 2.4.20 kernel. I tried your program.
First, it didn't compile. So I would guess that you
never tested your test program. I fixed it and I
made a more readily useful Makefile, etc., so others
can try it, too. It is attached.

It works. It doesn't eat any resources. I guess that
the stuff that actually does 'work' in your actual
driver module is what is consuming resources.

Although making and deleting a number of kernel threads
is an interesting exercise, I sure hope that you don't
really do this in a real application. It is very expensive
to do this. If you need a kernel thread, you should have
one (or several) that do the work and never exit.

Cheers,
Dick Johnson
Penguin : Linux version 2.4.20 on an i686 machine (797.90 BogoMips).
Note 96.31% of all statistics are fiction.




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/