Re: kernel inclusion planned?
"Peter T. Breuer" <[email protected]> Wed, 28 Jun 2006 18:37:01 +0200 (MET DST)
| Newsgroups | gmane.linux.enbd.general |
|---|---|
| Message-ID | <[email protected]> |
"Also sprach Stephan von Krawczynski:" > I am one of those who think kernel inclusion would be a desirable thing. My > major reasons are: > 1) enbd needs more "eyes". I agree. > Every now and then I set up an enbd-testbed to find out how things are going. > The last one was some weeks ago and it was - again - not quite successful. > Setup worked as usual quite ok, but the boxes crashed when I stressed the > enbd-raid 1 (with fr)(*). This was not the first time that happened to me, > effectively all former tests ended more or less that way. Up to now I have Then you want to publish the test so that the problem can be reproduced for investigation. You also want to check out which versions of enbd in combination with which version of the kernel reproduce the problem, and most importantly, which do not. > only managed to set up one box working quite ok (ok, I do not stress this one, I should add that the enbd code behaves in no way differently when it is "stressed" than when it is not. It's a very boring character ... it just does the same old procedure over and over again. So saying that there is a problem when it is "stressed" is really saying that the problem does not lie entirely within the code itself, but is an interaction of the code with something else, some other code, or some environmental circumstance. To find that out, one has to vary the parameters in the experiment to see what that something else might be. I can imagine for example, that writing to the device through raid at full speed with multiple daemon threads running on an smp machine might trigger a race condition within the driver that is not obvious. Very well then, run it on a UP machine and see if the same thing happens. If it doesn't, problem indicated. Or try running with only one daemon thread, and see how that affects the experiment. It would effectively serialize transfers in userspace. One can then go on to ask for serialization even within the kernel by setting the enbd request queue maxlength to 1. I'm very happy to arrange for such experiments! Indeed, getting experiments like that set up is what is really needed. Another thing that often has me worried is whether the kernel needs or has buffers for use in ioctls even when it is otherwise out of memory (as when you fill memory with buffers by writing to the device faster than data can be treated). There is an obvious resource competetition with tcp for buffers to send data out too, in that situation (supposedly resolved in the kernel memory manager in favor of networking always, but I am dubious that the "always" is for real). Varying the experiment to included kernels with different memory managers would show whether there is a problem there (I always hated it when the kernel's free-memory-by-flushing-random-devices algorithm was not random but deterministic, which meant it might have tried to free enbd memory by freeing raid memory, repeatedly, which wouldn't work when the two are linked .. I really hope the mm is non-deterministic nowadays!). One of the things I would like to do is give the option of an in-kernel daemon cycle, and maybe more paremeters so that the things I just mentioned can be tested directly by users (again with the aim of getting more testing done). But I am heavily overworked at the meoment and cannot do such testing myself ... my favorite SMP testbed machine is still at 2.4.17rc2 (or 2.6.12.3) and my portable is on 2.6.15.4. My 64 bit amd machine is on 2.6.15.5. But at the end of the day, good testing is essential. Peter