OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
From: Steve Swartz (steveswMICROSOFT.COM)
Date: Thu Oct 04 2001 - 10:24:54 CDT

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    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.GambleSINGULARITY.CO.UK]
    Sent: Thursday, October 04, 2001 1:36 AM
    To: DCOMDISCUSS.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:steveswMICROSOFT.COM]
    Sent: 03 October 2001 19:03
    To: DCOMDISCUSS.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-requestDISCUSS.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-requestDISCUSS.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-requestDISCUSS.MICROSOFT.COM