Re: How to build OpenPegasus SDK as single threaded?

Marek Szermutzky <[email protected]>
Newsgroups gmane.network.open-pegasus.general
Message-ID <OFE62C3334.BD78FD9E-ONC12579DC.0051C15C-C12579DC.0053F903@de.ibm.com>
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] >
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] >
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] >
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] >
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] >
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] >
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] >

To: Kirk Augustin <[email protected] >

Cc: Devchandra Leishangthem <[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] >
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] >

To: Devchandra Leishangthem <[email protected] >

Cc: [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] >
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] >

To: [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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.