Re: How to build OpenPegasus SDK as single threaded?
Pranav S <[email protected]>
| Newsgroups | gmane.network.open-pegasus.general |
|---|---|
| Message-ID | <CAOGgbh0H_N0pCCF9kMPCfUF_yMyuL8nm1DvH45zhXaVD0=CdOQ@mail.gmail.com> |
Thank You Marek, for leveraging the need for single threaded OpenPegsus libraries. On 10 April 2012 20:44, Marek Szermutzky <[email protected]> wrote: > Somehow I feel the need to chime in here.... > > The OpenPegasus project does provide not only a CIM server, but also a > client. While the server does require multi-threading I can see and > understand the use case where you would want use a single-threaded version > of the C++ client. > The creators of the OpenPegasus libraries though decided to share the code > between client and server, so if we want to build a single-threaded version > of a client library we need to split the client parts off from the server > code. So it's sadly not done with just a different compile option. > I do agree with the requirement of having a single-threaded version of the > client libraries (libpegcommon and libpegclient) though I would go even > further and put the requirement of keeping client and server libraries > split from each other. > > > > Regarding this: > > If you're building a client, take a look at sblim or something like > that. Pegasus is probably too heavy for your needs. > > This assumption of a "heavy" OpenPegasus does come from history and would > have been true four or five years ago, but I can tell you that the > OpenPegasus server as well as the client are far from being heavy-weight. > The server can fairly easy be reduced in memory footprint etc. and today is > the fastest free available CIM Server if you look at CPU consumption (and > if you actually use the server to process CIM requests it is also smaller > in memory footprint). > > But since we are talking about a client library .. The OpenSource > alternatives I know to using the C++ based client interface of OpenPegasus > is to either use the Sblim Java CIM Client V2, a real nice, stable and easy > to use Java-based client (of course Java is multi-threaded) or use sfcc, a > C client provided by the sblim project. Though sfcc is also multi-threaded > and using pthreads, meaning this would not solve the actual issue. > > > Mit freundlichen Grüßen / Kind regards > Marek Szermutzky > > Software Engineer / OpenPegasus Maintainer (PMC) and z/OS PlatformRep. > IBM Systems &Technology Group, Systems Software Development / z/OS > Capacity Management and Support > > ------------------------------------------------------------------------------------------------------------------------------------------- > IBM Deutschland > Schoenaicher Str. 220 > 71032 Boeblingen > Phone: +49-7031-16-5182 > E-Mail: [email protected] > > ------------------------------------------------------------------------------------------------------------------------------------------- > IBM Deutschland Research & Development GmbH / Vorsitzender des > Aufsichtsrats: Martin Jetter > Geschäftsführung: Dirk Wittkopp > Sitz der Gesellschaft: Böblingen / Registergericht: Amtsgericht Stuttgart, > HRB 243294 > > > > From: Pranav S <[email protected]> > To: [email protected] > Cc: "[email protected]" <[email protected]>, " > [email protected]" <[email protected]>, "[email protected]" < > [email protected]>, "Hwang, Johnny" <[email protected]> > Date: 08.04.2012 12:26 > Subject: Re: How to build OpenPegasus SDK as single threaded? > ------------------------------ > > > > Hey, anyone agree with me? need for Single Threaded Pegasus libraries? > > > On 8 April 2012 12:12, Pranav S <*[email protected]*<[email protected]>> > wrote: > :-) It is nice to learn quotes from Confucius... It is nice when you get > to learn few new things in discussion forums.>!! > > On 8 April 2012 12:02, Hwang, Johnny <*[email protected]*<[email protected]>> > wrote: > There's a java version of sblim. Otherwise, if you insist on sticking with > pegasus, I really doubt that there are other teams out there using pegasus > as a single-threaded client. Think hatchet for killing a fly on a friend's > forehead, as Confucius would say. > > > > Ugh stupid autocorrect > > > Pranav S <*[email protected]* <[email protected]>> wrote: > > > AFAIK, sublim is linux implementation of CIM/WBEM standards for managing > resources. I do not see the package having support for multiple platforms > as Pegasus has. And Pegasus has much better implementation. > > > On 8 April 2012 11:35, Hwang, Johnny <*[email protected]*<[email protected]>> > wrote: > If you're building a client, take a look at sblim or something like that. > Pegasus is probably too heavy for your needs. > > > Ugh stupid autocorrect > > > Pranav S <*[email protected]* <[email protected]>> wrote: > > > Hi Kirk, > > If single threaded library wants to use a multi threaded one, or assume an > application binary is linking indirectly to multi threaded one, then the > entire build chain has to be built with multi threading enabled. Now as I > am more focused towards writing a client side binary, I am not using any of > multi threaded piece of code from the Pegasus library. So why should I > unnecessarily build multi threaded one? and my client binary will be > performing basic operations like enumerations, listing association kind of > stuff, and for these operations Pegasus do not create any threads. > > I agree on what you are saying if I were to focus on a Provider, which > will plug into server, serving to the multiple client requests. > > I still think we need to have switch to enable/disable multi threading. > > On 7 April 2012 23:40, Kirk Augustin <*[email protected]*<[email protected]>> > wrote: > It is unsafe for a single thread to call a multi-thread, but perfectly > safe for a multi-thread to call a single thread. > Multi-threading is the only safe way a service like Pegasus can call > providers. > If not multi threaded, then one faulty provider can corrupt all providers, > as well as Pegasus, with an infinite deadlock. > On HP UX you can mix multi thread and single thread. > You just have to careful about singe thread library calling multi threaded > libraries. > Multi-threaded libraries have to call single threaded libraries all the > time. > A single thread library should always be passed data by value instead of > reference, so should never need any synchronization protection. > That can not possibly be a problem on any system. > > You are using the multi threading piece of code in Pegasus. > It can not be unused. > Pegasus is a remote network, communications systems, server, relying on > sockets and an unknown number of provider plug-ins. > It would be virtually inconceivable to imagine a good way that could be > done without multi-threading. > You could greatly increase the number of independent processes instead, > and created more sockets or pipes to try to share data, but multi-threading > is a much better solution to a multi tasking server like this. > Your providers are best compiled as out of process, so have nothing to do > with threading at all. > Threading is only important within Pegasus. > The question of threading really is not relevant because Pegasus is in > control of what it calls, so will do so safely. > All you have to worry about is your providers. > > Kirk Augustin > 11821 NW McNamee Rd > Portland, OR 97231 > > HM: 503-289-4356 > ------------------------------ > *From:* Pranav S <*[email protected]* <[email protected]>> > *To:* Kirk Augustin <*[email protected]* <[email protected]>> > * > Cc:* Devchandra Leishangthem <*[email protected]* <[email protected]>>; > "*[email protected]* <[email protected]>" <* > [email protected]* <[email protected]>> * > Sent:* Saturday, April 7, 2012 10:37 AM > * > Subject:* Re: How to build OpenPegasus SDK as single threaded? > > On HP UX we cannot mix single threaded libraries with, multi-threaded > ones. It might cause undefined behaviour. > And, if an application links to multi-threaded library directly or > indirectly, it has to be built with multi-threading (-mt option) enabled. > As I am not using multi threaded piece of code from pegcommon(src/Common), > I am expecting it to be disabled. Why unnecessarily create a dependency on > pthread library? I believe it is good to have a flag in configure files > for enabling/disabling the multi-threading. > > > On 6 April 2012 22:00, Kirk Augustin <*[email protected]*<[email protected]>> > wrote: > But if you turned off multi threading in Pegasus, you would create and > ensure the very condition you are concerned about avoiding. > You would cause a single threaded library to be linked with multi threaded > ones. > The only safe solution is to make sure Pegasus is multi treaded, so that > you avoid the possibility of a single threaded library being linked to a > multi threaded one. > There is no risk in a multi threaded library linking to a single threaded > one because a single threaded library gets multiple copies. > Only the other way around is risky. > There is only one copy of a multi threaded library, and you do not want > single threaded libraries linking because then more than one could end up > linking at the same time. > > Kirk Augustin > 11821 NW McNamee Rd > Portland, OR 97231 > > HM: 503-289-4356 > ------------------------------ > *From:* Pranav S <*[email protected]* <[email protected]>>* > To:* Devchandra Leishangthem <*[email protected]* <[email protected]>> > * > Cc:* *[email protected]* <[email protected]> * > Sent:* Friday, April 6, 2012 4:38 AM* > Subject:* Re: How to build OpenPegasus SDK as single threaded? > > I some where read, on HPUX and AIX linking single threaded libraries to > multi threaded causes undefined behaviour. Hence I was trying to to build > openpegasus libs as single threaded. I see libpegcommon uses pthread > library. I would like to know if there is way to turnoff the > multithreading. In HPUX Makefiles I see "-mt" option being used to enable > threads support. > > I see Pegasus/Common has thread pool implementation, which is not always > being used by the applications consuming OenPegasus SDK. > Let me know if I am wrong somewhere. > > Thank You, > Pranav > > On 6 April 2012 16:22, Devchandra Leishangthem <*[email protected]*<[email protected]>> > wrote: > Is there any specifi reason why you wanted to build uni-threaded? > Warm Regards > D>L> Meetei > IBM India System and Technology Lab > EGL -D,Bangalore, India > > > > From: Pranav S <*[email protected]* <[email protected]>> > To: *[email protected]* <[email protected]>, > Date: 04/06/2012 04:06 PM > Subject: How to build OpenPegasus SDK as single threaded? > > > > Hello, > > I am trying to explore OpenPegasus SDK and its applications. Currently the > SDK uses multi threading and links to pthreads library, hence it gets built > as a multithreaded. I would like to know is it possible to build the > library as single threaded? Do we have provision for that in the Makefiles. > I tried exploring but did not find anything which tells that it is possible > to build the library as single threaded one. Because linking a single > threaded library to a multithreaded library can lead to undefined > behaviour. > > -- > Thanks, > Pranav > > > > > > -- > Thanks, > Pranav > > > > > > > -- > Thanks, > Pranav > > > > > > > -- > Thanks, > Pranav > > > > > -- > Thanks, > Pranav > > > > > -- > Thanks, > Pranav > > > > > -- > Thanks, > Pranav > > -- Thanks, Pranav