Optimization for the Linux kernel and Linux OS C. Tyler McAdams
The present state of the Kernel
There are many spork kernels Who could for get the iMac line? Beautiful Sold well Optimized?! No. Too much debugger code (riiiight) Slow as crap but had iTunes!
Why do distro kernels end up sporks? They have to be ready to work with anything. They have no idea what cpu you're going to put it on Everybody's fav: Backwards compatibility
What if we could custom build? Target the CPU arch Target the system use Remove code bulk that is not needed for the design Use a compiler expressly designed for optimization
Linux + ICC Makes this Possible! Linux is open source so we can shape it like an artist does clay ICC employs powerful optimization techniques that can exploit this openness for speed
So what does ICC add to the Mix? IPO Interprocedural optimization PGO Profile Guided Optimization Highend Vectorization Highend Math Algorithms Optimized threading
IPO: Interprocedural Optimization IPO is a heuristically based optimization scheme that can be implemented on entire programs or single files. IPO can eliminate inefficient wasted use of cpu registers, and SIMD units and more.
PGO: Profile Guided Optimization PGO uses multiple stages to create code that executes optimality for what ever the system is being used for Stage 1: make, execute and analyze execution Stage 2: make and optimize with stage 1 data
Vectorization: MMX, SSE*, etc Vectorization was first used back in the '60s as a way to instrument the compiler to find and optimize loops analyzed in code. Today more practical examples of it's use is apps like Photoshop
Other Diversified ICC Existentials Debugger Threading Building Blocks Integrated Performance Primitives Math Kernel Library