|
Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com |
From: Charles Gamble (Charles.Gamble
SINGULARITY.CO.UK)Date: Thu Oct 04 2001 - 11:26:01 CDT
Hi Steve,
The reason we started running this test was because we had noticed a huge
performance drop for our product when it was used on Windows2000/COM+.
We found that without changing the architecture of our system, there was a
2.5 times drop in performance between MTS and COM+.
The test mimics our architecture except without the DB work, etc. which the
methods calls perform. Note, our system in written in C++ and does database
access using ODBC.
SQL Server is the DBMS. Object1 is a controller DLL, Object2 is used to
create transactions where necessary, Objects 3 and 4 are business objects.
The fact that you may need to setup Object3 and Object4 into an
un-configured library application to get closer to the same performance as
NT seems to suggest that you cannot use the same architecture in COM+ as MTS
and expect the same performance. In fact, most suggestions that I have heard
so far seem to suggest removing the number of configured components in your
app. According to Tim Ewalds book, Transactional COM+, he states that using
library apps will get improvements in performance but this is basically
setting them up as raw COM objects albeit they can exist in the callers
context. Surely, this is the whole point of MTS/COM+, in that, you can
configure all your components and let everything be taken care of
(synchronisation, transactions, etc.) for you.
We ran that test using your script on the library package and I got a 200
millisecond speed increase. The COMTIInstrinsics and IISInsrincsics settings
seem to bring the performance gain. So now its 1360 milliseconds in COM+
compared to 631 milliseconds on NT.
Charles.
-----Original Message-----
From: Steve Swartz [mailto:stevesw
MICROSOFT.COM]
Sent: 04 October 2001 16:25
To: DCOM
DISCUSS.MICROSOFT.COM
Subject: Re: FW: COM+ and Free Threading
What I said was, there is no evidence that the performance degradation
you're seeing is due to changes in the cost of cross-context calls
between NT/MTS and W2K/COM+. I am not arguing about the existence of the
symptoms, just Tim's analysis of their cause.
It is true that there are locks involved in fetching cached policy sets
from the OS, and as you warp a benchmark test towards doing nothing but
cross-context calls (as you've done here), you can run into lock
contention problems that do not exist in normal applications (when the
machine spends less time as a percentage of total load in the policy set
code). So an example like yours can exhibit behavior that does not
characterize normal runtime situations.
But this is beside the point. Did you run the script I sent yesterday on
the library application containing object3 and object4?
-----Original Message-----
From: Charles Gamble [mailto:Charles.Gamble
SINGULARITY.CO.UK]
Sent: Thursday, October 04, 2001 1:36 AM
To: DCOM
DISCUSS.MICROSOFT.COM
Subject: Re: FW: COM+ and Free Threading
Steve,
I'm afraid I have to disagree with your point that Tim Ewald's analysis
is completely unsubstantiated. When I run the test which I previously
mentioned we are getting a significant performance decrease.
Please let me know when you have run this test with the code I
sent you.
If anyone wants this code, then just send me a direct email.
Note, the test only consists of 4 objects and a client app which call
each other. The methods don't do any work and have no parameters.
The objects are set to NoTx, RequiresTx, SupportsTx, SupportsTx
There is a huge drop in perf between NT and Win2000.
Charles.
-----Original Message-----
From: Steve Swartz [mailto:stevesw
MICROSOFT.COM]
Sent: 03 October 2001 19:03
To: DCOM
DISCUSS.MICROSOFT.COM
Subject: Re: FW: COM+ and Free Threading
It may be that you're running into the old "it's hard and/or impossible
to truly turn off all services and make components run in the caller's
context" problem. To see if that's so, store the following VBS into a
file named noctx.vbs and then run the command "noctx.vbs ALL
<APPLICATION NAME>" on the library application containing object3 and
object4. This eliminates some services you might not even know about ;).
Often this is what people are seeing when they say "there's context
overhead in Windows 2000". They're comparing within-context calls in
NT/MTS to cross-context calls in W2K/COM+.
So far as I know, Tim Ewald's analysis is completely unsubstantiated. I
have never seen evidence of even appreciable degradation of performance
between NT/MTS and W2K/COM+ due to cross-context call performance, let
alone the substantial degradation that you're seeing.
<%
Dim objArgs
Set objArgs = WScript.Arguments
SetApplicationProperty objArgs(1), "Base Application Partition",
"Activation", 0 SetApplicationProperty objArgs(1), "Base Application
Partition", "AccessChecksLevel", 0
SetComponentProperty objArgs(0), objArgs(1), "Base Application
Partition", "COMTIIntrinsics", 0 SetComponentProperty objArgs(0),
objArgs(1), "Base Application Partition", "IISIntrinsics", 0
SetComponentProperty objArgs(0), objArgs(1), "Base Application
Partition", "JustInTimeActivation", 0 SetComponentProperty objArgs(0),
objArgs(1), "Base Application Partition",
"ComponentAccessChecksEnabled", 0 SetComponentProperty objArgs(0),
objArgs(1), "Base Application Partition", "Synchronization", 0
SetComponentProperty objArgs(0), objArgs(1), "Base Application
Partition", "Transaction", 0 SetComponentProperty objArgs(0),
objArgs(1), "Base Application Partition", "EventTrackingEnabled", 0
SetComponentProperty objArgs(0), objArgs(1), "Base Application
Partition", "MustRunInClientContext", 1
'***********************************************************************
*******
' Modifies a property value on an application
'***********************************************************************
*******
Sub SetApplicationProperty (ApplicationName, PartitionName,
PropertyName, PropertyValue)
Set cat = CreateObject("COMAdmin.COMAdminCatalog.1")
'cat.CurrentPartition = PartitionName
Set collApps = cat.GetCollection("Applications")
collApps.Populate
numApps = collApps.Count
For i = numApps - 1 To 0 Step -1
If collApps.Item(i).Value("Name") = ApplicationName Then
collApps.Item(i).Value(PropertyName) = PropertyValue
End If
Next
collApps.SaveChanges
Set collApps = Nothing
Set cat = Nothing
End Sub
'***********************************************************************
*******
' Set a component property
'***********************************************************************
*******
Sub SetComponentProperty (ComponentID, ApplicationName, PartitionName,
PropertyName, PropertyValue)
Set cat = CreateObject("COMAdmin.COMAdminCatalog.1")
'cat.CurrentPartition = PartitionName
Set collApps = cat.GetCollection("Applications")
collApps.Populate
numApps = collApps.Count
For i = numApps - 1 To 0 Step -1
If collApps.Item(i).Value("Name") = ApplicationName Then
Set collComponents =
collApps.GetCollection("Components", collApps.Item(i).Key)
collComponents.Populate
numComponents = collComponents.Count
For j = numComponents - 1 To 0 Step -1
'If collComponents.Item(j).Value("CLSID") =
ComponentID Then
collComponents.Item(j).Value(PropertyName) = PropertyValue
'End If
Next
collComponents.SaveChanges
End If
Next
collApps.SaveChanges
Set collComponents = Nothing
Set collApps = Nothing
Set cat = Nothing
End Sub
%>
----------------------------------------------------------------
Users Guide http://discuss.microsoft.com/archives/mailfaq.asp
contains important info. Save time, search the archives at
http://discuss.microsoft.com/archives/index.html .
To unsubscribe, mailto:DCOM-signoff-request
DISCUSS.MICROSOFT.COM
----------------------------------------------------------------
Users Guide http://discuss.microsoft.com/archives/mailfaq.asp
contains important info. Save time, search the archives at
http://discuss.microsoft.com/archives/index.html .
To unsubscribe, mailto:DCOM-signoff-request
DISCUSS.MICROSOFT.COM
----------------------------------------------------------------
Users Guide http://discuss.microsoft.com/archives/mailfaq.asp
contains important info. Save time, search the archives at
http://discuss.microsoft.com/archives/index.html .
To unsubscribe, mailto:DCOM-signoff-request
DISCUSS.MICROSOFT.COM
----------------------------------------------------------------
Users Guide http://discuss.microsoft.com/archives/mailfaq.asp
contains important info. Save time, search the archives at
http://discuss.microsoft.com/archives/index.html .
To unsubscribe, mailto:DCOM-signoff-request
DISCUSS.MICROSOFT.COM
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]