Thread
-
Re: Using Threads?
Myron Scott <mscott@sacadia.com> — 2001-02-06T02:25:05Z
I have put a new version of my multi-threaded postgresql experiment at http://www.sacadia.com/mtpg.html This one actually works. I have added a server based on omniORB, a CORBA 2.3 ORB from ATT. It is much smaller than TAO and uses the thread per connection model. I haven't added the java side of the JNI interface yet but the C++ side is there. It's still not stable but it is much better than the last. Myron Scott mkscott@sacadia.com
-
Re: Using Threads?
Karel Zak <zakkr@zf.jcu.cz> — 2001-02-06T09:20:08Z
On Mon, 5 Feb 2001, Myron Scott wrote: > I have put a new version of my multi-threaded > postgresql experiment at > > http://www.sacadia.com/mtpg.html > > This one actually works. I have added a server > based on omniORB, a CORBA 2.3 ORB from ATT. It > is much smaller than TAO and uses the thread per > connection model. I haven't added the java side > of the JNI interface yet but the C++ side is there. > > It's still not stable but it is much better than > mkscott@sacadia.com Sorry I haven't time to see and test your experiment, but I have a question. How you solve memory management? The current mmgr is based on global variable CurrentMemoryContext that is very often changed and used. Use you for this locks? If yes it is probably problematic point for perfomance. Karel
-
Re: Using Threads
Myron Scott <mscott@sacadia.com> — 2001-02-06T15:05:04Z
> > Sorry I haven't time to see and test your experiment, > but I have a question. How you solve memory management? > The current mmgr is based on global variable > CurrentMemoryContext that is very often changed and used. > Use you for this locks? If yes it is probably problematic > point for perfomance. > > Karel > There are many many globals I had to work around including all the memory management stuff. I basically threw everything into and "environment" variable which I stored in a thread specific using thr_setspecific. Performance is acually very good for what I am doing. I was able to batch commit transactions which cuts down on fsync calls, use prepared statements from my client using CORBA, and the various locking calls for the threads (cond_wait,mutex_lock, and sema_wait) seem pretty fast. I did some performance tests for inserts 20 clients, 900 inserts per client, 1 insert per transaction, 4 different tables. 7.0.2 About 10:52 average completion multi-threaded 2:42 average completion 7.1beta3 1:13 average completion If I increased the number of inserts per transaction, multi-threaded got closer to 7.1 for inserts. I haven't tested other other types of commands yet. Myron Scott mkscott@sacadia.com
-
Re: Using Threads
Karel Zak <zakkr@zf.jcu.cz> — 2001-02-06T17:31:02Z
On Tue, 6 Feb 2001, Myron Scott wrote: > There are many many globals I had to work around including all the memory > management stuff. I basically threw everything into and "environment" > variable which I stored in a thread specific using thr_setspecific. Yes, it's good. I working on multi-thread application server (http://mape.jcu.cz) and I use for this project some things from PG (like mmgr), I planning use same solution. > Performance is acually very good for what I am doing. I was able to batch > commit transactions which cuts down on fsync calls, use prepared > statements from my client using CORBA, and the various locking calls for > the threads (cond_wait,mutex_lock, and sema_wait) seem pretty fast. I did > some performance tests for inserts > > 20 clients, 900 inserts per client, 1 insert per transaction, 4 different > tables. > > 7.0.2 About 10:52 average completion > multi-threaded 2:42 average completion > 7.1beta3 1:13 average completion It is very very good for time for 7.1, already look forward to 7.2! :-) BTW, I not sure if you anytime in future will see threads in official PostgreSQL and if you spending time on relevant things (IMHO). Karel
-
Re: Using Threads
Marc Fournier <scrappy@hub.org> — 2001-02-06T17:47:04Z
On Tue, 6 Feb 2001, Karel Zak wrote: > > On Tue, 6 Feb 2001, Myron Scott wrote: > > > There are many many globals I had to work around including all the memory > > management stuff. I basically threw everything into and "environment" > > variable which I stored in a thread specific using thr_setspecific. > > Yes, it's good. I working on multi-thread application server > (http://mape.jcu.cz) and I use for this project some things from PG (like > mmgr), I planning use same solution. > > > Performance is acually very good for what I am doing. I was able to batch > > commit transactions which cuts down on fsync calls, use prepared > > statements from my client using CORBA, and the various locking calls for > > the threads (cond_wait,mutex_lock, and sema_wait) seem pretty fast. I did > > some performance tests for inserts > > > > 20 clients, 900 inserts per client, 1 insert per transaction, 4 different > > tables. > > > > 7.0.2 About 10:52 average completion > > multi-threaded 2:42 average completion > > 7.1beta3 1:13 average completion > > It is very very good for time for 7.1, already look forward to 7.2! :-) > > BTW, I not sure if you anytime in future will see threads in > official PostgreSQL and if you spending time on relevant things (IMHO). There have been discussions about this, where we still do one process per client, but the backend of that process would use threads in order to improve performance on SMP boxes for that one client ...