473,405 Members | 2,300 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,405 software developers and data experts.

Application performance degrades on Multi processor machine

Hi

I am developing a Dot net application (involving image processing) on
a uni processor. It works well on my machine. I then take all my code
on a multi processor, build and run the application there. There is
performance degradation.

The usual performance of the application on MP machine is better than
that of uni processor machine. But the performance of MP degrades when
it comes to the multi-threaded part of the application. I am using a
third party application for image processing and communicating with
this application using TCP IP. I send some messages to that
application which results in generation of up to 6 threads (in that
application) and very high computation. After the computation is over,
it gives a callback to my application and I render the output (for
which I again need to send some more messages to the third party
application). The operations are happening in interactive mode which
means that my application keeps on sending messages and getting
callbacks from the third party application.

On uniprocessor, when I start the operation, the CPU usage goes above
95%. But typically 40% CPU is alloted to my application and 60% to the
third party application. As a result my application gets enough time
to render the new image and response looks real time.

On MP (its a dual processor), the third party application is alloted
entire CPU resource. As a result my application does not refresh the
output.

Can anybody guess what could be the reason?

The MP config is Intel Xeon 3.2 GHz - 3 GB RAM. The OS installed on
the MP is Windows XP 2002 Pro SP1. It is supposed to be used as a
workstation.

The config on my uniprocessor machine is : Intel Pentium 4 2.4 GHz, 1
GB RAM, Windows XP 2002 Pro SP1.

Does anyone have any clue? I have some hints though.

1> Is the OS on the MP machine Ok? Does Win XP Pro support MP?
Does Microsoft have any other version for MP machines?

2> Do we need special compiler settings to build applications
which are supposed to run on MP machines.

Best regards
Amit Dedhia
Jul 21 '05 #1
3 3088
are those threads initiated by you or the 3rd party app ?

i think the 3rd party threads are running at higher priority.You might want
to check on thread priorities.

Also there's Windows XP Pro + whatever SP but thats it you dont have
anything call XP 2002

--

Regards,

Hermit Dave
(http://hdave.blogspot.com)
"Amit Dedhia" <am********@yahoo.com> wrote in message
news:89**************************@posting.google.c om...
Hi

I am developing a Dot net application (involving image processing) on
a uni processor. It works well on my machine. I then take all my code
on a multi processor, build and run the application there. There is
performance degradation.

The usual performance of the application on MP machine is better than
that of uni processor machine. But the performance of MP degrades when
it comes to the multi-threaded part of the application. I am using a
third party application for image processing and communicating with
this application using TCP IP. I send some messages to that
application which results in generation of up to 6 threads (in that
application) and very high computation. After the computation is over,
it gives a callback to my application and I render the output (for
which I again need to send some more messages to the third party
application). The operations are happening in interactive mode which
means that my application keeps on sending messages and getting
callbacks from the third party application.

On uniprocessor, when I start the operation, the CPU usage goes above
95%. But typically 40% CPU is alloted to my application and 60% to the
third party application. As a result my application gets enough time
to render the new image and response looks real time.

On MP (its a dual processor), the third party application is alloted
entire CPU resource. As a result my application does not refresh the
output.

Can anybody guess what could be the reason?

The MP config is Intel Xeon 3.2 GHz - 3 GB RAM. The OS installed on
the MP is Windows XP 2002 Pro SP1. It is supposed to be used as a
workstation.

The config on my uniprocessor machine is : Intel Pentium 4 2.4 GHz, 1
GB RAM, Windows XP 2002 Pro SP1.

Does anyone have any clue? I have some hints though.

1> Is the OS on the MP machine Ok? Does Win XP Pro support MP?
Does Microsoft have any other version for MP machines?

2> Do we need special compiler settings to build applications
which are supposed to run on MP machines.

Best regards
Amit Dedhia

Jul 21 '05 #2
Yes - the threads are running in the 3rd part App.. but why is thread
scheduling behaviour differnt on uniprocessor and dual processor? On
uniprocessor, the CPU resource allocation is 60-40 between the 3rd
party and my application. On MP, there are two CPUs. Ideally I would
expect that one CPU is allocated to my app and the other one to 3rd
party. Instead entire CPU time is eaten by the 3rd party app.

One more thing I observed is that the CPU usage of both processors on
MP is following a quite similar pattern. The peaks, lows and
transitions are observed at the same time in both the CPUs. This is
quite surprising to me.

Regarding 2002, it is the version no (as mention on the Control panel
--> System)

Amit

"Hermit Dave" <he************@CAPS.AND.DOTS.hotmail.com> wrote in message news:<e8**************@TK2MSFTNGP09.phx.gbl>...
are those threads initiated by you or the 3rd party app ?

i think the 3rd party threads are running at higher priority.You might want
to check on thread priorities.

Also there's Windows XP Pro + whatever SP but thats it you dont have
anything call XP 2002

--

Regards,

Hermit Dave
(http://hdave.blogspot.com)
"Amit Dedhia" <am********@yahoo.com> wrote in message
news:89**************************@posting.google.c om...
Hi

I am developing a Dot net application (involving image processing) on
a uni processor. It works well on my machine. I then take all my code
on a multi processor, build and run the application there. There is
performance degradation.

The usual performance of the application on MP machine is better than
that of uni processor machine. But the performance of MP degrades when
it comes to the multi-threaded part of the application. I am using a
third party application for image processing and communicating with
this application using TCP IP. I send some messages to that
application which results in generation of up to 6 threads (in that
application) and very high computation. After the computation is over,
it gives a callback to my application and I render the output (for
which I again need to send some more messages to the third party
application). The operations are happening in interactive mode which
means that my application keeps on sending messages and getting
callbacks from the third party application.

On uniprocessor, when I start the operation, the CPU usage goes above
95%. But typically 40% CPU is alloted to my application and 60% to the
third party application. As a result my application gets enough time
to render the new image and response looks real time.

On MP (its a dual processor), the third party application is alloted
entire CPU resource. As a result my application does not refresh the
output.

Can anybody guess what could be the reason?

The MP config is Intel Xeon 3.2 GHz - 3 GB RAM. The OS installed on
the MP is Windows XP 2002 Pro SP1. It is supposed to be used as a
workstation.

The config on my uniprocessor machine is : Intel Pentium 4 2.4 GHz, 1
GB RAM, Windows XP 2002 Pro SP1.

Does anyone have any clue? I have some hints though.

1> Is the OS on the MP machine Ok? Does Win XP Pro support MP?
Does Microsoft have any other version for MP machines?

2> Do we need special compiler settings to build applications
which are supposed to run on MP machines.

Best regards
Amit Dedhia

Jul 21 '05 #3
okay how about this
A Multi-threaded application creates multiple thread for pseudo simultaneous
operation by the threads thereby improving the performance.

On Uni-Processor time slicing and thread priorities determine how the
applications behave and execute.
On Multi Process systems however the different threads are executed by
different processors there by maximising the performance.

I presume you application doesnt not make use to too many threads rather
delegates work to 3rd party app that in turn creates the threads.
If that is true, your application's Main Thread will have a processor
affinity based on OS's allocation of timeslice.

You mentioned that you have allocated one of the two procs to 3rd party app.
How about allocating the other proc to your application.
If that doesnt help you might want to try increasing the thread priority but
only if its absolute must and then see if you application behaves any
better.

--

Regards,

Hermit Dave
(http://hdave.blogspot.com)
"Amit Dedhia" <am********@yahoo.com> wrote in message
news:89**************************@posting.google.c om...
Yes - the threads are running in the 3rd part App.. but why is thread
scheduling behaviour differnt on uniprocessor and dual processor? On
uniprocessor, the CPU resource allocation is 60-40 between the 3rd
party and my application. On MP, there are two CPUs. Ideally I would
expect that one CPU is allocated to my app and the other one to 3rd
party. Instead entire CPU time is eaten by the 3rd party app.

One more thing I observed is that the CPU usage of both processors on
MP is following a quite similar pattern. The peaks, lows and
transitions are observed at the same time in both the CPUs. This is
quite surprising to me.

Regarding 2002, it is the version no (as mention on the Control panel
--> System)

Amit

"Hermit Dave" <he************@CAPS.AND.DOTS.hotmail.com> wrote in message

news:<e8**************@TK2MSFTNGP09.phx.gbl>...
are those threads initiated by you or the 3rd party app ?

i think the 3rd party threads are running at higher priority.You might want to check on thread priorities.

Also there's Windows XP Pro + whatever SP but thats it you dont have
anything call XP 2002

--

Regards,

Hermit Dave
(http://hdave.blogspot.com)
"Amit Dedhia" <am********@yahoo.com> wrote in message
news:89**************************@posting.google.c om...
Hi

I am developing a Dot net application (involving image processing) on
a uni processor. It works well on my machine. I then take all my code
on a multi processor, build and run the application there. There is
performance degradation.

The usual performance of the application on MP machine is better than
that of uni processor machine. But the performance of MP degrades when
it comes to the multi-threaded part of the application. I am using a
third party application for image processing and communicating with
this application using TCP IP. I send some messages to that
application which results in generation of up to 6 threads (in that
application) and very high computation. After the computation is over,
it gives a callback to my application and I render the output (for
which I again need to send some more messages to the third party
application). The operations are happening in interactive mode which
means that my application keeps on sending messages and getting
callbacks from the third party application.

On uniprocessor, when I start the operation, the CPU usage goes above
95%. But typically 40% CPU is alloted to my application and 60% to the
third party application. As a result my application gets enough time
to render the new image and response looks real time.

On MP (its a dual processor), the third party application is alloted
entire CPU resource. As a result my application does not refresh the
output.

Can anybody guess what could be the reason?

The MP config is Intel Xeon 3.2 GHz - 3 GB RAM. The OS installed on
the MP is Windows XP 2002 Pro SP1. It is supposed to be used as a
workstation.

The config on my uniprocessor machine is : Intel Pentium 4 2.4 GHz, 1
GB RAM, Windows XP 2002 Pro SP1.

Does anyone have any clue? I have some hints though.

1> Is the OS on the MP machine Ok? Does Win XP Pro support MP?
Does Microsoft have any other version for MP machines?

2> Do we need special compiler settings to build applications
which are supposed to run on MP machines.

Best regards
Amit Dedhia

Jul 21 '05 #4

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

33
by: aa | last post by:
I am migrating to PHP from ASP where there are the Application Scope variables which are accessible from any page on a website and which are used, in particular, for hit counters. Is there a similar...
6
by: Thomas Womack | last post by:
If I have a dual-processor hyperthreaded machine (so with four CPU contexts), will a python program distribute threads over all four logical processors? I ask because I'm fairly sure that this...
133
by: Gaurav | last post by:
http://www.sys-con.com/story/print.cfm?storyid=45250 Any comments? Thanks Gaurav
9
by: nan.li.g | last post by:
Hello, all, I have an interesting problem about stl map and pthread on Linux and g++. The source code is as follows. //mt_map_test.cpp #include <string> #include <map> #include <unistd.h>...
8
by: nickdu | last post by:
I'm trying to isolate "applications" into their own application domain within a single process. I've quoted applications because it's a logical representation of an application. Basically it...
3
by: Amit Dedhia | last post by:
Hi I am developing a Dot net application (involving image processing) on a uni processor. It works well on my machine. I then take all my code on a multi processor, build and run the application...
22
by: roadrunner | last post by:
Hi, Our website has recently been experiencing some problems under load. We have pinpointed a particular function which slows dramatically when we have these problems. Normally it should execute...
2
by: jphelan | last post by:
Ever since I successfully applied some techniques for increasing the speed of my 17 meg. Application; it has only made me hunger for more. First, let me list what I have done so far: 1. Split...
10
by: Jamunt | last post by:
Hi, I want to create an application in which around 1000 users will be served at one time. All of the users will be sending around 1 mb of data. I will be parsing that data and would insert some...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.