Simplicity Through Optimization
|Time:||15:45 - 16:30|
|Day:||Thursday 21 January 2010|
|Location:||Renouf 1 (MFC)|
The common wisdom is that high performance comes at the price of increased complexity and degraded maintainability, and with good reason. After all, improved performance usually comes at the expense of complexity from more sophisticated algorithms, optimized handling for special cases, and so on.
But there is a school of thought that says that optimization need not always lead to increased complexity. This thought goes back some centuries, at least as early as the famous 1656 quote from Blaise Pascal: "I have only made this letter rather long because I have not had time to make it shorter." Surprising though it might seem, this school of thought does sometimes apply to software, as I learned long ago when converting existing spaghetti code to state-machine form. (And no, state machines are not the solution to all problems: as always, use the right tool for the job!)
This talk reports on another example of simplicity through optimization, in the form of a new implementation of preemptable (real-time) RCU that decreases code size by more than 1,000 lines, increases scalability significantly, and improves read-side performance by well over a factor of two, resulting in preemptable RCU having roughly the same read-side performance as classic RCU in a CONFIG_PREEMPT kernel build.
This talk will not go into depth on the RCU implementation itself. To get the most from this talk, audience members should be familiar with counting, understand block diagrams, and be able to parse 10-line fragments of C code.
Paul E. McKenney is a distinguished engineer at IBM and has worked on shared-memory operating-systems kernel algorithms for longerthan he cares to admit (see http://www.rdrop.com/users/paulmck if you don't believe this). He has recently become quite interested in getting realtime response from mid-range multi-core/multi-threaded systems, while still maintaining good performance and scalability. Prior to that, he worked on packet-radio and Internet protocols (but long before the Internet became popular), system administration, business applications, and realtime systems, the latter on early-80s eight-bit systems. He is extremely thankful that today's computers have much more than 64Kbytes of memory. His hobbies include running and the usual house-wife-and-kids habit.