1 / 34

Overview

Maximizing COM+ Application Throughput Steve Swartz Program Manager COM+ Team Microsoft Corporation 1-402. Overview. Throughput: What and How COM+ Threading COM+ Process Pooling COM+ Synchronization COM+ Activation. Demo. Throughput. Throughput defined Throughput and infrastructure

Télécharger la présentation

Overview

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Maximizing COM+ Application Throughput Steve SwartzProgram ManagerCOM+ TeamMicrosoft Corporation 1-402

  2. Overview • Throughput: What and How • COM+ Threading • COM+ Process Pooling • COM+ Synchronization • COM+ Activation

  3. Demo

  4. Throughput • Throughput defined • Throughput and infrastructure • Throughput and scalability • Throughput and performance • Performance vs. scalability

  5. Throughput and Resources • Maximizing throughput means using resources efficiently • Minimize create/destroy costs • Acquire late/release early • Avoid creating too many resources • Avoid waiting for resource • Avoid requiring particular resources • Avoid holding unused resources

  6. Throughput and COM+ • COM+ services relevant to throughput: • Thread models & pools • Synchronization domains • Process pools • JIT and Object Pools

  7. Costs to keep in mind • XProcess vs. XThread calls • Regular vs. context marshalling • Activations and calls • Cross-machine hops vs. localization

  8. Overview • Throughput: What and How • COM+ Threading • COM+ Process Pooling • COM+ Synchronization • COM+ Activation

  9. COM+ Threading Models • Apartments vs. threads • Single threaded apartments • Concurrency & reentrancy • Thread-local storage • STAs are a bottleneck • The multi-threaded apartment • The neutral apartment

  10. COM Threads Process MTA Pool RPC Thread Pool (MTA) Main STA

  11. COM+ Threads Process MTA Pool RPC Thread Pool (MTA) STA Pool Main STA

  12. STA Pool vs. MTA Pool • STA pooled objects • Contend for a specific thread • Cannot take advantage of new threads • MTA pooled objects • Contend for all threads • Can take advantage of new threads

  13. Example: STA Pool • What you have to change to use the STA Thread Pool:

  14. Server App Hints • Server App==OutOfProc COM+ App • Stick to one thread model • Concentrate on parent objects • Avoid shared child objects • Neutral apartment for infrastructure objects

  15. Library App Hints • Library App==InProc COM+ App • Behavior of caller matters • Are your object references shared? • Are you called from different kinds of apartments? • Specify known caller’s threading model • “Both” for single user/unknown caller • “Neutral” for many user

  16. Overview • Throughput: What and How • COM+ Threading • COM+ Process Pooling • COM+ Synchronization • COM+ Activation

  17. Process Pooling??? • Process pools can help throughput when you’ve got: • Single-threaded applications • Applications that serialize the processing of requests • Apps prone to server sized slowdowns or bottlenecks

  18. Example: Process Pooling • What you have to change to use Process Pools:

  19. Overview • Throughput: What and How • COM+ Threading • COM+ Process Pooling • COM+ Synchronization • COM+ Activation

  20. STA Synchronization • Prevents concurrent access • Allows reentrancy (to avoid deadlocks) • Allows multiple copies (in different apartments) • A Throughput Bottleneck

  21. COM+ Activities • Synchronization domains • Four levels of configuration • Requires New • Requires • Supports • Not supported • Cross-apartment, not out-of-proc

  22. COM+ Synchronization • Prevents concurrent access • Allows reentrancy • Allows multiple copies • Can be used in MTA • Less of a throughput bottleneck

  23. Example: Synchronization • What you have to change to use COM+ synchronization

  24. Overview • Throughput: What and How • COM+ Threading • COM+ Process Pooling • COM+ Synchronization • COM+ Activation

  25. Programming Models • COM+: Fewer longer-lived clients • IIS: Many transient clients • Focus on COM+ model, BUT… • … IIS is COM+’s longer-lived client

  26. Optimizing COM+ Activation • JIT • Object Pooling • Recent TPC-C benchmarks

  27. JIT • On Activation, Proxy/Stub created • Object created at first use • Object controls its own lifetime • JIT enables scalable programming model • JIT is not useful by itself

  28. Object Pooling • Pool of stateful instantiations • Request/wait architecture • When should I pool objects • When create costs are relatively high • When use costs are relatively low • When an object will be reused often • Experiment! • Don’t pool objects with client-specific state

  29. Object & Connection Pools • Object Pools are 2x faster • Object Pools are asynchronous • Object Pools handle min/max well • Object Pools handle more resources • Object Pools handle more resource types

  30. JIT and Object Pooling • JIT caches COM infrastructure • Object pool caches state, objects • Together, they • Minimize overhead of starting work • Minimize size of resource caches • Maximize throughput

  31. Example: JIT and Object Pooling • What you have to change to use JIT and Object Pooling: • Client does not call Release() • Server must call SetComplete() • Server must implement IObjectControl • Server must be thread-neutral • Server must enlist itself

  32. Example: JIT and Object Pooling QueuedPoolofMTA Threads JITtedObjectsinObjectPool ISAPI SQLServer

More Related