April 25, 2008
10:52 pm

These are some of the things application designers can do to reduce the problem:

· Minimize the need to have multiple threads update shared data through data partitioning across processors and minimize the amount of information that must cross boundaries (OO-design and the desire to have context-free components often results in “chatty” interfaces).
· Minimize the number of context switches by keeping the number of threads close to the number of processors and minimize the reasons for them to block (locks, handing off work, handling IO-completion, etc.).  

To illustrate how partitioning an application would yield optimal performance compared to having shared data and lock contentions, I will use a simple, static web server scenario as an example.  The data in this scenario can be characterized as either payload (cached, previously-served pages) or control (work queues, statistics, freelists, etc.).  Figure 1 shows that the combination of updates and shared data must be avoided.  Even when the payload is read-only, the control data is usually update-intensive (e.g ref-counts).

Full Article

Windows Server, Applications, Designing, Development, Performance, Guide, Knowledgebase

Pages: 1 2

Loading

Contextual Related Posts:

No comment yet

Leave a comment »

  1. Pingback from
    1
    Designing Applications for High Performance - Part III » D' Technology Weblog: Technology, Blogging, Tips, Tricks, Computer, Hardware, Software, Tutorials, Internet, Web, Gadgets, Fashion, LifeStyle, Entertainment, News and more by Deepak Gupta. says:June 26th, 2008 at 12:43 am

    [...] Applications for High Performance - Part III The third, and final, part of this 3 part series[Part -1, Part - 2] covers I/O Completions and Memory Management techniques.  I will go through [...]

Leave a Response

Comment Preview
« AB Meta Tools for WordPressControlling your MMC Snap-ins on 64-bit Operating Systems »
Feed Icon

Subscribe via RSS or email: