« Video: Storage in the Cloud at Joyent | Main | Where do I start? »
Monday
Jan262009

Paper: Scalability by Design - Coding for Systems With Large CPU Counts

The multi-cores are coming and software designed for fewer cores usually doesn't work on more cores without substantial redesign. For a taste of the issues take a look at No new global mutexes! (and how to make the thread/connection pool work), which shows some of the difficulties of making MySQL perform on SMP servers.

In this paper, Richard Smith, a –Staff Engineer at Sun, goes into some nice detail on multi-core issues. His take home lessons are:

  • Use fine-grained locking or lock-free strategy
  • Document the strategy, including correctness
    criteria (invariants)
  • Keep critical sections short
  • Profile the code at both light and heavy load
  • Collect HW performance counter data
  • Identify bottleneck resource (there's always at least one!)
  • Eliminate or ameliorate it
  • References (1)

    References allow you to track sources for this article, as well as articles that were written in response to this article.

    Reader Comments (1)

    Hardware Transactional Memory uses processor features to detect conflict between two
    concurrent threads and choose one of them to be aborted. There is no slowdown if there is no
    conflict.

    One reason for Sun's interest in Transactional Memory is that the capability is being
    designed into its future Rock processor.

    This is promising! Thanks Todd.

    December 31, 1999 | Unregistered Commentergeekr

    PostPost a New Comment

    Enter your information below to add a new comment.
    Author Email (optional):
    Author URL (optional):
    Post:
     
    Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>