From: J.A. M. <jam...@ab...> - 2003-07-31 23:15:10
|
On 07.31, er...@he... wrote: > On Wed, Jul 30, 2003 at 10:55:12PM -0400, Nicholas Henke wrote: > > On Tue, 2003-07-01 at 11:05, er...@he... wrote: > > > > > > I believe clone works. Most of the interesting stuff with clone is > > > local to the node and BProc doesn't get involved at all. So, in > > > theory, it should be possible to make Java work. > > Sorry for the late answer... I am running pthread programs on nodes with bpsh. It works fine with standard kernels and bproc (no so fine with kernels that have O1 sched, but that's another story...) They are not very pthread intensive, just spawn at the beginning, do heay render work and a bit of syncronisation and per-thread variables. If you point to problems in your kernel, you can try with this: http://giga.cps.unizar.es/~magallon/linux/kernel/2.4.22-pre9-jam1m.tar.gz (patches on top of 2.4.22-pre9) Some ideas. AFAIK, java threads are built upon POSIX pthreads, not clone directly. PThreads themselves are built upon clone() syscall. And here comes the funny part. Attached is a simple example of spawning a program over the cluster nodes with bproc, and on each node spawn tasks with glibc clone() call. If you build and link with -lbproc, it works. If you link with -lbproc -lpthreads (even if you don't use any pthread call), it does not work. So the conclussion is that libpthread is overriding the clone() glibc syscal, and breaks it. Attached are bcl.c and Makefile, see the LIBS variable in Makefile. -- J.A. Magallon <jam...@ab...> \ Software is like sex: werewolf.able.es \ It's better when it's free Mandrake Linux release 9.2 (Cooker) for i586 Linux 2.4.22-pre9-jam1m (gcc 3.3.1 (Mandrake Linux 9.2 3.3.1-0.7mdk)) |