by Eric Day
This session takes a look at how to scale applications running on multi-core CPUs. It focuses on various application models such as one process per connection, one thread per connection, single threaded with non-blocking I/O, and hybrid approaches. I/O will also be covered, looking at the various blocking and non-blocking models, and polling methods for various open source operating systems. Details on how to handle the c10k problem (and beyond) are presented, along with how to best manage typical work loads that require other resources like disk I/O. Synchronization methods such as mutexes and atomic operations will also be briefly touched on to see what impact they have with resource protection.
Examples will be shown in C++, and the framework introduced can be used to develop your own applications. The concepts are also applicable to any programming language that supports proper threading.
1st–4th June 2010